はじめに
ちょっと前に「「このバイブルに育てられた」駆け出しエンジニアだった頃に読み込んだ、学びの一冊をご紹介」というweb記事が話題になっていました。
たぶん、長年ITエンジニアをやっている人なら1冊か2冊はそういった「バイブル」があると思います。
そこでフィヨルドブートキャンプのメンターに「あなたが「このバイブルに育てられた」と思う一冊は何ですか?」という質問をしてみました。
なお、回答者はメンターだけでなく、アドバイザー(メンターではないが、受講生の学習状況を確認できる企業関係者)や卒業生も含まれています。
というわけで、以下がその回答です!
【もくじ】
- はじめに
- メンターの伊藤淳一さん=「情熱プログラマー」
- メンターのinoueさん=「リーダブルコード」か「アジャイルサムライ」
- メンターのべーたさん=「猫でもわかるC#プログラミング」と「ノンデザイナーズ・デザインブック」
- メンターのkomagataさん=「プログラミングPerl」と「ピープルウェア」
- メンターのゆーいちさん=「達人プログラマー」と「メタプログラングRuby」
- メンターのYuheiOkazakiさん=「オブジェクト指向でなぜつくるのか」と「テスト駆動開発」
- メンターのShohei Umemotoさん=「RailsによるアジャイルWebアプリケーション開発」
- アドバイザーの大倉雅史さん=「オブジェクト指向のこころ」
- アドバイザーのUchio Kondoさん=「Linuxプログラミングインタフェース」と「アジャイルな見積りと計画づくり」
- 卒業生のmhさん=「UNIXという考え方」
- まとめ
- PR:フィヨルドブートキャンプでアドベントカレンダーやってます!
※おことわり=各書籍のリンクはAmazonアソシエイトのリンクになっています。
メンターの伊藤淳一さん=「情熱プログラマー」
最初は僕自身が語ります(苦笑)。
僕が選ぶなら「Code Complete」と「情熱プログラマー」と「ピープルウェア」。1冊に絞れ、って言われたら「情熱プログラマー」かな〜。
「情熱プログラマー」を読んでから、エンジニアとしてどう生き残っていくか、とか、ただ仕事としてコードを書く"だけ"のサラリーマンエンジニアで終わらないようにするためにはどうしたらいいか、みたいなことを考え始めた結果、今の僕がある気がします。
Code Completeは自分の中できれいなコードと汚いコードを判断する基準を作ってくれた本。
ピープルウェアはエンジニアにとって良い組織と悪い組織があることを教えてくれた本。
どの本ももし読んでなかったら今の自分はなかったはず!
メンターのinoueさん=「リーダブルコード」か「アジャイルサムライ」
「リーダブルコード」か「アジャイルサムライ」です!
両方とも、初心者にも分かりやすく、かつキャリアを重ねてもずっと役に立つ稀有な本だと思います。
実際、僕はエンジニアとして働き始める前に二冊とも読みました。それでもなお、未だにバイブルだと思っています。
ただ、両方ともフィヨルドブートキャンプの参考書籍にあるのでちょっと面白くないですね。
他にあるとしたら「データ指向アプリケーションデザイン」が良かったかなと思いますが、初心者向けではないですし僕自身も未だ理解できていないところがたくさんあります 😅
しかし、何回も繰り返し読む価値のある本だと思います。一応感想も書きました。
メンターのべーたさん=「猫でもわかるC#プログラミング」と「ノンデザイナーズ・デザインブック」
すでに著名な本のタイトルは出ているので、実務的に自分が触れた本について、ご紹介するのも一興かと思い書き込みします。 (バイブル...? バイブルというより、もうちょっと俗っぽいカテゴリかもしれませんがお許しください! 🙏 )
「猫でもわかるC#プログラミング」
プログラミングのプの字も知らない高校(高専)1年生の時に教科書として与えられた本がコレでした。完全にこの一冊でプログラミングできるようになったという訳ではありませんが、色々(変数,型,演算子,制御構文,クラス,継承,etc...)と身につくまで、この本にずいぶん助けられました。自分のプログラミング学習は、ざっくりと C# (C,C++もかじる) → JavaScript → Ruby と辿ってきたのですが、この本から学んだ「根っこの部分」はどの言語にも活かせるものだったと感じています。
とはいえ、当時からC#もまた進化しちゃってると思うので、今は全然書ける気がしませんが... 😅
「ノンデザイナーズ・デザインブック」
プログラミングじゃないんですが、この本と出会って、なんとなくですが業務とかで作る資料のクオリティがちょっと上がりました 😄 基本原則の「近接/整列/反復/コントラスト」は知っていて良かったなと今でも思っています!
メンターのkomagataさん=「プログラミングPerl」と「ピープルウェア」
僕は「プログラミングPerl」です。
その理由はこちらのブログに詳しく書いています。
しかし未熟とはいえ業務としてのプログラミング、つまり「何が分からないのかも分からない」という状況への耐性は出来ていたので、リリースまで家に帰らない覚悟を決め、Webで評判の高かった"ラクダの絵の描かれた本"を買って先輩独自のWebフレームワークのソースを端から読んでいく事にした。
(略)
しかしその後、あることを切っ掛けに今まで意味不明な記号の羅列や呪文の様にしか見えなかったソースや本の文章が急激に理解できるようになった。パズルのピースがはまっていくように次々と頭の中の記憶の断片が意味の通る知識としてつながった。これはちょっとしたカタルシスだった。
(略)
「あれも読める、これも読める、読めるぞー!」
(略)
つまりオライリーとは僕にとって"全然分からないものが分かるようになる魔法の本"なのである。
何故オライリーの本を買うのか - komagataのブログ
ただPerl書かない人が読んでも仕方ないので、今でも役に立つと思うものの中では僕も「ピープルウェア」です。
ピープルウェアでソフトウェアプロジェクトの社会学的な面がとっても大事だということを知りました。
技術的には問題ないのに失敗したプロジェクトのフェーズ1の後にこれらトム・デマルコ系の本を読み漁って、結果フェーズ2が成功したのでとっても印象深い本です。
メンターのゆーいちさん=「達人プログラマー」と「メタプログラングRuby」
色々出ちゃってますねー。
「リーダブルコード」と「ノンデザイナーズデザインブック」は僕もおすすめします。ずーっと役に立ちます。
出てないので影響あったのは
達人プログラマー
読んだのは初版です。書いてあること全然守れてない(毎年新言語学ぶとか… 😓 )ですけど。
トッププログラマーはこうなのか…と感動しました。
メタプログラングRuby
読んで欲しいかどうかは微妙ですが、僕にとって影響が大きかった本です。
Rubyの高度なメタプログラミングの機能を使って色々できる事を解説しています。
当時Javaの仕事をしていて、これを読んで、「Rubyはこんなことできるのか、面白い!プログラマーを信頼してるからこんな事を可能にしてるという事か。素晴らしい!」ってなりました。
初めて行ったRubyコミュニティのYokohama.rbで輪読会したのもあって、Rubyで仕事したい!という気持ちが高まりましたね。
今仕事でこの本に書いてあるコード出てきたらレビューでNG出すんですけどね 😅
内容はもちろん、出会うタイミングも大事だなって思いますね。
メンターのYuheiOkazakiさん=「オブジェクト指向でなぜつくるのか」と「テスト駆動開発」
同じく既にいろいろ出ているので、出ていないものから選ぶと 「オブジェクト指向でなぜつくるのか」と「テスト駆動開発」ですね。
自分はC言語&組込み業界からプログラミングに入ったので、オブジェクト指向もテスト駆動もあまり浸透していない世界でお仕事をしていました。それもあってこの2冊は知らない世界のより上手いやり方を知る、という意味で大きな影響を受けたと思います。(そして後の転職に繋がる 😅 )
オブジェクト指向についてはC言語自体がそういう機能を持っていないこともあって、概念を理解・実践するのが非常に難しい状態でした。この本を通じて、何のためにオブジェクト指向で作り、逆に何ができていればオブジェクト指向と言えるのかを知ることができました。
テスト駆動は「小さいサイクルを回す」ことの重要性を知るきっかけになりました。当時していたお仕事は手動で何度もテストを繰り返す(組込みなので実機を触ってのデバッグが多いこともあり)というカルチャーだったので、効率化や品質担保という観点で衝撃的でした。
メンターのShohei Umemotoさん=「RailsによるアジャイルWebアプリケーション開発」
一冊だけ選ぶなら、
何冊も選んでよいなら、
アドバイザーの大倉雅史さん=「オブジェクト指向のこころ」
私は『オブジェクト指向のこころ』ですね。
Javaを題材にした本であり、当時の自分は(ついでに言うと今の自分も)Javaは全く読み書きできないにもかかわらず、非常に多くの示唆を受けました。私はこの本を読んで以後オブジェクト指向に関する本はほとんど読んでいないのですが、正直この1冊でも十分なように思っています。
アドバイザーのUchio Kondoさん=「Linuxプログラミングインタフェース」と「アジャイルな見積りと計画づくり」
twitter.com
実はそんな感じのブログを昔書いてました!
udzura.hatenablog.jp
Linuxプログラミングインタフェース
この中でインパクトの大きい一冊、となると完全に「Linuxプログラミングインタフェース」なんですが、フィヨルドブートキャンプの多くの皆様のめざしたい方向と直接は関係ないと思うので ^^;
自分の直近数年の活動の方向性を決定づける本だった。当時、Linuxにより一層踏み込んだプログラミングを「自分の問題」にしたかったのだが、この本を足がかりに踏み込みを進めることができた気がする。
あと、この本はいわゆる(?)オライリー社から出ている鈍器の一角で、物理的には1,600ページほどある。電子で読んだので、読み終えてからページ数に気づいたのだが。そういう本を一つでも読み終えたのは多少は自信につながった。
自分の中で大切に思ってる本の話 - ローファイ日記
アジャイルな見積りと計画づくり
ジュニアな時に読んだ「アジャイルな見積りと計画づくり」は色々と影響を受けました。
この本は某F社にいるときに、とにかく周りの仕事が進まない、優先順位がつかない、今でいうトイルで運用が忙殺される、みたいな不満の塊の只中にいるときに読んだ。
僕のスクラムというか、仕事の進め方の基本を間違いなく構築している本はこれ。その後も何冊かスクラムに関する本は読んだが、この本で言われている内容は本当に基本的かつ普遍的だなあと感じる。だいたい、この本の内容と、この本を読んだ後転職したA社でのやり方、あとは大学の時のサークルやバイトの時に学んだこととかを思い出しながらお仕事の帽子をかぶっている。
とにかく、未来のことはよくわからない、なのでどういう事態が勃発してもなんとなく対応できるように考えや仕組みにバッファを持っといたり、ざっくりと現場の進捗を把握する方法を身につけましょう、みたいにこの本を解釈していて、それが今でも判断の原点になっている。
自分の中で大切に思ってる本の話 - ローファイ日記
今ならアジャイルサムライでもいいのかな? # でもアジャ見積の方が好きなんですよね...
卒業生のmhさん=「UNIXという考え方」
卒業生ですが、「UNIXという考え方」という古典的名著を思い出しました。
20年前くらいに読みましたが、シンプルな小さい部品を組み合わせて、
大きいプログラムを作るという思想が今でも役立っているなぁと感じます。
まとめ
というわけで、みなさんが選んでくれた「このバイブルに育てられた」学びの一冊は以下のようになりました!
伊藤淳一さん | 情熱プログラマー | |
inoueさん | リーダブルコード | アジャイルサムライ |
べーたさん | 猫でもわかるC#プログラミング | ノンデザイナーズ・デザインブック |
komagataさん | プログラミングPerl | ピープルウェア |
ゆーいちさん | 達人プログラマー | メタプログラングRuby |
YuheiOkazakiさん | オブジェクト指向でなぜつくるのか | テスト駆動開発 |
Shohei Umemotoさん | RailsによるアジャイルWebアプリケーション開発 | |
大倉雅史さん | オブジェクト指向のこころ | |
Uchio Kondoさん | Linuxプログラミングインタフェース | アジャイルな見積りと計画づくり |
mhさん | UNIXという考え方 |
たしかにどの本も「流行りの技術を学ぶ本」とかではなく、何年(何十年?)も長く使えそうな知識が詰まった名著ばかりですね!
全部読むのは大変だと思うので、面白そうと感じた本を何冊かピックアップして読むのがいいと思います。
もしかするとその本があなたのバイブルになるかもしれませんよ!
最後に、回答してくださったメンターやアドバイザー、卒業生のみなさん、どうもありがとうございました😄
PR:フィヨルドブートキャンプでアドベントカレンダーやってます!
フィヨルドブートキャンプの在校生や卒業生、メンターが技術情報や日々の思いをアウトプットするアドベントカレンダーです。
フィヨルドブートキャンプってどんなことやってるの?という興味がある人はぜひチェックしてみてください!
ちなみに、枠が余ってたらこのエントリもアドベントカレンダーに入れようと思ったのですが、Part 1、Part 2ともすでに満席で入れられませんでした😅