Career Change

I used to teach English overseas. It was only a year. Why? Teaching English isn’t a career, it’s a job with a vacation. So I needed a real career. I played around in Python a number of years ago for the sake of learning how computers work. Knowing python won’t help you in that but its an excellent entry point into programming because of how Python scripts are written. If you don’t use Python for anything else, learn it for the sake of learning how to think like a programmer. Or how to think. You’ll be surprise at how illogical you still are despite going through university (some might argue university makes you illogical).

And so I got an interesting letter from Anonymous. I asked a series of questions and these are the responses. Again, entirely in Japanese. It might be topical for those of you who read my previous posts on why you want to get into programming. The letter is more than a page long so it deserves its own post:

※コーディングを始めたばかりの方が多いということなので、当時の自分を思い出して、できるだけ噛み砕いて書いてみました。

What are you doing now?(現職について)

2018年8月にカナダの職業訓練学校でWeb開発コース(期間:一年)を修了し、同年10月より現地のWeb/ソフトウェア開発関連のスタートアップ企業に就職。現在はフロントエンドの開発(※)に携わっています。

(フロントエンドの開発:ウェブサイトがユーザーにとって使いやすくなるように、プログラムを書く人です。データベースやサーバーから送受信される情報を、わかりやすいメッセージに“翻訳”して表示させる感じでしょうか)

What did you do before?(前職について)

専門サービス業(詳しい業種は伏せさせてください)でアシスタントとして営業、会社ウェブサイトの作成・更新、接客、書類整理など様々なことを行っておりました。ウェブサイトはWordPressで製作したものでしたので、この時点でWeb開発に関する知識はごく初歩的なHTMLとCSS程度です。もっと具体的にいえば、idやclassがなんなのかもわからない状態でしたので、ほとんど知識はゼロだったといって差し支えないかと思います。

Why did you change career?(キャリアチェンジの理由)

海外で数年暮らし、仕事を通して年齢や性別、職業がまったく異なる様々な移民の方と接した中で、将来性を考えた際に言語や文化の違いがあまり障壁にならないような仕事をしたいと強く思うようになりました。また、万が一、日本に帰国しないといけないことになっても、プログラミングなら資格を必要としない分、他の職業よりも融通がききやすいと思ったのもあります。パソコンとインターネットさえあれば、自宅を含む世界のどこにいても仕事ができるのも魅力的でした。

What did you do to be in your current job?(現職に就くためにどのようなことをしたか)

入学前から、就職が決まるまでをお話しますね。

前職を退職し、学校が始まるまでの二、三ヶ月程で、HTML、CSS、JavaScript(以上がフロントエンド)、C#、SQL(この二つがバックエンド)、git(ソースコントロール)の基本を勉強しました。JavaScriptとC#は半泣きでした(笑)

学校のコースは「初心者向け、知識ゼロでも大丈夫」と謳っていたのですが、英語が第一言語ではない不安があったので、授業についていけるレベルの知識はつけておこうという焦りもあり、プログラマーの知り合いに相談をし、この五つの言語だけは事前に独学で触れていたんですね。これは本当に大正解だったと思います。

学習はドットインストール(日本語)、SoloLearnというアプリ(英語)をメインに使っていました。SoloLearnはインタラクティブなクイズ形式で学習できますし、英語もわかりやすい方だと思います。基本的な概念をさらっと拾う分にはとっつきやすいです。

あとは、実際に簡単なコードを書いて動かしたりもしました。IDE(AtomやVisual Studio Codeなど、コードを書くためのエディター)に慣れておくのも初心者のうちは大事だと思います。

入学後はひたすら学校の課題をこなしたり、LyndaやUdemyなどで必要そうなフレームワークやライブラリ(※)の学習をしていました。学校ではPHPにも触れ、そこでフロントエンドとバックエンドの関係、非同期通信について初めて理解が深まったように思います。

Angularがアツい!ということを聞いていたので、学校でAngularのクラスが始まる前から動画でちまちま学習を開始して、JavaScriptが好き(※)だったので卒業後も引き続き勉強していました。それで、そのコードをgitで見たCTOに気に入られて、就職が決まりました。

(フレームワークやライブラリ:頭がめちゃめちゃいい人達が開発を楽にするために作ってくれた超便利な開発キットやコード集のようなものだと思ってください…)

(JavaScriptが好き:好き、というかフロントエンドもバックエンドも書けるJavaScriptすごい!と感心して、その時はMEAN Stackを重点的に学習していました)

What did you wish you knew before becoming a programmer?(プログラマーになる前にどのようなことを知っておきたかったか)

ウェブ開発のトレンド。これは今でもそうなんですが、次々に新しいフレームワークやライブラリができるので、Twitterなどでトレンドに敏感な人たちをフォローしておくと流行り廃りがわかって、目指す方向性も決まるし、なにより転職の際に有利なんじゃないかと思います。

What are you learning now?(現在勉強していること)

仕事ではAngularというJavaScriptのフレームワークを使っているのですが、知らない事ばかりなので日々学習という感じです。全く新しいものだと、Flutterというスマホアプリ開発向けのフレームワークを勉強しています。

What advice do you have for a Japanese woman interested in programming? (プログラミングに関心のある女性に向けたアドバイス)

1.これからHTMLやCSS、JavaScriptなどを勉強する方が多いのかなと想像しているのですが、まずはコードを書くことを楽しんでください。書いて動かすのが一番勉強になります。自分の書いたものが、思い通りに動くのは楽しいですよ。

2.プログラミングをやっていくと、たくさんわからない事や知らない事が出てくるかと思います。エラーの解読に何時間もかかってしまうかもしれません。その都度、公式ドキュメンテーションを読んだり、ググったりしてたくさん時間を費やしてしまい、「全然コードを書いてない!」と焦ってしまうこともあるかと思います。でも、問題を特定し、その解決策を調べて試すというのは、どの言語においても絶対に必要なスキルなので、無駄だとは思わないでください。

3.知識のアップデートが頻繁に必要になるので、自分に合った学習方法を見つけておくのも大事だと思います。公式サイトをじっくり読んだり、動画を見たり、独学でやるのか、ミートアップなどで勉強するのか…学習方法が様々あるのもプログラミングのいいところだと思うので、今から意識しておくといいかもしれません。

また英語を読む/聞くことにも慣れておくことをお勧めします。日本語と英語では使えるリソースの数や更新頻度に差があります。

4.くじけそうになったら、過去の自分を思い出してください。一日前、一週間前、一年前の自分が知らなかった事、わからなかった事がきっとたくさんあると思います。続けている限り、絶対に成長します。大丈夫です。JavaScriptの関数と引数が理解できなくて、悔し泣きしながらキレていた私が、いまやJavaScriptで開発をしているんです。繰り返します。大丈夫です。続けていれば絶対に成長します。

Beyond HTML/CSS: Javascript

Let’s assume you’ve understood HTML and CSS, which is impossible in the span of a week. HTML can be understood in maybe 2 weeks but CSS will take some time. Even I get stuck when it comes to CSS. Everyone’s CSS style is different and almost no one writes CSS the same as another person. But keep at it. If you’re just starting out, the goal of learning HTML and CSS is so that you are familiar with that code. You know you understand HTML if you can picture the outcome just looking at the code. You know you understand CSS because … well I still don’t understand it but know that !important everywhere is a terrible idea.

Next is Javascript. Why Javascript? It’s everywhere. Almost all modern websites use, a lot of them require it, and not too many people turn off Javascript in their browsers. It’s a challenge to *not* use Javascript when making a website. I gave myself that challenge when making my own, albeit bland, website http://ghosteacher.com. It took a while to make that hidden nav in pure CSS. If I had used Javascript, development would have gone a lot quicker.

To get started on Javascript, it’s important to know what it is first, *then* start programming in Javascript:

And in more detail here: What is Javascript

This needs to be emphasized: a lot of developers don’t fully understand javascript. Perhaps you were introduced to it because it’s a popular language and it can get you a job! Then you start learning it just because. But did you stop to think what Javascript does? How it works? You might be a future headache for another developer! A lot of Javascript errors are avoidable from learning about Javascript in addition to learning how to Javascript.

Where to learn Javascript

This is the tricky part. There are so many places to learn Javascript because it’s so popular. Whatever resource you follow, what is most important to learning Javascript is learning how to think. This may sound strange, but thinking like a programmer is most important than the actual code. Better programs are produced when the programmer has planned how to execute the code, followed by writing the code, and not writing it all at once! The following are good resources to follow along:

Those two already are days of learning and practicing. If Javascript is your first programming language, this learning experience will be very long from few months to maybe even a year.

Where to start?

I asked a former student of mine, Asuka, of who she would hire in her web company. This is the response I got:

問題を聞き出す力、
その問題を細かく区切って整理する能力があると
結構どこでもやっていけると思います。

・アルゴリズム的思考
・ちゃんとしたフローチャートを組み立てる構成力
・クライアントが本当は何を求めているのか、ちゃんと聞き出す力
・情報のタイムリーなアップデート

・エラーを見てもくじけない心
・そこそこの体力

I actually don’t know what it all means but I really like the last couple of lines:

  • A heart that does not crush even if you see an error
  • Physical strength

You can find Asuka here http://asukasasago.com/.

I get this question a lot: I want to be a programmer, but where do I start?

That’s a tricky question. You can be a programmer but that doesn’t answer what you do. You could be making software for vending machines, video games, or what I do: web. Most work these days is in web so I’ll assume you want an entry into web development. Even then, web development has gone a long way from just making HTML and CSS files. If you know only those two, your career choices are limited.

HOWEVER, it is necessary to understand HTML/CSS. This is what you see on the screen. This is what you are seeing right now on this blog: an HTML document styled with CSS.

W3Schools is a good place to start. It’s a resource that a lot of developers use including myself. It’s not useful to memorize tags and rules.

Here’s where you can learn HTML and CSS:

Do you need the W3School’s Certificate? no.

Treat W3Schools like a book. Each section is a chapter.

If you’re serious about getting into this industry, treat it like your job and you started yesterday.

Programming is largely in English. Your code will be using English. Documentation is mostly in English. Programming languages are like a dialect of English. So if English isn’t your first language, I highly suggest studying English, as least reading it, and especially how to ask questions because you will have plenty of them. You will ask Google, a lot.

That said, here are a couple of articles that I feel can introduce you to HTML in the following languages:

Mozilla HTML 中文(繁体字) | CSS

Mozilla HTML 日本語 | CSS

Mozilla HTML 中文(繁體字) | CSS