〜 こんなお悩みありませんか? 〜
こんにちは。投資エンジニアの三年坊主(@SannenBouzu)です。
今回は、駆け出しエンジニアの方向けに、エンジニアが実務で使える本を10冊紹介します。
インターネット上で多くの情報を得ることができるようになって久しいですが、本は、まとまった知識を得られるとても効率のいいインプット方法です。
特にプログラミングやエンジニア向けの技術情報は、最初にまとまった知識を得ないで手探りで勉強すると、後で直すのが難しい悪い癖がついてしまう可能性もあります。
この記事では、過去に私が実際に読んできて、エンジニアが実務で使えると感じた本を10冊と、その関連書籍を紹介します。
プロの力を借りて効率よく、実務に役立つ知識を身につけましょう。
- プログラミングやエンジニアの技術知識が向上させたい方
- エンジニアとしての働き方を見直したい方
プログラミングやエンジニアの技術知識が向上する本5選【技術書】
リーダブルコード(おすすめ度:★★★★★)【初心者こそ読むべき】
- おすすめ度:★★★★★
- 難易度:★★☆☆☆
言わずと知れたプログラミングの名著です。
「ただ動くプログラミングができればいい」から次のステップに進むために必要な具体的ヒントがたくさん詰まっています。
「他の人が理解しやすい・最短の時間で理解できるコード」を書くことをメインテーマにしているので、「読みやすいブログの書き方」との共通点も多く、いま改めて読み返しても興味深いです。
例1:「関数から早くreturnを返す」のは、ブログで結論を最初に書くのと似ていますね。
1 2 3 4 | public boolean checkBadWord(String str) { if (str == null) {return false}; //以降なんらかの処理 } |
例2:「説明変数を用いて分割する」のは、ブログで最初に言葉を説明し、その説明を使って次の見出しを書くのと似ていますね。
1 2 | username = line.split(':')[0].strip(); if username == "root" {} |
たのしいUNIX(おすすめ度:★★★☆☆)
- おすすめ度:★★★☆☆
- 難易度:★☆☆☆☆
UNIXは、現存するもっとも古いOSのひとつで、macOSなど色々なOSの土台になりました。
安全性が高い・余計な機能が少ないといった特徴があります。
本書は、著者の方が講義の中で質問された内容をまとめたノートがもとになっていて、そのままパソコンで動かせる具体例も多く、すらすらと読み進めながらUNIXの全体像が頭に入ってきます。
かなり古い本ですが、UNIX自体が古く安定した技術なので、時代遅れになってしまっている記述もほとんどありません。
関連書籍としては、主観を交えず淡々と書かれた体系的な良書がよければ『入門UNIXシェルプログラミング』、UNIXでやりたいことが決まっていてその方法を素早く探したいなら『Linuxコマンドポケットリファレンス』があります。
UnixとLinuxの違いについては、こちらの関連記事が参考になります。
参考:3分間で人に説明できるようになるUnixとLinuxの違い
アジャイルデータサイエンス(おすすめ度:★★★☆☆)
- おすすめ度:★★★☆☆
- 難易度:★★★★☆
身近なビッグデータとして「メール=Gmailのinbox」を題材に、最終的に自分が送るメールへの返信率予測をするアプリケーションを構築しながら、データの収集・集約・解析・レポート化を一通り行う考え方と方法を身につけます。
日本語版の付録も充実していて、ログの収集・可視化ツールとしてFluentd、Elasticsearch、Kibanaが紹介されていたので、自分がWebアプリケーションを作るときにも役立ちました。
初版から少し時間が経ち、その間にライブラリの開発がかなり進んだので、(技術書ではよくあることですが)書籍通りに書いても動かない場合があります。
ページ数が少ない割に多くの内容が詰まっているので、データサイエンスをみっちり実践で学びたい人におすすめです。
Pythonではじめる機械学習(おすすめ度:★★★★★)【機械学習をやる技術者は読むべき】
- おすすめ度:★★★★★
- 難易度:★★★☆☆
Pythonの機械学習ライブラリscikit-learnを使った機械学習入門書です。
入門書ながら、精度の高い予測モデルを構築するための「特徴量エンジニアリング」や「モデルの評価と改善」について独立した章が用意されているのが素晴らしいです。
というのも、インターネット上の情報に頼るだけだと、「とりあえずサンプルを動かせたのはいいけど、精度が悪くて全然使い物にならない」ことが多いんですよね。
自分で用意したデータで機械学習を試したい、役に立つ結果を出したいエンジニアにとっては手放せない1冊になると思います(私も会社に常備しています)。
関連書籍として、Pythonの基礎から学びたい人はこちらも参考になりそうです。
WEB+DB PRESS総集編(おすすめ度:★★★★★)【読むべき】
- おすすめ度:★★★★★
- 難易度:★★★☆☆
WEB+DB PRESSは、技術評論社が発行している、Webアプリケーション開発のためのプログラミング技術情報誌です。
総集編はかなりお買い得で、たった2巻分ほどの値段で1〜102巻のほとんど全てを見れます。
特に興味あるテーマが載っている巻があったり、技術動向をキャッチアップしておきたい場合は、隔月発行で1,500円程度なので個別に買うのもありだと思います。
エンジニア・プログラマとしてのキャリアや働き方を見直す本5選
プロダクティブ・プログラマ(おすすめ度:★★★☆☆)
- おすすめ度:★★★☆☆
- 難易度:★★★☆☆
プログラマ個人の生産性を上げるというテーマにとても共感できました。
著者の個人的な体験談が随所に盛り込まれていたので、エンジニアの働き方をイメージしやすかったです。
I部「技法編」は、プログラマの生産性向上に役立つテクニックを集めて、大きく4つのパターンに分類して紹介しています。
- 加速:同じ作業を行うスピードを上げる
- 集中:気を散らす要因を排除して目の前の作業に集中する
- 自動化:自分の代わりにコンピュータに作業してもらう
- 正準化:同じことを繰り返さない
ほんの一例ですが、「集中」の項目で触れられている「仮想デスクトップを使って作業場所を分ける」というテクニックは、Macだと3本指でトラックパッドを上にスワイプさせると使えます。
例えば、Desktop1で物書き、Desktop2でブラウザ、Desktop3でSNSのように作業スペースを分けると気が散りにくいですよね。
II部「実践編」は、実際の開発現場で意識したい習慣や考え方が紹介されています。
初版第3刷が2013年なのでI部で紹介するツールが少し古いのと、II部「実践編」に割くページが少なくそれぞれの話題に詳しく触れられていないのが、個人的には少し難点でした。
「技法編」で身につけた考え方をもとに、自分の仕事で「加速」「集中」「自動化」「正準化」を実践していけば、この本がより生きると感じます。
ヘルシープログラマ(おすすめ度:★★★★☆)
- おすすめ度:★★★★☆
- 難易度:★★☆☆☆
若いエンジニア・プログラマといえども、健康を損なって仕事に支障が出ないように管理することが大切ですよね。
私自身が腰痛や頭痛に長年悩まされてきたので、自分事としてかなり興味を持ちました。
例えば眼であれば、「20-20-20ルール:20分ごとに、20フィート(6m)先のものに焦点を合わせて、20秒休憩する」のように、体の部位ごとに具体的な対策を紹介してくれます。
腰については、サイドブリッジ・バードドッグ・カールアップ(三大エクササイズ)のようなエクササイズが載っています。
詳細なエクササイズを日常生活で毎日思い出して継続するのがなかなか難しく、私自身「立ち上がってこまめに動く」「水をよく飲む」「ポモドーロテクニック」など分かりやすいものに留まっているということもあり、星4つにしています。
プログラマのためのサバイバルマニュアル(おすすめ度:★★★★☆)
- おすすめ度:★★★★☆
- 難易度:★★☆☆☆
第1部「プロフェッショナルのプログラミング」、第2部「人としてのスキル」、第3部「企業の世界」、第4部「未来に向かって」の4部構成です。
後半の章が印象に残っていて、以下の内容が特に気になりました。
- 「スケジュール第一主義」への対策として、スケジュールに書かれている仕事に予想以上の時間がかかっていること、品質が下がっていることを率直に伝える(「スケジュールの根本的な欠陥を指摘する」のはダメ)
- 定期的にスキルの棚卸しを行う
- 毎月一定の額を、自己研鑽資金にプールする
- 遅れているプロジェクトにプログラマを追加すれば、プロジェクトはさらに遅れる(『人月の神話』より)
関連書籍はこちら。
仕事は楽しいかね?(おすすめ度:★★★★☆)
- おすすめ度:★★★★☆
- 難易度:★☆☆☆☆
「明日は今日と違う自分になる」ことを意識して、遊び感覚でいろいろ試してみることの大切さをメインメッセージに据えた本です。
物語調の本でして、このメッセージを伝えるにしては、少し記述が冗長かなと思い星4つにしています。
本書で紹介されている以下のワークは試してみる価値があると思います。
- 仕事上でやったミスを全部書き出す
- 仕事に関してやっていることリスト(細かいことまで書く)
- 問題点を書き出す。仕事に対してイライラすることや他の人が何と言っているかも含めて
人を動かす(おすすめ度:★★★★☆)
- おすすめ度:★★★★☆
- 難易度:★★★☆☆
パソコンと向き合ってプログラミングをしている方が楽で、大勢の人を巻き込んで何かを成し遂げるのが苦手な私も、何年か会社にいると後輩をサポートしたりメンバーの進捗を確認したりする必要が生じてきます。
そんな苦手意識を持ちながら読んだのであまり多くは覚えていないのですが、「相手に重要感を与えることの大切さ」については妙に納得しながら読みました。
みんな自分のことを一番気にしているんですよね。
その部分を素直にくすぐってあげるのが上手な人はいるもので、「気にかけてもらっている」「認めてもらっている」感覚は本当に自分を幸せにするなという実感があったので、それと同じことを人にしてあげればいいのかと腑に落ちました。
実践は簡単ではないですが、何度か読み返して、徐々に「人を動かす」ことができるようになりたいです。