概要
この記事の内容はエンジニア教育のプロでもあり、
現役のCTOの方から教わった内容です。(ここのメンターの方からです。)
後自分の実体験をベースに解説していきます。
プログラミング学習が遅い人の特徴
プログラミング学習が遅い人は1つのことを学んだら1つのことしか考えない人です。
ex)
railsの学習でコントローラーを学んだ。へーそうなんだで終わってしまう。
コントローラーがrailsでどのような役割をしているか考えられていない人です。
これだと点と点がつながらずポートフォリオ作成でも共同開発でも
今自分が何をやっているのかがわからなくなってしまいます。
これだとかなり効率が悪いです。
プログラミング学習が速い人の特徴(強強CTOから学んだこと)
反対に
プログラミング学習が速い人は1つのことを学んだら
いろいろ考えを連想させて知識と知識などを繋げることができる人です。
ex)
プログラミングに暗記は必要ないと言われたら
「暗記必要ないんだ。なんで必要ないの? 何が必要なんだ? 具体的に何をすればいいんだ?」
みたいな感じです。
こんな感じで疑問を持って、色々知識を繋げていくことができる人です。
1の情報を受け取ったら3から5考えるような人です。
実際に学習当時強強CTOの方から指摘されたことです。
東大生に教えてわかった東大生が学ぶ時の頭の使い方
実際にインターンの東大生に開発のことを教えている時に、東大生が勉強している時の頭の使い方が、
プログラミング学習のスピードが速い人とほぼ同じだと感じました。
Gitを教えている時のことです。
Gitでプルリクエストまでの流れを教えました。よくあるのは、この流れを教えても「へーそーなんだ」で終わるのですが、東大生は違います。自分が教えていなことまでも疑問持ってどんどん質問してきます。
1考えたら3考えて勉強しているイメージです。
東大の入試問題見たことあるのですが、ざっくりとこんな感じです。
「関ヶ原の戦いはなぜ起きて、この戦いが後世にどう影響与えたのか」
みたいな感じです。この問題が出たわけではないですが、こういう感じです。
普通の受験生は「関ヶ原の戦いは1600年に起きた、なるほど」で終わってしまいますが、
東大生は「なんで戦い起きた?誰と誰がやった?これをやったことでどうなるの?」みたいなことを
当たり前のように考えて勉強しているんだなと感じました。
上の問題もこういうふうに考えないと「何書いていいかわからん」ってなってしまいますよね。
実際に日本のTopのメガベンチャーの人物像にも当てはまる
メルカリはメガベンチャーのTopですが、ここの会社に社員として受かるには以下の2点だそうです。
1.技術力がぶっち切りで凄い人
2.ミッションドリブンが呼吸するようにできる人(経営者が1考えたら10考えて動ける人)
これなんか東大生の考え方に当てはまっていまよね。
これができるような人はエンジニアに限らず優良企業で働くことができるんだと思います。
やらないことを決める
プログラミング学習で時間がかかってしまう人の特徴として、
やらなくてもいいことに時間を使ってしまうのは、よくあるパターンです。
受験や資格の勉強でも成績が伸びない人のパターンとして、ゴールが逆算してやるべきこと
現役の方なら先輩に、未経験の方は、メンター(結果を出している現役エンジニア)にレビューをもらってください。
この動画も参考にしてください‼︎
【勉強術】医師免許とりながら2億稼いだ経営者の勉強法がエグい
考えではなく実践する方法
自分も上記のことがまだできているとは言えないです。自分もまだ挑戦中です。
以下は考えよりアクションです。アウトプットする場を作って
ください。あくまで一例です。
-
自分はQiitaやZennなどでドキュメントを書いてアウトプットしていきました。
頭で考えていることややりたいことを文字にしてみる(言語化)
と理解が上がります。 -
何か作ってアウトプットする
自分は共同開発やOJTプランなどを使ってアウトプットして実際にどう使われるのかを体で覚えるようにしました。
本物の実務案件で経験を積めますし、職務経歴書に書けます。僕もここを利用しました。
自分は受講していないですが、評判はいいみたいです。
こちらの方も共同開発について言及されています。
プログラミングを身につけるにはアウトプットがいい
こちらのブログを書かれている方が言及されてましたが、
CRUD処理と認証機能などを実際に自力で作れば、実務でも何をやっているのかわからなく
なる現象はなくなります。
実際に共同開発を経験してから実務案件に入ったのである程度は実装することはできました。
共同開発が難しい場合はCRUD処理と認証機能を使ったToDOアプリがいいみたいです。
実際自分も共同開発でCRUDと認証機能を実装してから見違えるほど成長しました。
最後に
プログラミング学習が遅い人の特徴のままだと言われたことしかできない人になってしまいます。
エンジニアの仕事で求められるのは決まっていないことを決めていくことだったりします。
タスクをロボットみたいに捌くのではなく、このタスクの意図、役割は何だ?と考えていかなければいけませんし、タスクを作った人が間違える場合もあります。
プログラミング学習が速い人の特徴になるには頭の良さではなく
普段からの習慣です。普段からトレーニングをしていきましょう。
以前自分が教わっていたCTOの方からは「自問自答すること」と教わりました。
ex)
この記事有益だけど、バージョン古いのかな? 誰が書いた?
動いたけどこの動作は適切かな? この機能よりもっといい方法あるんじゃないかな?
など