この記事はTwadaさんの資料を見て、備忘録としてのエントリです。
こちらのスライドを参考にさせていただきながら、適宜自分なりの解釈も加えながらまとめてあります。
2021年4月よりソフトウェアエンジニアとなったので、どのように勉強すればいいか、どのように社会人生活を送るのか考えていてこちらのスライドを見つけたので、これはぴったりだと思い内容まとめを作ることにしました。
技術の学び方を学ぶ
以前なにかで目にしたのだが「何かを作る上で大事なのは素材だ」という話を見たことがある。
そして、ソフトウェアエンジニアにとってその素材とは知識にほかならない。
エンジニアとして行きていく上で、自分の知識を得るためには定期的に投資をしてそれを育てていかなくてはいけない。
その方法として上記スライドに紹介されているのは以下。
月に1冊のペースで技術書を読む
本から学ぶという基本的なインプット。
でも、「読む」というのは意外とできてしまい、「ちゃんと読んだ」「わかった」「理解した」「引き出せる」「使える」という更に上の状態になるためには大事なことは「アウトプット」なのだろうと思う。
読んだ技術書は「まとめ」を作ったりして保管していきたい。
なお、最近では本だけでなく企業のテックブログからも学ぶべきことはあるとのこと。
手を動かして学ぶ
実際に手を動かすことで「やってみる→できる→わかる」という段階で習得できる。
スポーツ選手が理論だけ学んでも仕方がないように、エンジニアとなったからにはコードを書くということは日々大事なことだ。
また、技術書などに載っているソースコードをそのまま書き写す「写経」も一つの手段になる。
僕も今までなんとなく書き写していたけど、GithubなどのSCMを活用した方法も紹介されていて参考になった。
- ローカルで使えるSCM(Source Control Managem)を用意
- ひたすらサンプルコードを写して実行
- 実行するたびにコミット(コミットログにページ番号を含める)
- 疑問点があったらコミットログや本に書き込む
- 章ごとにタグをうつ
毎年少なくとも言語を一つ学習する
言語には流行り廃りがあるので、なにか新しい言語を学ぶとき大事。
同じような言語だけでなくてパラダイムが違う言語を学んだり、文化も学ぶことが大事だということだ。
言語の流行り廃りなどがチェックできるサイトもあるとのこと。
身の回りをプログラミング対象にする
これはあんまりピンと来ないのだけど、プログラミングやソフトウェア開発においては独自の考え方みたいなのがあって、それを日常から使うようにしよう、ということだと理解した。
怠惰、傲慢、短気というプログラマーの特性や、プレーンテキストとしてフォーマットに依存しない形でのやりとり、またバージョン管理や自動化といったソフトウェア開発ならではの手法を例えば執筆などにも活かして行く。
アウトプットを行う
「学ぶ」にはインプットとアウトプットのサイクルがセットになっている。
このループの量をどれだけたくさん回せるかが、学びの質につながる。
アウトプットの手法としてはブログ、執筆、コードの公開、講演、ライブコーディングなどたくさんある。
現役プログラマでいるために
毎日コードを書く
週末にまとめてやろうだとなかなか時間の確保が大変なので、毎日コードを書くことをルール化してやってみることが載っていた。
ルールの例としては
- 毎日コードを書いたら、その他ブログやドキュメントなどをやってよい
- 意味のあるコードを書くこと(新しくコードを生産すること)
- 深夜24時までに終わらせること
- 書いたコードはOSSにすること
などがあって、たしかに毎日終業後に時間を決めて、まずはコードを書くところからちょっと頑張ってみるのはトライとしてよさそうだと感じた。
年下から学ぶ
今僕は社会の中では年下のプログラマーに当たるが、だんだんと年上になってくる。
そうなったときに、年下から学べるかどうかが一生プログラマーでいるためには大事とのこと。
日々新しい技術が生まれる中で、定期的に自分の知識が古くなっていないか、古くなっている場合は学ぶほぐし・学び直しして、若者と同じ土俵で戦っていくことが求められるし、そのためには謙虚に若者から学ぶことが大事なんだと学んだ。
過去から未来を見る
技術には流行り廃りがあるとはいえ、一定の規則性がある。
過去の流れを見れば未来もある程度予想ができるのではないかという話。
以下参考。
- https://speakerdeck.com/twada/worse-is-better-understanding-the-spiral-of-technologies-2019-edition
- https://fukabori.fm/episode/28
人のつくる渦を見る
- 組織から個の時代へ
- ロードマップ指向とエコシステム指向
- Worse is better
大事なことに集中する
感想
和田さんの講演は実際に拝聴したわけではなく資料を拝見させていただいて解釈しただけなので、一部誤りや認識ミスがあるかもしれないなとは思っている。
また、新卒の今考えること、もう少し経験や知識を得てから改めてこのスライドを見るときっと捉え方がまた違うんだろうなとも思う。
ソフトウェアエンジニアになりたての今、まずは必死に「一人前のエンジニアになる」ということを考えつつも、その先にある「エンジニアでありつづける」ことも見据えながら日々(アウトプットを大事にしながら)勉強をしていかなければな、と思った。
また今回のスライドにはエンジニアとして大事な要素が各所に散りばめていたので、きっとそれぞれをもう少し深ぼれば良い学びにつながるような気がしている。
このブログ内でも、もう少し深堀りするエントリをつくって行けたらと思っている。