本稿は、Learn to Code With Meのブログ記事を了解を得て日本語翻訳し掲載した記事になります。
本記事は、同サイトの設立者であるLaurence Bradford氏によって投稿されました。
広く信じられている神話にもかかわらず、大学の学位を持っていなくてもエンジニアになることは可能です。
あなたが再就職を考えていたり、好きになれないキャリア(管理、業務、銀行業など)で行き詰まっている場合にも、エンジニアにキャリアチェンジすることは可能です。あなたに喜んで努力する準備がある限り。
US Newsによると、エンジニアの年あたり平均給与は95,510ドル、失業率は2.5%であり、最も収益性の高い技術系キャリアの1つになっています。さらに、この職業は平均以上のワークライフバランスを享受できます。
また、労働統計局は、2014年から2024年の間に17%の成長率が見込まれると予測しています。一方、全職種の平均成長率は7%です。つまり186,600人の求人が創出されることになります。
プラス成長と豊富な機会が予測されいてるにもかかわらず、大学の卒業生の内、コンピュータと情報科学を専攻しているのはわずか2.4%です。下の画像からわかるように、2020年までに140万のコンピュータ関連の仕事が創出されるのに対して、コンピュータ科学専攻の卒業予定の学生は40万人です。
あなたは予測することができるでしょう。
プログラミングスキルは、あなたの日々に多様性をもたらすだけではなく、安定した経済基盤をもたらすと。しかし、コンピュータ科学専攻の4年間を過ごすことなく、これらのスキルを習得するにはどうしたらいいでしょう?さらに重要なことは、これらの需要が高い、高給のキャリアをどのように手に入れるか?です。
この記事では、エンジニアになるための11ステップについてのガイドをお届けします。
ステップ1. あなたの最終目標を明確にすること(そしてそれに専念する)
はじめに、以下のステップは、フルタイムのエンジニアの仕事を目標としている人を想定しています。よって、次のような条件に該当する人は想定していません。
- はじめてコードに触れる人
- プログラミングが自分に向いているか分からない人
- Webデザイン、UX、UI、その他のデザイン関連分野を追求したい人
- フルタイムでフリーランスの仕事をしたい人
- 独自のビジネスを立ち上げることを望む人
キャリアチェンジは簡単なことではありません。しかし、あなたが最終的な目的地を明確にしてれば、躓いたときにも大いに役立ちます。明確な目標とは、たとえば次のようなものです。
- 「私は確立されたIT企業でソフトウェア開発者として働きたい」
- 「私はソフトウェアエンジニアとして、新しいスタートアップに勤めたい」
- 「私はチームでシステムを構築し、それに対して高い給与を得たい」
あなたの夢の内容がどのようなものであるかに関わらず、11ステップのすべてを達成したいとしたら、フルタイムのエンジニアになるという最終目標は徹底する必要があります。
ステップ2. 学習する言語を選択する
学習を始めると、多くの人は、どの言語(とフレームワーク)を学ぶべきかの決定に悩むでしょう。Ruby on Railsにしようか?それともPythonとDjango?MEANスタックにするべきか?数多くのオプションがありますが、時間はそれほどありません。
ここで重要なのは次のことです。特定の言語を十分に習得できたら、新しい言語を習得することも難しくありません。つまり、エンジニアになるには、プログラミングの基礎を理解することに集中することが重要です。本質的には、学習方法を学ぶということです。
一度強固な基礎を築くと、新しい言語、フレームワーク、テクノロジーの学習に容易に移行することができます。Flatiron Schoolの共同設立者であるAvi Flombaum氏は、「最も重要なことは、エンジニアのように思考する方法を学ぶこと」であると述べています。
最初に1つの言語/フレームワークに焦点を当てて学習することが重要だと述べました。多くの人にとって、Rubyは優れた選択肢となるでしょう。
Rubyは、読みやすく効率的で、他の言語よりも扱いやすい言語です。
オープンソースであるため、多くのツールや他の開発者のコミュニティにアクセスして、すべて無料で利用できます。おそらく最も重要なのは、柔軟性に優れていることです。Rubyは多くの企業(Airbnb、GitHub、Hulu、Kickstarterなど)によって使用されており、後で他の言語を学習するための強固な基盤を提供します。
以前にLearn-Verifiedのプログラムに参加した学生のSarah Lichter氏は、「私は独学で学んでいたときから、Rubyは親しみやすく、最初の言語として始めやすいという情報を多く得ていたので、 Rubyが素晴らしい選択であると思えました。」と語っています。
ステップ3. 練習…そしてさらに練習を重ねる
あなたが学んだプログラミングの概念はあまり重要ではありません。重要なのは、実践を通して学習することです。
これは、新しい技術に磨きをかけるには、ある程度の時間を費やす必要があることを意味します。毎日、毎週、学習のためにかなりの時間を確保する必要があります。
10時間の練習を積んだだけではエンジニアにはなれません。それだけでは不可能です。
エキスパートになるには10,000時間かかると言う人もいます。しかし現在では、最初のエンジニアの仕事を得るのに10,000時間の練習も必要ありません。しかし相当の時間を捧げる必要はあります。
一例として、Flatiron Schoolのカリキュラムは、合計で約600〜800時間です。毎週プログラムに費やしている時間に応じて、ほとんどの生徒は4〜10カ月の間に成果を上げることができます。
ステップ4. エンジニアが実際に使用しているツールを使用する
Codecademyのような無料のリソースは素晴らしいですが、実際の環境でコードを使用しているわけではありません。Webブラウザに直接入力して、クイズや他の種類のアクティビティに基づいてスコアを取得する問題を解いていることがほとんどです。
しかし、現実の世界では、あなたがこのような仕事をすることはありません。そのため、最初から、エンジニアが実際に構築しているように構築することが重要です。エンジニアが使用するツールを使いましょう。将来的に、フルタイムの仕事で役割を分担してチームに加わることがずっと簡単になります。
しかし、エンジニアが実際に構築しているように構築し、エンジニアが実際に使用するツールを使いこなすことは、難しさも あるでしょう。
ステップ5. 他の人のコードを読む
エンジニアになるためにもう1つの重要なことは、他の人のコードを読む方法を学ぶことです。そのためには、GitHubリポジトリを参照し、ドキュメントをよく読むことが重要です。
ドキュメントが間違っていることもありますが、ソースコードを調べれば確実です(ソースコードは嘘をつきません)。そのコードを読むことを学ぶことによって、何が起こっているのか、プログラムがどのように働いているのかを理解できます。 (このスキルは、デバッグの際にも重要です。なぜなら、そこに存在すべきではないエラーコードを特定できるからです。)
これは見落とされがちなスキルですが、経験豊かなエンジニアがどのようにコードを機能させているかを見ることは、非常にメリットがあります。コードを表面的に見るのではなく、深く分析し、詳細を探究して、機能をマッピングし、可能であれば自力で再構築しましょう。
このようにして、既存のプログラムをリバースエンジニアリングすることができます。これにより、独自のプログラムを作成する方法を、より深く理解できるようになります。
ステップ6. コミュニティを見つける
学習コミュニティを見つけることは、エンジニアとして成功を収め、さらに発展させるために役立ちます。あなたが同じような人々のコミュニティに囲まれているということは、あなたは自動サポートシステムを持っていることになります。
あなたが困難に直面したり、モチベーションを失ったときに、頼りにできるグループがいるということです。
対人的な交流のあるグループもありますが(Meetupなど)、調整は難しく、すべての地域からアクセスできるとは限りません。しかし、オンラインコミュニティであれば誰もが参加することができ、同じように頼りになります。
たとえば、Learn-Verifiedのカリキュラムでは、生徒は学習を進めながらSlackでグループにアクセスできます。このグループでは、ビデオチャット、プライベートSlackチャンネルでのレッスン、トピックを一緒に作業することができます。
ステップ7. プロジェクトを構築する
チュートリアルを読んで動画講義を見るだけではなく、あなたのスキルを使いましょう。エンジニアが日常的にしているように、あなたも問題を解決しながら学習してください。そうすることで、学習がさらに進むだけでなく、潜在的な雇用者にあなたがプログラミングの能力があることを示すことができます。
プロジェクトはあなたが単独で、またはグループで構築することができます。
ステップ8. プロフェッショナルのネットワークを構築する
偉大な仕事を見つけるには、オンライン上で仕事に応募するだけでは十分ではありません(今日では、単に時間の無駄となることもあります)。
その代わりに、強力なネットワークを構築しましょう。まず、既存の人間関係に頼ります。 Jobviteによると、新入社員の40%が従業員の紹介を経て仕事を得ており、これが最も一般的な方法といえます。
あなたの1次ネットワーク(友人)にアクセスするだけでも、2次ネットワーク(友人の友人)への繋がりを得ることができます。目標は、仕事をしたい企業につながる人々と、非公式のコーヒーミーティングを設定することです。これは繋がりを作り、時には実際の面接にもつながります。
共通の友人を持たずに、新しい繋がりを作るためのいくつかの方法
- Meetupに参加する
- ブログを運営する(人に見てもらう機会が増える)
- ボランティア
- イベントで話す
関与してコミュニティに貢献していれば、必然的に、機会があなたの元に訪れるでしょう。
ステップ9. 面接の必須事項をマスターする
同じ分野の人、影響力のある人との関係を構築した後は、仕事に応募する準備が整っているでしょう。
しかし、応募要項を送信する前に、または直接の紹介を依頼する前に、次の3つを習得する必要があります。それは、履歴書、カバーレター(志望動機や自己PRなど)、オンライン・プレゼンス(オンライン上での存在感)です。
テクノロジーが進化した現代でさえ履歴書が必要です。採用マネージャーは、あなたのスキルと経験を知るために履歴書を見ます。
これらはどのような業界でも基本的なことです。
しかし、履歴書やカバーレターに加えて、あなたのオンライン・プレゼンスについてても考慮する必要があります。これはIT業界の誰にとっても非常に重要なことです。そして、時間の経過とともに構築し維持する必要があるものです。リクルーターや採用マネージャーは、あなたを面接に呼ぶ前にあなたの名前をGoogleで検索しているため、オンライン上での表示情報は重要です。
ソフトウェア開発者としてのあなたのオンライン・プレゼンスは、いくつかの要素で構成されています。
- LinkedInのプロフィール
- GitHub
- 個人のWebサイト(またはポートフォリオサイト)
- ブログ(個人のWebサイトに追加することもできます)
雇用主はこれらを確認し、自分が見ているものに基づいてあなたの印象を形成します。その印象が良いものであることを確認してください!
ステップ10. 就職面接のエースを狙う
最後に面接があります。
一般的な「最大の強み/弱み」などの質問に加えて、技術的および行動的な質問についても準備が必要です。プロジェクトの構築、コード課題での作業について、また過去に困難な状況をどのように処理したかについて質問されます。
『世界で闘うプログラミング力を鍛える150問 ~トップIT企業のプログラマになるための本~』は参考になる本でしょう。
ステップ11. 仕事のオファーを受け取る
おめでとうございます!
あなたが一連の面接を突破し、新しいスキルを証明したら、仕事のオファーを受けるのは時間の問題です。そして、最初は初歩レベルかもしれませんが、あなたはどこかに出発点を見つけなければなりません。
開発者としての成長を続けていくと、キャリアの階段をより大きく、より良い立場に昇格させ続けることができるはずです。
これらすべてのステップは、非常に長い道のりでしょうか?
答えは「イエス」です。
簡単なことではなく、あなたが時々フラストレーションを感じることがきっとあるでしょう。
しかし、これは実行可能なことです。そしてあなたがすべて自力で達成することさえ可能です。多くの人が、ハードワークのみによってソフトウェア開発へのキャリアチェンジに成功しています。
しかし、多くの人にとってすべて独学で学習することは困難なことです。それがスキルの習得、あるいは仕事探しであるかに関わらず。だからこそ、サポートを利用することにも意味があります。
エンジニアになるという夢があり、その目標を達成するための最も直接的なルートを望むなら、プログラミングのカリキュラムをチェックするのは確実な方法です。
そしてカリキュラムを修了する頃には、エンジニアになるために必要なスキルを身につけることができるでしょう。