エンジニアとして生きる戦略 -『CAREER SKILLS ソフトウェア開発者の完全キャリアガイド』

本書『CAREER SKILLS』は、ソフトウェア開発者に特化したキャリア戦略についての本である。著者であるジョン・ソンメンズはアメリカのソフトウェア開発者、ソフトウェア開発者やITプロフェッショナルに向けたサイト「シンプルプログラマー」の設立者、ブロガー。最近、日本でも増えてきた発信型エンジニアの元祖的な存在だ。

著者は、プリンターのカスタマーエンジニアからキャリアをスタートさせ、転職や技術ブログなどを通じて著名なソフトウェアエンジニアとなっている。本書ではその自身の経験から、エンジニアのキャリア戦略について説明している。SIerからスタートアアップに転職して1年半ほどの自分にとっては色々と考えせられるものがあった。

本書は、ソフトウェア開発者になる前の学生やキャリアチェンジを考えている社会人からキャリア数十年のベテランエンジニアまで幅広い読者を対象としている。前半は「どのようにエンジニアになるか」をテーマに後半は「どのようにキャリアアップしていくか」をテーマに語られる。

僕にとっては、後半のトピックの一つである「キャリアパスの伸ばし方」は参考になる。特に参考になった箇所をかいつまんで紹介する。

スペシャリストかジェネラリストか

これは長年、ソフトウェア開発者の間で論争を巻き起こしてきたであろうテーマだ。ここでいうスペシャリストは、1つの技術スタックの専門家になることだ。例えば、日本にはRubyの生みの親matzがいることもあり、Rubyのスペシャリストが多く存在する。

一方、ジェネラリストとは、1つの技術にスペシャリストほど詳しいわけではないが、RubyもPythonもフロントエンドもバックエンドもそれなりにできるエンジニアのことである。それらはよく、フルスタックエンジニアとも呼ばれる。

スペシャリストとゼネラリストはそれぞれにメリット・デメリットがあると考えられいる。ゼネラリストは様々なことをできるので企業側としては使い勝手がよく、また技術トレンドが移り変わったとしても対応できる可能性が高い。

スペシャリストは、ある技術に関して深い知識があるので、それが必要な企業においては高単価で働くことができる。しかし、技術の移り変わりが早いソフトウェア業界ではリスクが大きいとも言える。

この難問に著者は見事な返答を寄せて見せる。

全てのスペシャリストがゼネラリストであるのに対し、ゼネラリストは決してスペシャリストではない 

 どういうことだろうか。著者曰く、そもそも分野全体の幅広い知識なしには、スペシャリストになることはできない、ということである。確かにこれは納得できる節がある。僕が知っているRubyのスペシャリストが他の言語に全く疎いということは想像できないし、やろうと思えばフルスタックで活躍できる人材だろう。

故に著者は、読者にT字型の知識を持つように勧めている。T字型とは1つの専門分野とそれに関連する幅の広い知識をさす。彼に言わせれば、ゼネラリストとは、T字の縦の棒がないエンジニアのことである。

でも、専門分野選びに失敗したら?というのが多くの人の疑問である。ここでも著者は明快な回答を用意している。「また新しく専門分野を作れば良いじゃないか」と。なんともアメリカ人らしい考え方である。実際、一つの専門分野を極めた人はすぐ隣の分野の専門家になるのにそう時間はかからないだろう。

なんの専門家になるか

やり直しが効くとはいえ、なんの分野の専門家になるかは非常に重要である。彼は、できるだけ小さくて特殊な分野の専門家となることを勧めている。そのほうがずっと競争が少ないし、簡単だ。失敗したとしても別の方向に進められる。

アプトプットする

専門家になったとしても、それを周知しなければ意味はない。ブログがカンファレンスなどで積極的にアウトプットすることが必要である。これは、最近、エンジニア界隈で耳が痛くなるほど聞く話である。特にyoutuberの勝又さんやiosエンジニアの堤さんといったエンジニアが有名だ。アウトプットには正直言って良いことしかない。知名度を広めるにも役に立つが、それ以上に人の役に立つし、自分の知識の定着にも非常に有効な手段だ。

実際、僕も本書のレビューを書いていて、再度学びになることが多々あったので、これからも頑張ってブログやqiitaを書いていこう...

もちろん、アウトプットなんて知るか、俺はコードだけ書きたいんじゃって職人気質も割と好きだけど