プログラミング初心者にオススメ!学習を加速させる1冊の本を紹介
プログラミングの学習を初めて、少しコードを書くことに慣れてきた方向けて、その後の学習において更に成長を加速させるための考え方を知ることが出来る本を紹介したいと思います。
対象者
・プログラミングを初めて数か月の方(コードに書くこと自体は慣れてきた)からエンジニア歴1~3年程度の方で未読の方
読むことをお勧めしない人
・プログラミングの学習をこれから始める方
・プログラミング学習を始めて間もない方
当然いずれは読んで欲しいので、読んで頂いても全く問題はありません。
しかし、学習を始めたての方は、そもそもコードを書くこと自体に慣れていない、基礎もほぼ身に付いていない状態です。
専門用語も出てきますので、まずはこの本を読む前に、基礎固めやコードを書くことに慣れる方が重要だと思います。
また、実感という部分で中々イメージが出来ないと思います。
多少なりともコードを書いて、イメージできる状態で読んで頂いた方が、実感が湧くと思います。
本の紹介
今回紹介する本は下記の本です。
|
本の内容
美しいコードを見ると感動する。優れたコードは見た瞬間に何をしているかが伝わってくる。そういうコードは使うのが楽しいし、自分のコードもそうあるべきだと思わせてくれる。本書の目的は、君のコードを良くすることだ。(本書「はじめに」より)
コードは理解しやすくなければならない。本書はこの原則を日々のコーディングの様々な場面に当てはめる方法を紹介します。名前の付け方、コメントの書き方など表面上の改善について。コードを動かすための制御フロー、論理式、変数などループとロジックについて。またコードを再構成するための方法。さらにテストの書き方などについて、楽しいイラストと共に説明しています。日本語版ではRubyやgroongaのコミッタとしても著名な須藤功平氏による解説を収録。
上記の説明に書いてある通り、より良いプログラムの書き方について解説されている書籍です。
この本は、色々な方が紹介されている有名な本でして、感想記事なども沢山あります。
ですので、私なりに、未経験から学習を初めて1年が経った時に読んだ時のことも含めて、オススメする理由をお伝えします。
お勧めする理由
コードを書く上でベースとなる考え方が身に付く
この本は、特定の言語にフォーカスされた本ではありません。
文中にも色々な言語で例が書かれています。
この本を読むことで得られる最大のメリットは、
これからコードを書く上で基準となる考え方を知ることが出来る
だと思っています。
特に初心者の方は、書籍の中に出てくる複数のプログラミング言語を網羅している訳ではないので、具体的なコードを見ても、中々理解できないかと思います。
しかし、重要なポイントはそこではありません。
誰しもが理解しやすいコードの書き方や、バグを未然に防ぐ書き方、変数や関数の命名について、コメントの本質についてなど、どうあるべきかということを知ることができるという点が本当に大事なポイントです。
何故そのようにすべきかについても、分かりやすく書かれています。
- 変数名を適当に付けていたりしていませんか?
- とりあえず動けば良いで終わらせていませんか?
- 後日コードを読んだら意味不明だったりしませんか?
- その関数名は他人が見てもどういう役割かすぐ伝わりますか?
- 別にあっても無くても構わないようなコメント付けていませんか?
等々、言語問わず、必ず考えなければならないポイントが書かれています。
一度でもこの本を読んでいれば、どういうルールで考えるべきかが見えてきます。
特に初心者の方は、書籍であったり教材であったりと、サンプルがあってそれを模写したり、利用して学習を進めると思います。
その期間は、見本があったり教えてもらいながらになると思いますので、割とスムーズに進められると思います。
しかし、いざポートフォリオを作る、何か個人製作をする、というタイミングが来た時に、あまり意識していなかった部分で詰まる可能性があります。
一つ一つ、どうやって命名するか、条件式はどう書くべきか等、色々な事を決めなければなりません。
道筋がある状態で考えてコードを書くか、闇雲に基準も無く何となくコードを書くか、どちらが効率的且つ正確でしょうか。
当然、前者ですよね。
どう考えるべきか分かっている状態であれば、それに則り書くことが出来ます。
そういった基準を知ることができるというのが、この本を読むことで得られる最大のメリットだと思います。
※一点だけ注意点として、全てのプロジェクトで当てはまるという訳ではありません。
書籍ですので、基本的には則っておくべきことという位置づけと認識してもらえればと思います。
但し、私の経験からも、どういった環境で仕事をするにしても、この本の内容が活かされていると感じているので、メリットは大きいと思っています。
他人のコードを読むときにも非常に役に立つ知識
他人のコードを読む機会というのは、これまでもこれからも続きます。
わからなことがあった場合に、ネット上で色々な記事で読みます。
企業に入った場合、コミット時やコードレビューやペアプログラミングなど、自分の書いたコードを読んでもらいますし、読むこともあります。
改修案件であれば、既存のコードを解析して改修をします。
もし学習を終えて、現場に入ったり、フリーランスになればそういう機会が日常的にあります。
そういった時に、この本の内容がとても活かされます。
この本を読み、コードを沢山書いていると、他人のコードを読んだときに、こうやってコードを組んだ方が良い、命名した方が良い、この書き方だと後でバグを生む、そういったことが段々と見えるようになります。
何かのプロジェクトで誰かのコードを読んだ際に、危険な部分や、実はバグになっている部分、もっと理解しやすく書くことが出来る部分、それらを指摘することが出来ます。
その結果、バグが起きず、システムが健全に動作し、プロジェクトを円滑に進めることが出来るようになります。
徹夜での無駄なバグ調査や、改修対応、不要なリリース、そういったことを減らすことが出来ます。
※また、あなたの評価にも繋がるかもしれません
私がどうやって勉強したか
少し余談ですが、私が当時学習した時の状況やどうやって学習したかも残しておきたいと思います。(興味が無ければ飛ばして頂いて問題ありません)
私がこの本を読んだタイミングは、ちょうどプログラミングに触れてから1年後でした。
最初の半年間程度は、とにかく言語に関する直接的な学習を行っていました。
その後、段々と手が慣れてきて、ちょうど1年経過した時に、当時何かの記事でこの本の情報を知りました。
半年を過ぎた辺りから、多少余裕が出てきたので、IT業界であったり、新技術であったり、そういった情報を色々なサイトをブックマークして毎日通勤中や始業前に見るようにしていた中で見つけた本です。
ちょうどその時期に、私自身文系で何の経験も無かったですし、体系的に継続して教えてもらえるような環境でも無く、目の前の事をこなすために場当たり的な学習になっていた気がしていて、もう少し俯瞰した視点でプログラミングというものを理解したいと考えていました。
一旦落ちついて、より良いプログラムを書くというのはどういうことかを理解する期間を作り、いくつか本を調査して、この本も候補に入れて読みました。
その時に取り組んでいたことは、当時多くの人が使っていたEvernoteに記事のまとめをひたすら書くという方法でした。
この方法が良いか悪いかは、何とも言えませんが、とにかく手を動かして頭に擦り付けるような感覚でやっていました。
各章毎に大事だと思うポイントを整理して書き出すという方法で取り組んでいました。
読んで全てを記憶し理解できればこんな作業は必要ないと思いますが、如何せん私自身そこまで記憶力が良い訳ではないので、体に覚えさせるという意識で学習をしていたので、その延長線上でこういった方法を取りました。
かなりの文量にはなりますが、当時学習に関わるメモは全てEvernoteに書いていたので、デバイス問わず見返せますし、いつでも振り返れるので、助かりました。
学習の記録にもなりますし、ちょっとした達成感も得られて、また次の本を読みだすことにも繋がったと思っています。
そして、これを読了した際に、もう少し早くこの本を読めばよかったと思った経緯があり、対象者に記載した内容に繋がります。
特にこの学習方法をトレースする必要も無いですし、各々で合っている学習方法で取り組んで頂ければと思います。
今の時代は、色々と学習において便利なツールやシステムが沢山あると思うので、それらを色々と試して、自分に合った学習方法でやってみて下さい。
何か少しでも参考になれば幸いです。
まとめ
「リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック」
について、お勧めする理由について述べました。
もう一度言いますが、私が思うこの本で重要なポイントは、
これからコードを書く上で基準となる考え方を知ることが出来る
です。
やはり、何かしらの基準が無いと、意思決定というのは難しいです。
こう書くべきなのか、こう考えるべきなのか、ということを知っていると知らないでは、雲泥の差だと思います。
そのような基礎的な内容を把握した上で、各プロジェクトや案件で学んだことを応用しながら開発した結果、システムやサービスを安定して稼働させるという事に繋がると思っています。
もし何か疑問等があれば、コメントやTwitter等でメッセージ頂ければお答えできる範囲でお答えします!
ありがとうございました。