読後レビュー|『世界で闘うプログラミング力を鍛える本 コーディング面接 189 問とその解法』

どうも Nash です。

この記事は下記の本についての書評記事になります。

  • 「世界で闘うプログラミング力を鍛える本 コーディング面接 189 問とその解法」

では見ていきましょう。

この本はどんな本?

この本では、グローバルスタンダードなプログラマーの就活事情の知識とインタビューを通るために必要な知識・技術を取得するための本になります。

具体的には下記のような内容です。

  • コードインタビューのための FW、前提知識としてのデータ構造とアルゴリズムの知識、よく出題される問題とその解法を大量に練習できる
  • インタビュー時に聞かれるより広い範囲の技術的な知識として、システムデザインの知識、どういう観点で回答するべきかの思想・FW を学べる

読んだのは 第 2 刷発行・電子版 ver1.00 です。

この本は誰が書いたの?

著者の Gayle Laakmann McDowel さんはソフトウェアエンジニアとしてマイクロソフト、アップル、グーグルで働き、特にグーグルでは主任面接官の 1 人として採用委員会のメンバーを務めた経歴の持ち主です。

この本から得られること

この本から得られることは一文で言えば本書のタイトルの通りで日本マーケットにおいては下記の観点が特に強いです

  • グローバルスタンダードなプログラマーの就活事情の知識とインタビューを通るために必要な知識・技術

この本はだれが読むべき?

下記のような人が読むのが良いかと思います

  • グローバルスタンダードなプログラマーの就活事情を知りたい
  • プログラマーとして海外企業で働くために必要な知識・技術力がほしい
  • Big Tech(GAFA)の面接傾向などが知りたい
  • データ構造とアルゴリズムについて知らなくて基礎から理解したい

だれが読んだの

わたしの背景ですが、大学では CS 専攻でしたが不真面目だったので全然勉強せずに卒業。そのあと FullStackDeveloper として数年働いている状態です。

仕事での開発については特に問題はないのですが、やはり日々「きちんと CS を学びなおしたい!」と思っていて、プライベートな時間で本を読んでみて独学をしている状態でした。

そのため過去に下記の本を読んでいるのですが何度も挫折してる状態です。

  • 「なっとく!アルゴリズム」(データ構造とアルゴリズムの入門書としておすすめ)
  • 「問題解決力を鍛える!アルゴリズムとデータ構造」(2 回挫折)

また時期的に北米に来ていて、これからこちらで就活をするのでその準備時期にこの本を読んでます。

書評

では、自分が読んだ結果の評論や得られたことなどを書いていきます。

Big Tech の面接傾向がわかる

各企業ごとに Big Tech の面接に関する特徴を知ることができます。

日本でいうところの GAFA ですが海外では BigTech と呼ばれるような企業ですね。本書では序盤のパートにて、各 Big Tech ごとにどのようなことを面接で聞かれるかなどの傾向について説明されています。

仮に BigTech への面接する予定がない人でも世界のトップ企業である各テック企業がどのような面接でどのようなことを候補者に求めているのかを知るのはテック産業で働いている 1 人のエンジニアとして大事なことかと思います。

ガラパゴス化している日本のテック系の就活事情が理解できる

本書を読むことでグローバルスタンダードな IT エンジニアの就活事情が理解できます。

実際にわたしも、正社員・フリーランスとして日本で就活・仕事探しをしてきていて、現在は北米などで就活をしている経験をしています。この経験からも、もちろんすべてではないですが大半の日本のテック企業での就活はすでにガラパゴス化している上、それだけでなく多くの日本のエンジニアもそれに気付いていない、と思うようになりました。

本書を読むことで、日本とグロールスタンダードな就活事情の差分を理解できます。少なくともきちんとその違いをきちんと抑えておき必要に応じてその差を埋めていくことは、長い目で見たときにもエンジニアのキャリアにおいて特に大事になるかと思っています。

シンプルかつ多種な時間計算量ドリルがありがたい

時間計算量についての良問がわかりやすい解説付きで大量にあるのがほんとにありがたいです。

他のアルゴリズム本だと時間計算量を求める内容が学問的で、つまり数学に馴染みがないと理解するのがツライです。過去にアルゴリズム本を読みましたがほぼすべての時間計算量の説明箇所で何言ってるかぜんぜんわからなくて心が折れてきました。

その点、この本では時間計算量の練習ドリルとしてシンプルかつ多種な問題が丁寧な解説付きであります。個人的にはこれだけのためにこの本を購入してもおつりがくるくらいだと思ってます。

コードインタビュー時のベストプラクティスな FW がわかる

コードインタビューを実際に受けるときにどのような FW に則って回答していけばよいかが理解できます。

「コーディングインタビュー」について誤った認識としては「問題を解ければ合格できる」というものです。 もちろん、出題される問題を解くということも大事ですが、それなら LeetCode のように機械的に問題を解かせれば良く、そうではなくてなぜインタビュー形式であるか?という点が大事です。

つまりコードインタビューでは暗黙的な理想的な振る舞いが存在します。日本的に言えばおそらくコミュニケーション能力が近いですかね。具体的には「いきなり解き始めない」「質問して問題の前提条件を明らかにする」とかですね。

この本では、コードインタビューにおいてどのような流れ・振る舞いで進めるかを体系だった FW 化して解説されています。そのため、どのようなコーディングインタビューだとしてもこの FW に沿えば、インタビューにおける振る舞いとしてはほぼ理想的な行動が取れるはずです。

面接で必要になる CS 基礎を網羅している

面接で問われたり、そもそもコーディングインタビューで解くために前提として必要な知識についてわかりやすくかつ全体を網羅して解説されています。

知識としては、基礎的なシステム設計に関する理解できます。もちろんより詳しく理解する場合はこの本で解説されている内容を更に調べていくことも必要ですが、とはいえ必要となる基礎的な知識の解説がわかりやすくかつすべて網羅しているように感じました。

データ構造については、概念・コードレベルで1つ1つわかりやすい説明がされています。HashMap / LinkedList / Queue / Stack などの各種データ構造についてです。ちなみにコードインタビューにおいてはこれらの知識を知っていて、トレードオフを理解し、実際のコードレベルで使いこなせていることは前提条件です。

本の半分以上が問題に対する解法の説明

コーディング面接 189 問と本書のタイトルになっている通り、かなりの数の問題・回答が丁寧に説明されてます。

本書の前半のパートでは全体的に技術的なナレッジ・システム設計などに関して理解を深めるパートです。それ以降はほぼほぼ問題ドリルとしての本です、最後に少しだけ高度な問題などが補足で説明されているような構成です。

タイトルをよく読んでいなかったのでこの本の半分以上を使ってコーディング問題・解法を説明しているとは思ってなかったので、これに気付いたときはびっくりしましたが、かなり丁寧かつわかりやすい説明が行われているように感じました。

読みやすい日本語になっているが細かな翻訳ミスは多い

全体的に読みやすい日本語で書かれている印象でした。

この本はもともとは英語で書かれた本を日本語に翻訳されている本書です。日本語でのわかりやすさで考えると、個人的にはかなりわかりやすいと感じました。

ただ、本書全体を通してですが細かいレベルでの誤字などが散見される印象は持ちました。とはいえ、細かいレベルでの誤字などなので脳内補完すれば読む上ではほぼ問題はなく、前述していますが日本語自体はわかりやすい文章になっていると感じたので問題はないかと思います。

ほかの本と比較

この本ではグローバルスタンダードなコードインタビューを突破するための本です。それはつまりデータ構造とアルゴリズムを理解していて、その上で出題される問題を解くことができることという観点はかなり大事になってきます。

そのため、データ構造とアルゴリズムをきちんと理解したい人にもこの本は特におすすめです。 具体的には「なるほど本」の次に読むのがちょうど良いかもしれないです。ミドルクラスのエンジニアなら、「なるほど本」は飛ばしてこの本から始めても問題ないかと思います。それくらいこの本は全体を通して丁寧でわかりやすい説明がされていました。

以前にわたしはコードコンテスト系の本を先に読んでいたのですが、正直難しすぎて何度も挫折しましたのでコードコンテスト系の本から入るのはあまりおすすめしてません・・・。

本書のほうがより難易度が低めかつ大量の練習問題と丁寧な説明がついており、しかも海外企業での就活時に実際に使える内容です。もしこの本で練習を重ね、アルゴリズムなどに興味が出てくればコードコンテスト系の本を読むのが良いかと思います。具体的なコードコンテストの本は下記などです。

おわりに

もう少し早くこの本をよめば良かったと思わせてくれる良い本でした。

世界的に見てもこの本がプログラマの就活時の必須本になっていることからも、そのことがよく理解できます。

エンジニアとしてのキャリアを考えて、個人的にぜひ読むことをおすすめします。

この本から得られること

  • グローバルスタンダードなプログラマーの就活事情の知識とインタビューを通るために必要な知識・技術

この本はだれが読むべき?

  • グローバルスタンダードなプログラマーの就活事情を知りたい
  • プログラマーとして海外企業で働くために必要な知識・技術力がほしい
  • Big Tech(GAFA)の面接傾向などが知りたい
  • データ構造とアルゴリズムについて知らなくて基礎から理解したい