プログラマ暦10年の僕がおすすめする新人が最初に読むべき5冊
本棚を整理していたら、若いときによく読んでいた本が何冊かあったので、紹介する。タイトルはプログラマとしているが、ソフトウェア開発に携わっている人にとって、すべて必読の書だと思う。
僕はエンジニアとしてはたらき始めて10年経つが、紹介する本で得た知識はいまだに役に立っている。これらの書籍で得た知識は、今後のソフトウェア/システム開発で必要な知識のベースとなるだろう。一度読んで終わりにするのではなく、開発で困ったときなど、機会を見て読み直すことをおすすめする。
アルゴリズムC
どのようなシステムを開発するときでも、アルゴリズムとデータ構造に関する知識は必須である。自らがコーディングをするわけでもなくても、しっかりと勉強して知識を蓄えておいたほうが良いだろう。
この本は重要なアルゴリズムを網羅的に説明しているため、じっくり時間をかけて勉強すれば、今後ソースコードの読み書きで困ることは少なくなるだろう。かなり分厚い本ではあるが、机に向かってじっくりと勉強する類の書籍であるため、重量はさほど問題とならない。
プログラミング作法
読みやすいコードを書くという作業は、納期という絶対的な指標に対し、軽視されがちだが、数週間後の自分のためにもきれいなコードを書くよう心がけたほうが良い。利用する言語やフレームワークによって多少テクニックが異なるが、まずは本書で基礎となる作法を身につけておこう。
以下は、不適切なコードにより起こる問題のほんの一例である。
・コードレビューをしてくれる人が見つからない ・バグの原因がわからない ・バグ改修するたびに、新たなバグが増える ・機能追加するたびに、バグが増える
本書はそういった状況にならないための道標であり、数ある類書の中でもとくにおすすめできる書籍である。リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)とどちらを選択するかは好みで決めても良い。
コードコンプリート
[asin:4891004568:detail]コンストラクションスキルは、要件定義や設計を担当している人たちも含めて、全てのエンジニアに必須のスキルである。 本書は、主にソフトウェア開発におけるコンストラクション(詳細設計、コーディング、デバッグ、単体テスト)について、体系的に整理した書籍である。本書を通読し、実践しながら読み返していけば、十分なスキルを得ることができるだろう。
また、各工程ですべきことがチェックリストとしてまとまっているため、開発で困ったときは参照することをおすすめする。
マスタリングTCP/IP入門編
最近のフレームワークやライブラリでは適切に隠ぺいされているため、なかなか実際の通信の仕組みまで意識することはないかもしれないが、一般教養として勉強しておくといつか役に立つことがあるだろう。外部と通信しないスタンドアロンなシステム開発は少ないのだから。本書は、平易な文章でわかりやすく記述されているため、すぐに読むことができるだろう。余裕があれば、マスタリングTCP/IP 応用編や、[asin:482228476X:title]に挑戦してみてほしい。
おわりに
今回紹介した書籍はどれも素晴らしい本ばかりなので、ぜひ一度通読してみることをおすすめする。