技術の移り変わりが非常に速いのがIT業界です。
今日勉強したことが、2,3年後には使い物にならないということも起こり得ます。
特にフロントエンドのフレームワークには流行り廃りがあり、キャッチアップは簡単ではありません。
サーバーサイドも同様、流行り廃りはもちろんあります。
だからと言って、何も学ばない、勉強しないエンジニアというのはどんどん価値が下がっていきます。
数年は今の技術でどうにかなりますが、何もしなければ5年後、10年後には転職をしようにもできない状態に陥ってしまいます。
エンジニアとしての価値を上げていくためには、日々の勉強は不可欠と言えます。
エンジニアとして継続的に学んでいくとして、必ず学ばなければいけないこととは何でしょうか?
先ほども述べましたが、エンジニア業界では技術の進歩が速いです。 ですので、小手先のことを勉強していてはあまり意味がありません。
これでは、ただその進歩に必死に食らいつくだけになってしまい、かなり辛い思いをします。
そうならないためには、まずエンジニアとして必ず身につけておくべき事柄、時が流れても変わらない技術の基礎を身につけておくべきです。
例えば、Web業界で働いている・働きたいのであれば、HTTPの仕組みを知っておくべきですし、エンジニアとして長く働くつもりがあるなら、ネットワークの部分にも知っておくべきです。
これらの知識は10年後、20年後にも使える知識ですし、これらの知識をしっかりと身につけておけばエンジニアとしての価値も間違いなく上がります。
また、そういった基礎が身についていれば最新の技術をキャッチアップするのがかなり速くなります。
ではそれらをどうやって身につけるか。
周りに手取り足取り教えてくれるメンターのような方がいるのであれば、その人から学ぶのが一番です。
しかし、そのような人が周りにいないなら本から学ぶというのが最善です。
本にももちろん流行り廃りがありますが、中にはずっと読み続けられる「名著」があります。
そのような本こそ、まさに長年使える基礎知識・基礎技術を身につけるためにぴったりの本です。
今回はエンジニアが必ず読むべき本を5冊紹介していきます。
もしかしたら全て読んだことがあるという人がいるかもしれませんが、もし一冊でも読んだことがなければ、ぜひ本屋さんで手にとってみてください。
1, 『リーダブルコード』
エンジニアが必ず読むべき本としてまず最初におすすめしたいのが『リーダブルコード』です。
これはプログラミングを職にしている人であれば必ず聞いたことのある名前だと思います。
もしかしたら一度ぐらい読んだことがあるという人もいるのではないでしょうか。
リーダブルコードは、コードを書く、すなわちプログラミングをする際の作法が書かれた本です。
エンジニアとして働いている人であれば分かると思いますが、エンジニアの仕事の大半を占めるのが他の人の書いたコードを読むという作業です。
そのコードとは、世界のどこかの誰かが書いたコードかもしれないですし、社内の誰かが書いたコードかもしれません。
コードを読んでいると、読みやすいコードと読みにくいコードがあると思います。
その違いは何なのか。読みやすいコードを書くにはどうしたらいいのか。
リーダブルコードにはそのエッセンスがぎっしりと詰まっています。
ただ、「別に読みやすいコードなんか書けなくても他の人が困るだけだしどうでもいいや」と思う人もいるかもしれません。
しかし、それは間違っています。
なぜなら、自分が今日書いたコードというのは、数ヶ月先の自分が読む可能性があります。
読みにくいコードを書くと、未来の自分の首を絞めることになります。
読みやすいコードを書くことで、間違いも減ります。
バグをフィックスする時間はかなり勿体無いですが、綺麗なコードを書いておけばバグが混入しづらく、またバグを生み出してしまったとしても比較的簡単にバグを見つけることができます。
綺麗なコードを書く技術というのは、一度身につけたら一生使えます。
エンジニアとしての仕事の効率を上げるには読みやすいコードを書くというのは絶対に必要になってきますし、読みやすいコードを書ける人はチーム開発でも重宝されます。
もしまだリーダブルコードを読んだことがないのであれば、一度手にとって読んでみてください。
本当におすすめの一冊です。
2, 『Webを支える技術』
エンジニアが必ず読むべき本の二冊目としておすすめしたいのが「Webを支える技術」という本です。
エンジニアとして働くのであれば、「Web」についてはしっかりと理解しておく必要があります。
特にWeb業界で働くエンジニアであればこれは必ず押さえておく必要があります。
Webを支える技術では、Webの根幹とも言えるHTTPの仕組みがかなり分かりやすく、そしてかなり詳しく説明されています。
ブラウザでとあるページにアクセスすると、サーバーからレスポンスが返ってきて描画されますが、この一通りのイベントの中で実際に何が行われているのかということが解説されています。
普通のWebサービスを作る際にこれらの知識は必須となりますし、またAPIを使ったり、APIを実装したりする際にもこれらの知識はとても役に立ちます。
この部分は基本的には変わることはなく、一生使える知識となります。
「Webを支える技術」は、一冊目に紹介したリーダブルコードに比べれば読み応えはありますが、それでも一般的な技術書に比べればかなり読みやすい部類の本と言えます。
類似書も何冊かありますが、読み易さの観点からも、説明の詳しさの観点からも、「Webを支える技術」は群を抜いておすすめできます。
ぜひ読んでみてください。
3,『ネットワークはなぜつながるのか』
エンジニアが必ず読むべき本の三冊目が、『ネットワークはなぜつながるのか』です。
エンジニアとして働く上でネットワークの知識が必要なのか、プログラマーならネットワークの知識は必要ないのではないか、という意見も時々見かけますが、それは半分合ってて半分間違っています。
確かに、上司に凄腕エンジニアがいて、その人の言われるがままに仕事をしている状態であればネットワークについて知らなくてもどうにかやり過ごせます。
しかし、そうでない限りネットワークの知識というのはどこかのタイミングで学んでおく必要があります。
ここでいうネットワークというのは、「TCP/IP」プロトコル、すなわちインターネットの仕組みの部分のことを指します。
ここを理解しているかいないかで、エンジニアとしての価値は大きく変わってきます。
上記の「Webを支える技術」に加えて、この「ネットワークはなぜつながるのか」を読めば、思わぬエラーやバグが発生した場合に、どこに原因があるのかを推測し易くなります。
フレームワークだけを使っていれば問題ないですが、フレームワークから外れた実装をする際にネットワーク関連の知識があると役立ちます。
TCP/IPは、インターネットの正に根幹をなす部分です。
できれば早めに身につけておきたい分野と言えます。
インターネットの誕生以降、この根幹部分は変わっていません。今後もこの根幹は変わらないでしょう。
ネットワークについて学ぶには、「ネットワークはなぜつながるのか」という本の他にも「TCP/IP入門」という本も名著として有名です。
「ネットワークはなぜつながるのか」を読み、その後「マスタリングTCP/IP 入門編」を読むのがおすすめです。
というのもネットワークはなぜつながるのかの方が説明が丁寧で分かりやすいからです。
ただ、既になんとなくネットワークのことを知っているのであれば、いきなりマスタリングTCP/IP入門を読むという選択肢もありだと思います。
4,『 達人に学ぶDB設計 徹底指南書』
エンジニアが必ず読むべきオススメの本の4冊目は『達人に学ぶDB設計 徹底指南書』という本です。
その本の名の通り、この本はデータベースに関する本です。
データベースには色々な種類がありますが、ここでいうデータベースとはリレーショナルデータベースのことです。
最近はNosqlなどが流行り始めていますが、基本はやはりリレーショナルデータベースですし、一般的なWebサイトやWebサービスではリレーショナルデータベースを使うことがほとんどです。
これは今後も基本的には変わりそうにありません。
どのようなWebサービスでも、基本的にはデータベースは必要です。
それにも関わらずデータベースと聞くと苦手と感じる人はエンジニア界隈でも多くいます。
しかし、これはチャンスでもあります。
データベースに関する知識も一度つけてしまえばずっと使うことができます。
『達人に学ぶDB設計 徹底指南書』は、これまでに全くデータベースに触れたことがないのであれば読むべきではありません。
一度はデータベースに触れたことがある人向けの本です。
データベースの設計のベストプラクティスが論理的にかなり詳しく説明されています。
データベースの設計に関する本は何冊も世に出ていますが、『達人に学ぶDB設計 徹底指南書』さえ読んでおけば他の本はあまり読む必要がありません。
もちろん、SQLに関する知識が全くないのであれば、SQLに関する本を一冊読んでおく必要がありますが、SQLをある程度かけるのであればいきなり『達人に学ぶDB設計 徹底指南書』を読んでも問題ありません。
データベース設計というのは、Webサービスやアプリケーションを作る上で最も重要な部分となります。
データベースの設計がうまくできればそのサービスを作るのは簡単になりますが、データベースの設計がうまくいかないとそのサービスは「残念」なものとなっています。
上で紹介した『Webをさせる技術』や『ネットワークはなぜつながるのか』に比べると、『達人に学ぶDB設計 徹底指南書』はかなり実践的で、明日からすぐに使える知識と言えます。
それでいて長く使える知識なので、ぜひ読んでみてください。
ただ、だからと言って『Webを支える技術』や『ネットワークはなぜつながるのか』が劣るわけではありません。
どちらも一生使える知識を身につけられます。
長い目で見たら『Webを支える技術』や『ネットワークはなぜつながるのか』の方がもしかしたら「使える」と言えるかもしれません。
ただ、今回紹介しているのはたった5冊ですし、個人的には時間があれば全て読むべきだと思います。
5, 『なるほどデザイン 目で見て楽しむ新しいデザインの本。』
エンジニアが必ず読むべき本としてここまでは「エンジニア」らしい本を紹介してきましたが、最後の一冊としてデザインに関する本を取り上げたいと思います。
エンジニアがデザインを学ぶ必要なんて全くない、という人の意見も分かります。
デザインはデザイナーに任せ、エンジニアはデザインには一切触れるべきではないという意見もあるかと思います。
そもそもエンジニアとして働いている人の中には、デザインが苦手という人が少なくありません。
しかし、最低限のデザインの知識を学んでおくことは間違いなく意味のあるものとなります。
エンジニア自らがデザインを行う必要はありませんが、デザインを見てそれが良いデザインであるのか悪いデザインであるのか、自分の中に判断基準を持っておくことは非常に重要です。
デザイナーとコミュニケーションを取れるというのは、他のエンジニアとの差別化にもなりますし、プロジェクトを円滑に進めるという意味でも非常に大事になってきます。
また、個人で開発する際など、デザインもできれば全てを一人で完結させることもできます。
仕事以外でお金を稼ごうと思っているのであれば、最低限のデザイン能力は必須となってきます。
もちろん、ここまでに紹介してきた4冊の本に比べると、『なるほどデザイン』はそこまで重要度が高くありません。
正直、エンジニアが必ず読むべき本としてデザインの本を入れるべきかは非常に迷いました。
他にも『体系的に学ぶ 安全なWebアプリケーションの作り方』や『オブジェクト指向でなぜ作るのか』と言った素晴らしい本があり、それらを外してデザインの本を入れることに多少躊躇しました。
ですが、これからの時代、エンジニア自身もデザインのことを理解しておくのは重要になってくると思います。
また、デザインの基礎については、一度身につければ一生使えます。
エンジニアであってもどこかのタイミングでデザインの勉強をやはりするべきです。
もちろん、デザインを本業としない人がデザインを学ぶというのは簡単なことではありません。
ですが、『なるほどデザイン 目で見て楽しむ新しいデザインの本。」は、デザインを本職としない人向けに書かれたデザインの本で、デザインについて全く知らない人でもスイスイ読み進めていくことができます。
それでいてデザインの最も重要な原理原則を分かりやすく説明しています。
エンジニアがデザインのことを少しかじるには最適な本です。
パラパラ眺めるだけでも面白いので、プログラミングをしすぎて疲れた時などに軽く目を通して見てください。
最後に言いたいこと
今回、エンジニアが読むべき本として5冊取り上げました。
最後の一冊は例外的ではありますが、それ以外の4冊はこれからエンジニアとして生きていくのであれば本当に読んでおくべき本です。
日々の仕事で忙しくてなかなか技術書を読む時間がない人もいるかもしれませんが、たった4冊だけで、これからのエンジニアの人生がかなり変わってくると思うので、時間を見つけてぜひ読んで欲しいです。
他にもエンジニアが読むべき本というのは何冊もありますが、いっぺんに紹介しても一気に読むことはできないと思うので、今回は5冊だけにしました。
また機会があれば番外編としてあと数冊紹介していきます。
最後になりますが、一生使える知識を、ぜひこのタイミングで身につけてしまうことをおすすめします!