はじめに
RubyやPythonの本を読み終えて、フレームワークのチュートリアルも終わらせたぞ!みたいな人が対象です。
「なんとなくコードの書き方の感覚はついてきた!でも、仕事で使えるような気がしないんだけれど...?」という状態を抜け出す方法を書いていきます。
1. まずはとにかく作ってみること
人間は忘れる生き物なので、学んだことも使わなければ穴の空いたバケツのように流れていってしまいます。
けれども、覚えたことも繰り返し思い出していけば、段々と記憶に定着していきます。
(エビングハウスの忘却曲線なんてものがあります。)
そこでオススメなのが、実際に簡単なサービスを作ってみることです。1
学んだ知識をフル活用するため、作業のすべてが復習になるからです。
このタイミングで陥りがちなのが「本やチュートリアルで勉強した内容を全然覚えておらず、自分には才能がないんだと卑下してしまう」ということかもしれません。
ぶっちゃけた話、現時点で完璧に覚えている必要がありません。
むしろ、これらの教科書を「自分の辞書として活用してやる」という気概でいましょう。
「XXをやりたいときにはこのページの内容を読めば良いや」と頭の中にインデックスするくらいがちょうど良いのです。
こういった知識は書くことを繰り返していくうちに、本を参照せずに書けるようになっていきます。
とにかく開発をしてみましょう!
2. コードは読めるものだと知る
「リーダブルコードを読むといいよ!」という話でございます。
この本はコードの意図を他の人に伝えるためのエッセンスを詰め込んでいる本です。
「そもそも、コードを意図して書けないしまだ読むの早いかな...」と敬遠しがちかもしれません。
ですが、初心者こそ本書を読むことで「コードは暗号の羅列じゃなくて、ちゃんと読めるものなんだ!」ということをわかるのですごく良い本なのです。
コードが読めるようになると、ロジックがどのような意図で書かれているのかがわかるようになります。
それができるようになると、すごいエンジニアたちの技術の結晶であるOSSのコードを参考にできるのです。2
(Rails製のOSSを例に出すと、GitLabやRedmine、dev.toとか...、これらのコードを読むだけで勉強になります。)
なので、本書を早いうちに読んでおくことは後々ジワジワと効いてきます。
ホントにいいことづくめなので、オススメなんです。
騙されたと思って読んでほしい。
3. 抽象的な視点を持つこと
「Webアプリケーションを作るぞ!」と意気込んで、Webアプリ開発をググると「Rails、React、AWS、...」と勉強にしなきゃいけないことがたくさん現れて「無理だ〜!」って気持ちになります。
技術を俯瞰してみると意外と繋がっていたり似通っていたりしているのです。
一つの技術がしっかりとわかっていると、そこを手がかりにして芋づる式に学べるようになっていたりします。
なので、すべてを暗記しようと思わず、ふと立ち止まって「自分が知っている技術と繋がっている部分はないだろうか?」とか「似ている部分はないだろうか?」と考えてみるとよいかもしれません。
そして、意外に大事なのは「なぜ、そうなっているのだろうか」というのを調べることです。
様々な技術が繋がっていたり、似通っていたりするのには理由があるからです。
そして、そのなぜの答えは重要なことだったりするのです。
「そんなことを言われても、どうすれば...」と思うので、抽象的な視点で技術を見るのに私が参考している本があります。
西尾泰和さんの『コーディングを支える技術』という本です。
本書はプログラミング言語を題材に、いろんな言語に搭載されている機能が存在する理由を教えてくれます。
「プログラミング言語ってたくさんあるけれど、本質はどれもみんな似たような感じなんだね〜。」ということが学べます。
プログラミング言語に限らず、技術の学習中に「コレは僕の知っているアレと似ているな、なぜだろう」と調べてみると、意外な理由やテクニック、プラクティスが隠されていることがわかるかもしれません。
4. 設計の重要性を学ぼう
アプリケーションは複雑になってくると勢いで書けなくなってきます。
最初は勢いだけで書けていたアプリケーションも、ある時を境に一つの変更をしたら「あちこちが壊れたりして大変!」って状況になったりするかもしれません。
それを事前に避けたり改善したりするのに必要なのが設計なのです。3
オブジェクト指向設計について学べる本は星の数ほどあると思いますが、はじめの1冊にオススメの本があります。
Sandi Metzさんの『オブジェクト指向設計実践ガイド』という本です。
とにかく実践的な学びに重きをおいていて、話を追って写経していくだけで「設計ってなんぞや。」ということがわかると思います。
本書を読み終わった頃には、設計の考え方、設計の原則、動的型付き言語のオブジェクト指向テクニック、リファクタリングテクニックが身についていることだと思います。
サンプルコードにはRubyが使われていますが、PythonやPHP7、JavaScriptのようなオブジェクト指向で開発できる動的型付き言語を使っているのであれば、読めると思いますし問題なく学べると思います。
最後に
Railsチュートリアルを終えた頃の自分にアドバイスを送るとしたら、と思って書きました。
次は何を学んでいけばいいんだろうと悩んでいる初心者エンジニアに道しるべになれば良いと思います。