日々の気付きと時々、振り返り

しがないセールスエンジニアが日々考えてることをまとめたもの。

セールスエンジニアになる時に読んだ本など

さて、書く書くと言っていながら全然書けていなかった「セールスエンジニアになる際に自分が読んだ書籍、及び、その時に必要だと感じた知識」について書いてみます。今は実はよりエンジニアの立場になってしまったので、今回の内容とは別に「エンジニアになるために自分が読んだ本、訓練した内容」というテーマが書けるのですが、その辺りはもう少し時間が経ってから書こうと思います。

 

そのため、繰り返しになりますが、セールスエンジニアと、いわゆるソフトウェアエンジニアに求められる条件は微妙に異なり、セールスエンジニアの場合は -- 先に書いてしまうと -- どちらかというと「コンセプト」、つまりは全体像等が肝になり、逆にソフトウェアエンジニアに求められるような専門性の高い細かい知識は  -- もちろんあったほうがいいのですが -- 必ずしも必要というわけではないように思います。具体的には、コンピュータが動いている仕組みやネットワークのオーソドックスな機構、ブラウザのレンダリングの仕組みなど、そうした一般的な知識の有無が鍵になるのではないかと思います。

 

先に結論を書いてしまうと、自分には以下の 3 冊が三種の神器で、結局何度もここに立ち返り、その周辺知識を補う形で学習を進めていました。本当にこの 3 冊にはお世話になりました。

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

 
[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)

[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)

 
マスタリングTCP/IP 入門編 第5版

マスタリングTCP/IP 入門編 第5版

 

そもそも総合的な内容を、しかも、その多くが既に当たり前になってしまった概念を、独学するのはなかなかに掴みどころがなく、苦労した覚えがあります。例えば、元々の私の専門である経済や経営に関していえば、突然「ピグー税」という言葉が出てきても、少し調べれば「ああ、市場の失敗的な話ね」と、より基礎的で大きな概念に紐づけし、一度思考をセーブすることすらできます。その後、少し寝てからもう一度「市場の失敗」という大きめのテーマから落下傘的に学習を再開することもできます。しかし、あまりに基礎がないとそれができません。ページをめくればめくるほど知らない言葉が並び、しかも、それを釘留めするための基盤知識もない。そのため、人生でほぼ初めて「何も考えずに初めから一つ一つ調べて読み切る」という経験をしました。

 

これが独学のつらいところで、例えば、中高大の勉強を振り返れば、教師もいれば、カリキュラムもあり、また、同輩もいるので質問・相談ができます。ただ、独学の場合、勉強の方針や計画から自分で考えないといけません。しかも、実践的内容なので、一般的なカリキュラムも存在しません。そのため、何をしたかといえば、既にその職に就いている先輩と話して、わかった顔をしながら話を進め、大切そうな単語を記憶し、後からその単語で検索し、上位概念を調べ、良質な書籍を探し、買っては読み、買っては読み、照準を徐々に中心点に合わせていくような活動をしていきました。そのため、無駄がひたすらに多く、2, 3 ヶ月で 60 冊ほどの本に目を通しました。本当に無駄が多かったと思います。

 

以下は、その中で自分が参考になったもの、振り返って今にも生きているものを並べてみました。なかなかセールスエンジニア自体を志す人はいないので、ニッチな内容なのですが(まずはプログラミングをできるようになりたいというエンジニア直行型の人ではなく)「技術を理解したい」という漠然とした欲求がある方にもいいかもしれません。基本性質はビジネスの文脈に合わせてテクノロジーを理解したいということなので、そうしたウェブディレクター気質の方にもご参考になるかもしれません。

 

サーバーについて

まずはサーバについて勉強しました。今振り返ると「サーバについて勉強した」という切り口からしてかなり微妙なのですが、当時は「サーバ」が一番よくわかりませんでしたし、色々な議論を統合していく内に、一番自分がわかってないのはここなのではないか?という当たりがつきました。

 

その時に上記の『サーバ/インフラを支える技術』を読み「ああ、サーバというのは様々な役割が適切なソフトウェアによって装填されたマシンのことなんだな」という自分なりのイメージができた気がします。「サーバって何?」という質問が抽象的すぎていい感じの説明が当時見つかりませんでした。とても詳細な説明は自分には濃度が高すぎ、逆にあっさりした説明だと細かいところまでよくわからない、という状況でどうもいい塩梅の説明が見つけられなかった覚えがあります。

 

上記の本に加えて、以下の本は実際の手順レベルまで詳細に書いてあったのでとても参考になりました。

図解でわかる Linuxサーバ構築・設定のすべて

図解でわかる Linuxサーバ構築・設定のすべて

 

 

ネットワークについて

続いてネットワークについてです。大変お恥ずかしいのですが、当時は「OSI 参照モデルなんて本気で考えている人はいるんだろうか」と思っていました。そんなレベルでこのエントリを書いて恥ずかしくないのかというお言葉が聞こえてきますが、はい、大変恥ずかしいです…。その時、上記の『マスタリングTCP/IP 入門編』を読み TCP/IP の基礎的な仕組みなどを理解していきました。自分の師匠がパケット一歩手前まで見るタイプの方だったので、謎に HTTP リクエスト周りのデバッグは得意になりました。

 

ウェブについて

インターネットに関わる仕事をしているので、やはりウェブに関する知識も必要になりました。この時は勉強というか、復習というか、少しふざけたことを言えば、普段自分がユーザとして触れているウェブに対してより解像度高く理解した、くらいに思ってましたが(それでもすごく勉強になった)以下の本を読んだ後だと、ウェブという仕組みがどれくらいエレガントだったのかよくわかります。ティム・バーナーズ=リーはすごいです。これを CERN という、インターネット全く関係ない機関で作り切るのがすごいですね。

Webの創成 ― World Wide Webはいかにして生まれどこに向かうのか

Webの創成 ― World Wide Webはいかにして生まれどこに向かうのか

 

 

ウェブアプリケーションについて

もちろんウェブアプリケーションに関する知識も必要になります。自分は最初に触れたプログラミング言語Ruby だったので、ウェブアプリケーションといえば Ruby on Rails だったのですが、Java にも触れておけ、ということで Tomcat などをインストールしたのを覚えています。その時に(これは後からわかるのですが)Java の開発スタックは歴史と共に発展があり、全貌が(自分には)つかみにくいことを知らず、謎に時間を食ったのを覚えています。ただ、以下の本はわかりやすく、一通りの要点を押さえることができました。

独習Javaサーバサイド編 第2版

独習Javaサーバサイド編 第2版

 

 

OS について

OS の直接の知識が求められることは少ないと思うのですが、やはり何にも関わる基礎的な話なので、わかっていないとつらいです。特に、私がプログラミングを始めた時はとんでもない時間を環境構築に取られましたが、その原因の一つに Mac OSLinux など、基礎的な OS の機構が全くわかっていなかったことが挙げられます。とにかくデバックの当たりがつけられない、エラーメッセージで調べても何言ってるかわからない、の連続で、よく心が折れなかったなと今になって思います。もちろん下に挙げた本だけでは「OS の理解」は難しいのですが、サンデープログラマーのレベルで触れる機会がある、例えば、基礎的なディレクトリ (/bin など) のイメージがわく(≒ ググれる)くらいにはなると思います。実際にはその後 OS 自作に手を出したり、本格的に OS というものへの理解を深めるタイミングが来ましたが、それはもう少し後のお話です。

新Linux/UNIX入門 第3版 (林晴比古実用マスターシリーズ)

新Linux/UNIX入門 第3版 (林晴比古実用マスターシリーズ)

 

* ちなみに OS 自作は以下の本を参考にしました。

30日でできる! OS自作入門

30日でできる! OS自作入門

 

 

ブラウザについて

実はブラウザについては今でも少し理解が怪しいです。いえ、一般的なレンダリングの仕組みは把握しているつもりですし、How Browsers Work: Behind the scenes of modern web browsers なども読みました。ただ、何がどうコンパイルしているのか、例えば、Javascript の非同期の仕組みなどどう実現されているのか(Javascript はシングルスレッド)など、自分でも具体的な質問に落ちないのが歯がゆいのですが、V8 の資料など読まなければいけないのかな、という気持ちになっています。個人的には Chrome の漫画 などが参考になりましたが、それでも謎が解けない部分があります。(* と思っていたのですが、最近 Inside look at modern web browser というとてもわかりやすい資料が出ました)そのような時に、少し違った角度にはなりますが、以下のような本を読んで勉強、というより、推測を強めた記憶があります。

ブラウザハック

ブラウザハック

 

 

データベースについて

もちろんデータベースの知識も必要です。ただ、専門職にならない限り、そこまでヘビーな知識は必要ない気もしますので、基礎的な内容で一旦は十分なのではないかと思います。

達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ

達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ

 

 

DNS について

DNS については今でもなぜそこまで勉強したのかよくわかっていないのですが、周りに大事だという人が多かったので着手し、実際に BIND のインストールと設定(公開はしていない)などを行いました。設定ファイルの記法に妙に癖があると思うのは、私だけなのでしょうか。

 

ネットワークの調査について

セールスエンジニアなので、様々な外部の環境含めた調査が必要な場面も存在します。そうした時に基本的な調査能力が必要になるのですが、もちろんそのままのテクニックは法律的にも使えないものの、思考プロセスなど、以下の本が参考になる部分も多かったです。

ハッカーの学校

ハッカーの学校

 

 

セキュリティについて

また、意図せず脆弱性を作らないために基礎的なセキュリティの内容も押さえていたほうがいいと思います。また、セキュリティに絡みますが、暗号化技術もそういう意味では必要だと思います。

暗号技術入門 第3版

暗号技術入門 第3版

 

 

最後に

意外に淡白にまとまってしまいましたが、振り返るとこの辺りが要点だったかなと思います。もちろんあくまで個人的な意見なので、決して鵜呑みにはしないでください。また、本記事を通じたあらゆる結果について私は責任を負いません。

 

ここからパケットキャプチャリング、OS、コンパイラ、CPU、アセンブラ…と深く入っていき、また、データ構造とアルゴリズムなど、よりプログラミング技巧的な領域にも足を踏み入れていくのですが、それはまたもう少し時間が経ってから機会を見つけて書いてみます。

 

ではでは。