見出し画像

Web系上場企業へ未経験転職して6ヶ月目なのでプログラミング初学者の学習について再考する

皆さんこんにちは。

GMOペパボ 鹿児島オフィスチーム エンジニアのよしこ @k2_yoshikouki です。


この記事の経緯

約4ヶ月前、Web系上場企業CTOが考えるプログラミング初学者の学習についてという記事を投稿しました。私が入社後1ヶ月経ったばかりの頃でした。


そして先日、我らがおつかれシャワー@june29 さんがパーソナリティーを務める V-log #095 さまざまな学習スタイル でこの記事が紹介されていました。その中で、「4ヶ月経ってアップデートがあればフィードバックが欲しい」という話が上がっていたので、今回筆をとっています。

取り上げて頂いたのは ゼロからわかる Ruby 超入門 でお馴染みの @igaiga さんでして、虎の威を借る狐的な私の駄文をとてもお褒めいただいて光栄でした。完全に @antipop のおかげだと思っております。

ちなみにあんちぽさんからもお褒めいただいてとても嬉しかったです。

画像1



プログラミング初学者の学習について

結論から述べると以下の通りとなります。

- 学校に行く・独学・その他の選択肢はぶっちゃけどれでも良いが、「効率的な学習よりは自分に合った学習を優先すべき」という部分は変わっていない
- 学習方法は目的の設定(理解度・期間・ゴール先の3軸で考える)による

もっと語りたいことは沢山ありますが、概論的なところはこの2つ目がアップデートされた形です。


プログラミング初心者は自分に合った学習を優先すべき

以前も述べましたが、あんちぽさんの放ったこの一言に全てが集約されます。

どんなに効率がよくても自分が挫折するとゼロなので、それなら効率悪くても挫折しないほうがいい。

まず前提として考えないといけないことが、プログラミング・エンジニアリング学習は挫折ポイントが腐るほどあって、こと初学者についてはドロップアウト率が極めて高いという特徴があります。


これにはいくつか理由もある上にググれば私よりも深い考察の記事がたくさん出てくるので深堀りはしませんが、少しだけ私なりに説明すると、私は、よくエンジニアリングを家屋を作ることに例えて理解するのですが、プログラミング初心者の学習はこんな感じになります

マイホームを作りたい人が、家の設計から始まって土台作り、セメントの作り方、金槌・インパクトドライバーの使い方、柱の組み方、壁の作り方、水道管埋設・電気配線のやり方までイチから勉強する

ざっくりと適当に一般家屋の建築スキルについて羅列しましたが、プログラミング初心者がなにかサービスを作るために勉強するというのは大体こんな感じです。


建築スキルについては馴染みあるスキルもあるため、名前を聞けばそれがどんな内容なのか大体分かったと思いますが、プログラミング初心者にとってのエンジニアリングは「何を勉強したらいいのかわからないから、とりあえず聞き馴染みのあるプログラミング言語について勉強する」という状態だと思います。

これは決して間違ってはいない選択なのですが、この状況は先程の例でいうと「木材を組み上げて家の骨格を作ることを学ぶ」もしくは「柱に板を貼り付けて壁を作ることを学ぶ」という感じです。「土台は勉強しないの?」などとなるわけですね。


ちなみに、エンジニアの習得すべきスキルについては有名な Developer Roadmaps というものがありますので「何を勉強したら良いかわからない」という人は参考にしてみてください。みんな大好き Ruby on Rails の得意分野である Backend のスキルマップは以下のようになっています。

画像2

この画像を見て多いとるか少ないととるかは人それぞれですが、この画像でも全体の1/3くらいの分量なんです。下に行くにつれて技術的難易度が高まっていきます。

全体像は以下のリンクから。

ちなみに Backend の他の分野もあります。(画像はトップページから)

画像3


とまあ、脅かすようなことを述べてきましたが「エンジニアリングの学習って一口で言うけどこれだけ勉強しないといけないんだよ」ということざっくり掴んでいただくだけで十分です。これらが全てが分かっていないとエンジニアになれないかと言うと、もちろんそんなことはありません。

実際、私もロードマップアイテムの5個くらいしか分かっていませんでしたがエンジニアになれました
(厳密には就職することができたというだけですが)


ここで言いたいことは、これほど膨大な範囲と量の知識をこれから勉強していかないといけないのに「効率的だけど辛い」楽しいけど非効率」のどちらかでは、楽しい方が長続きするし長期的な観点で捗りそうだよねということです。


「継続は力なり」「好きこそものの上手なれ」
まずは続けることが大切なのです。

どんなに効率がよくても自分が挫折するとゼロなので、それなら効率悪くても挫折しないほうがいい。


前回の投稿ではここまでについて述べていました(前置き長い)ので、これからアップデートされた部分を述べたいと思います。



学習方法は目的の設定によって向き不向きがある

先程は長続きする選択をしたほうが良いとは言いましたが、ではどんなときも自分に合った楽しい学習方法を選択すべきかと言うとそんなことはありません。

学習方法の選択は目的の設定に合わせた最良の選択をとるべきだと考えます。それは具体的に、理解度・期間・ゴール先の3つの軸で考えると良いでしょう。

期間
月単位で決めるのがオススメ。「なる早で」は危険信号

ゴール(目的達成したときの姿)
未経験就職する(Web系、SIer、特定の会社など)、自分でアプリを作る・アップデートする、起業する、教養のために学ぶなど

理解度
キーワードをざっくり理解しておくだけで良い、使用経験を獲得する、業務レベルの理解をしておく、第一人者となるなど


いちばん重要なのは期間です。これが変われば予定が全て変わりますので、なるべく具体的に決めましょう。そこからゴールを設定し、必要な理解度を自分の中で仮決定し、今やるべき必要なことを逆算して学習方法を決定します。


例えば、Web系企業への未経験転職をゴールとした場合のケースを3つ想定してみました。

1. 辞表出したので3ヶ月でエンジニアになる

2. 転職を考えているので1年後にエンジニアになりたい

3. エンジニアに憧れがあってゆくゆくは転職したい

以上の3つのケースだと、皆さんなら理解度をどの程度で設定するでしょうか。そして、どの学習方法を選択しますか。
ぶっちゃけ、オススメはありません。自分の設定した目標に対して継続できるやり方を選択できたら、それが正解だと思います。


大切なのは「なぜその選択をしたのか自分の言葉で説明できること」です。

会社採用側も学習方法で採用を判断しませんし、むしろ面接で見たいのは「この人が今どれほどできて、これからどれほど成長できるか」です。それを証明するために、自分の言葉で説明できることが大切です。これは今回の本筋から反れるので別の機会に譲ります。


ちなみに私の場合ですが、今のGMOペパボに未経験転職したケースは1のパターンでした。期間は3〜4ヶ月、ゴールはGMOペパボ(第一志望)、理解度は「口で説明できてQiitaにケース報告できるレベル」といった具合で、学習方法は独学でした。ベースはRailsチュートリアルです。



まとめ

さて、「学習方法は目的の設定によって向き不向きがある」という話をしてきましたが、いかがだったでしょうか。結論、「自分で考えて結論を出したほうが良い」という身も蓋もない話でした。

しかし、なぜ自分で考えたほうが良いのかについても併せて簡単に説明したつもりです。理由の一つは、自分にあったやり方じゃないと挫折しやすいからでした。


大分長くなってしまいましたが、少しでもプログラミング初心者の方の参考になれば幸いです。

今日はここまで。


P.S
私のインタビュー記事がGMOペパボ オウンドメディアにあります。よかったらご一読ください。


この記事が気に入ったらサポートをしてみませんか?