- GAFAMに転職した現役の技術職が執筆
- 2流文系卒からプログラマーに転身
- 初心者からプログラマーになって、一人前のエンジニアとして歩んでいける戦略を公開
- 年収1800万円以上
10年後を見据えてプログラマーを本業にしようと思うけど、情報が多すぎてどう進めたらよいかわからない。
初心者がこれからプログラマーを目指していくうえでの戦略を教えてほしいです。
初心者からプログラマーを本業に考えている方でこのように悩んでいる人は多いのではないでしょうか。失敗したくないですし、かなりの時間を投資する必要もあります。今回は個人的な主観が多くなりますが、プログラマーを本業にする際の戦略というか心得をお伝えします。
初心者がプログラマーになるための心得
初心者がプログラマーになるためには、いくつか心得ておくべきことがあります。個人的な事実と主観に基づくものなので、あくまでも参考として読んで下さい。
- まずは本業としてプログラマーを目指す
- プログラミング学習では作って動かすというワクワク感にフォーカスする
- 学習するプログラミング言語の選定は慎重に
- 資格を勉強する真の理由を理解する
私の経験から上の4つを挙げました。
まずは本業としてプログラマーを目指す
ここまで記事を読み進めているということは、みなさんはこのステージに立っているのではないでしょうか。または副業で始めてみようと思うけど、迷っている方もいらっしゃるかもしれません。プログラマーになるには多くの時間の投資が必要になります。まずは本業としてプログラマーをすることを目指してください。時間もそれなりに投資が必要なので、費用対効果を上げるにはまずは、本業の方がメリットがあると思います。一方で、ゆくゆくはこういうケースはありだと思います。システムエンジニアを本業にしていて、元々夢だった音楽に専念するために、システムエンジニアを副業にするケース。また別の例だと、プログラマーをやっていた女性が結婚、出産を通じて一時的に専業主婦になって、落ち着いてからまた時短でプログラマーを副業として再開するケース。これらは実例ですが、プログラマーという職業を上手に使っている例だと思います。現場でこういう方々を見てきました。私からしたら羨ましい限りです。
プログラミング学習では作って動かすというワクワク感にフォーカスする
ITの世界は覚えるべき専門用語や作法がたくさんあります。また、ちまたにはプログラミングになるための情報がたくさんあり、座学から入って挫折する人も多いのも事実です。まずは1行プログラミングしてみましょう。Hello Worldという文字を画面に表示するところから始めましょう。長くこの世界にいますが、私は初めて自分のプログラムが動いた時の感動を今でも忘れたことはありません。
最初に学習するプログラミング言語の選定は慎重に
プログラミング言語には様々なプログラミング言語があります。私が仕事で使ってきた言語だけでもかなりの数です。C、C++、Java、C#、Objective C、PHP、Ruby、Java Script、Python、他。1つ言語を習得すれば後は応用が効きます。しかし、最初に深く学習するプログラミング言語を間違えると、将来にわたってキャリアの幅が狭くなり、仕事をお願いされにくい人材になる危険性があります。これはとても大事な話なのでまた別の記事でお話します。お勧めのプログラミング言語についてもこの後記載しているので読んでみてください。
資格を勉強する真の理由を理解する
いずれ資格が必要になることがあります。資格を持っていると、IT企業では給料に手当てが付くことが多いです。極端な言い方をすると資格試験を受けて合格した人とあとほんの少しで落ちてしまった人の違いは、その手当がもらえるぐらいしか違いがありません。資格を条件にする企業もありますが、資格取得を必須にせずに抜け道を作っている企業は多いと思います。プログラミング能力が高くて資格を持っていない人を獲得できないのは、企業として大きな損失につながるからです。「資格試験の勉強をしています。入社後1年以内に取得予定です。」と言えば、採用担当からすると好感度高いです。私の場合は、入社から2年半でようやく基本情報技術者試験を突破しました(笑)。これは有料級の情報ではないかと思います。
資格を勉強する真の理由は、コンピュータサイエンスを学ぶことにあります。プログラマーを始めて数年後、システムエンジニアとして、設計領域までキャリアの幅を伸ばしていくには、コンピューターサイエンスの知識が必須となります。ただ、プログラマーになるのに最初から深く勉強することは必須ではないと思います。
数年前にLINEのエンジニアと話す機会がありました。ある採用イベントで立ち話をしたのですが、その人もこのようにいってました。
「採用する基準はCSの知識があることですかね。」
CSは、ここではカスタマーサティスファクションではなく、コンピューターサイエンスのことです。コンピューターサイエンスとは、コンピュータやコンピュータシステムを理解し、それを使って問題を解決する方法を導き出せる能力のことです。この能力は文系の方でも伸ばせます。ご心配なく。ただ、プログラミングだけできてもダメです。
初心者が最初に深く学習するおすすめのプログラミング言語
個人的主観に基づきますが、初心者が最初に深く学習すべき言語の条件は以下の通りです。4,5,6は難しい専門用語を使っています。ふーん。で大丈夫です。
- 案件単価が高い言語
- 難しすぎない言語
- 幅広い分野の開発で使用されている言語
- オブジェクト指向言語
- スレッドが使える言語
- ユニットテストツールがある言語
個人的には最初に深く学習する言語はJava(ジャバ)かPython(パイソン)をお勧めします。本業でがっつり稼ぐには金融系やエンタープライズでよく使われるJavaがお勧め。ただ、最近はプログラマーの間ではPythonが人気です。開発者の数が多いということは参考書もリファレンスも充実していますので初心者には勉強しやすい言語かと思います。プログラミング言語は、外国語と違って、1つ習得すると横展開が比較的容易です。
私の主観ばかりだと説得力がないので、参考までに、生成AIのClaude 3 Sonnetに、日本における月額単価の高いプログラミング言語のランキングを聞いてみました。このモデルは2023年の8月時点までの情報を元にしているようですので、2024年の現時点ではまずまず新しい情報として参考にして良さそうです。案件数や単価から見てもJavaが1位になっています。
この表を見ていて個人的に悩ましいのはJavaScript。案件単価はまずまず高いかもしれませんが、開発がフロントエンドに限定されがち。これからはデータを駆使する時代なので、サーバーサイドのプログラミングができるプログラマーの方が引く手あまたな気がします。AIや生成AIもデータを元に作られています。各企業はAIや生成AIを使うことに躍起になっています。その元になっているのはデータ。IoTで企業が蓄積するデータ量はますます増えます。データをどう効率的に管理するかが、AI、生成AIをどうするか?の前に必要となります。それがうまくできていない企業は多いです。将来的に事業会社の正社員として働きたいということであれば、サーバーサイド、データに近いところのプログラミングにフォーカスしていく方がキャリアパスとしては良いと思います。キャリアプランについてはまた別途お話しますね。
プログラミング言語の習得を高速化する方法
プログラミング言語の習得を高速化する方法は、プログラミング言語の習得に限ったことではなく、日々の生活や仕事にも同じことが言えます。
プログラミング言語(新しい事)の習得を高速化するプロセス
- プログラミングの勉強を開始する
- 問題にぶつかる
- つまづいた問題の真因を見つける
- 解決策を見つけ、解決策にたどり着くまでの時間を早くする
- (2からを繰り返す)
- プログラミングの勉強を開始する。上でプログラミング毎の案件単価を見たと思います。Javaだと50万円から80万円です。この数字がみなさんにとって魅力的であれば、開始する十分なモチベーションになると思います。Javaだったら基礎を10時間/週で半年ぐらいメンターがいる環境で学んだ後、どこかの案件に入って1年みっちりやれば、同様の案件であればフリーランスで50万円稼げる自信はつくと思います。まずはプログラミングの勉強を始めましょう。どうやって、は後でお話します。
- 問題にぶつかるとは、プログラミングの勉強を開始して、問題や壁にぶつかるということです。プログラミングの勉強を開始しただけでも素晴らしいのに、実際にプログラミングを書いて問題にぶつかることができるあなたは素晴らしい行動力を持っています。あとは進め方だけです。
- つまづいた問題の真因をみつけるとは、何か問題にぶつかった場合に、特に新しい分野であればその真因がわからないことがあります。皆さんもネットにつながらなくなった経験ありませんか?その原因が、使用している端末の設定にあるのか、端末自体の故障なのか、Wi-Fiに異常があるのか、Wi-Fiの電源が抜けているのか、Wi-Fiのアクセス制限をかけられたのか、Wi-Fiのパスワードが変わったのか、または、キャリアに異常があるのか。ネットにつながらないという問題を特定するには、多くのケースを1つ1つ確認していく切り分け作業が必要となります。プログラミングの不具合、バグも同じような形で真因をみつけて解決していく必要があります。これを読んで、無理かもと思われた方もいるかもしれません。だからエンジニアは単価が高いのです。普通の人ができないことができるから単価が高いのです。ただ、ビギナーがなかなか独学で不具合の真因を特定するのは時間がかかります。しかし、最近は本当に便利な世の中になりました。AIです。ChatGPTやClaudeをはじめとるするAIの存在が、プログラマーやプログラミング初心者を支援してくれます。ただそれでも問題のコンテキスト(背景)をうまく理解してくれないこともあります。
- 解決策を見つけ、解決策にたどり着くまでの時間を早くするとは、プログラミングの学習は、問題に遭遇して解決するを繰り返す作業です。繰り返すスピードが速ければ習得もそれだけ早く訪れます。先ほどもお話しましたが、問題の真因を特定して解決策を導くまでには、独学だとかなりの時間がかかります。良いメンターがいて、気軽にチャットで質問できるような環境があれば、プログラミング習得の近道になることは言うまでもありません。もし私が今からプログラミングを勉強するならという視点で、効果的なオンライン学習方法をまとめてみました。