見出し画像

エンジニア初学者が読むべき本 #13

最近、新人が2名入ってきて、ああそうだと思ったネタ。
エンジニアを始めた頃に必ず読んだ方が良いという本をリストにした。

エンジニアでなくても、楽しめる本でもあるため是非参考にどうぞ。

現時点の本の用途

最近はYoutubeをはじめUdemyなどの動画教材、Progateなど勉強サービス、Techcampのようなプログラミング学校などがあり、エンジニアリングの勉強をするという目的で考えると、本をチョイスする理由は減った(十年前ぐらいなどは本しか選択肢がなかった)。

そういう意味で技術要素を学ぶというより、概論や理論を学ぶ事、また電子書籍でも物理本でも参照しやすいので永久保存的な要素で知識を確保する意味で本を買うのが良いと思う。

技術本(Pythonを学ぶみたいなやつ)は、やったことない人が触りとして読む分には良いと思うが、書かれた時期によって、その技術のバージョンが古いことがあり「そんな機能ないんだけど??」と初心者殺しをされかねないので、技術本は陳腐化してる前提で読むか、回避したほうがいいと思っている。

また、技術本を頼るような時は、大体がエラーログを理解したり、情報を検索したり、公式情報を参照したりするのが定石である。本より最新かつ正しいことが多いからだ。
またエラーの場合は、大概同じ事象で躓いている人が世の中にたくさんいるので、QiitaやStackoverflowなどで解決方法が見つかることが多い(但し、コマンドが書いてあったりしても軽はずみに叩いたら地獄を見ることも多いが)。

本の選定基準について

まず内容がそこまで堅苦しくないことは重要。また自身の分野、ウェブ系エンジニアとしての視点で選定している。

一部のオライリー本などは、詳しいものの字体や内容が眠くなるような物もあり辛い人には読めない。また海外著書の翻訳物もたまにひどいものもあり地雷は多い。

その中でもこれは絶対絶対読んでおいてほしい本をピックしている。今日紹介する本の中味が会話内に出てくることはないかもしれないが、知っていて当然の基礎知識になる。

ということで玄人は「そりゃそうだろ」で、素人は「とりあえず読むべ!」となってもらえれば幸いである。


リーダブルコード

☆☆☆☆☆星5つ。
プログラムを書く仕事に従事したばかり、また複数人での開発に入る前には必ず読んでほしい本。個人開発でも読んでおくべき。

「コードは読みやすくあれ」ということが書かれていて、この言葉を誰にも言われず、自然に心で理解できるまで読むべきである。
そして自分が合わせてよく言うのが「数カ月後の自分も他人である」ということ。時期が経てしまうと、自分のコードだったとしても覚えていることは稀である。
「なんだこのクソコード。書いたの誰だよ?・・・俺かよ。」
という古典文学があるほど。
つまり、未来の自分のためにも読みやすいコードを書いておけということ。仲間の為にもなるのだが、未来の自身のためになるので必ず心で理解しておこう。


Webを支える技術

☆☆☆☆星4つ。
Web系エンジニアをやる上で、今どのゾーンの話をしているのか、どのレイヤーの話をしているのかという地図感、関連性を把握しておく必要がある。
クライアント、ネットワーク、サーバの横軸と、抽象、具体の縦軸でどのあたりの言葉を話しているのかがわかる必要がある。似たような言葉とか関連性の高い物はなんだろう?と。

細かい名前や仕様は覚えなくてよい。都度、調べたほうが最新かつ正しい情報なのでは耳タコ。

例えば「ロードバランサー」という言葉を聞いたとする。
”負荷分散”とか”サーバ側への入口にあるやつ”とか”ネットワーク機器”とか。そういう単語や情報がすっとわかれば良いと思う。
全体像をさーっと把握することが大事。


アルゴリズム図鑑 絵で見てわかる26のアルゴリズム

☆☆☆☆星4つ。
開発をする際に知っておくべきアルゴリズム手法がある。

二分木問題とか、グラフの最短経路問題とか、数学的な面が強いがもうちょっとカジュアルにわかる図鑑。絵やフォントが可愛らしいが内容は全く可愛らしくない。こちらも覚える必要はなくこういうふうになっているのかと把握するための本といえる。

データの格納方法や仕様、並び替えは抽出方法などがアルゴリズムであって、欲しい回答(=正しいデータ)を得るための方法全般を指す。

大学にすら言っていない自分や、理数系を通ってきていない人は是非読んでおくべきと思う。


暗号技術のすべて

☆☆☆☆☆星5つ
基本知識から少しずれる。豆知識の方が近いかもしれない。ただ個人的にはすごく面白い本だった。

面白かった言い回しとしては「暗号は絶対に解析ができる」ということ。
ただ検証科目が多すぎて、一つのパスワード解析に◯世紀とかなんか気が遠くなるレベルの時間がかかるため現実的ではないでしょ?と。

また暗号の始まりは、ユリウス・シーザー・カエサルの軍令・伝令に使ったみたいな話も記載されており、へぇボタンを思わず押したくなるような内容が掲載されている。歴史好きにも楽しめる本。
後半はがっつり数学の式が書かれている部分があり嫌いな方は蕁麻疹が出るだろう。

現代の暗号化についてこういうやり方なんだという理解というより、面白かったーという読み物。


エリック・エヴァンスのドメイン駆動設計

☆星1つ。
モデリングの本。登場人物の整理とそれぞれがどういう関係でつながるのか?を整理できない人(=モデリングが苦手な人)は読むべき本。

はっきり言って翻訳者がよくないと思う。「ドメイン」という言葉が悪い。
英語でそのままdomainで英語人であれば違和感はないと思うが日本人が「ドメイン」という文字を見てしまうと「***.comでしょ?」となってしまうので一旦そのドメインという言葉の意味を脳みそからぶっ飛ばす必要がある。

ドメインなんちゃらと書かれてる部分を「モデル」と脳みそで変換すればRailsのエンジニアであれば非常にわかりやすくなると思うが、常にドメインなんちゃらと書かれているので、その都度の脳内変換がわずらわしく全く入ってこなかった。

内容はかなり勉強になるのに日本語にすると糞すぎてイマイチな本。文体が問題ない人や英語書物がいけるなら絶対読むべき本。


番外編

クックパッドを支える仕組み

☆☆☆☆☆星5つ。
全く別の話だが「Webを支える技術」とほぼ同じようなレイヤー軸で、過去(2018年)に、クックパッドの方が社員研修1日目に使っている資料をと公開されていらっしゃる。

今後このスライドが永続的に存在するのかとかは保証しかねるが、内容としては、まさに「Webを支える技術」で把握してほしいような内容がほぼ明記されている。素晴らしい。基本的な部分は陳腐化していないためこちらも見ると良いと思う。お金払っても良いレベルである。


ユーザビリティの基礎知識(U-site)

☆☆☆☆星4つ。
ウェブとかエンジニアとか関係なく、全てのビジネスマンに必要となるスキルだと思うユーザビリティ。

幼稚園や小学校で習った「相手の立場になって考えなさい」。
これこそがユーザビリティの根幹だと思う。
どういう人達(=ターゲットユーザー)に、何をさせるのかを考えて、機能や画面を設計をする必要がある。

UI/UX改善という言葉だけが近年だと独り歩きしているようにも思える。
ユーザーに寄り添った設計、さもターゲットユーザー側に優しくしようみたいなニュアンスを感じる説明も見るが、これは正確には正しくないと思っている。

そのユーザーをスムーズに誘導すること、ターゲットユーザーを罠にハメるための仕掛けが、ユーザビリティの良し悪しであってUI/UXデザイン改善の目的であると思っている。
悪意があるような言葉を選んだが、設計者側の真意はこれのハズである。
この設計者の思惑通りにことを運ばせられるのが大事なことだ。

ターゲットユーザー側はその真意を知る必要も理解する必要もなく、欲しいものが買えた、やりたいことがスムーズにできたという成功体験の演出ができていれば「ユーザビリティが良い」という評価になる。

こういう知識はウェブだけでなく通常のビジネス上でもターゲットユーザーが仲間とか上司とかに置き換えれば、使えるロジックになるため、是非心しておくべきだと思う。


あざした。

元々SEOの人でしたがウェブ関係ならなんでもござれの悪食です。言語、CMS(modxなど)、自転車、サッカー、オウガバトル、WCCF、ミニ四駆、TVゲーム全般、麻雀、武器・銃火器、未来・未知な物に反応します。