キャリアの出発点に立ったソフトウェア開発者の大半が犯す最大の誤りは、ソフトウェア開発のキャリアを事業(ビジネス)として扱っていないことだ。自分を事業者としてとらえることは、自分という「事業」のために優れた判断を下すためには欠かせないものである。一時的なキャリアとして、特定の会社の従業員になるのは悪いことではないが、その肩書が自分のキャリアを表していると考えてはならない。自分のことを、会社に依存する力のない存在と捉えるのではなく、自律的で自由な存在だと認識するべきである。
とはいえ、自分自身を「事業」だと考えるだけでは大した意味がない。重要なのは、自分という事業を構成するものが何か、きちんと考えることだ。ソフトウェア開発者の場合、提供しているサービスはソフトウェアを作れる能力である。だからこそ、あなたはその価値がどのようなものなのか、そしてその他のソフトウェア開発者たちとあなたがどう違うのか、しっかりと伝えられるようにならなければならない。
自分の仕事はコードを書くことだと思っているなら、それは考えなおすべきである。なぜならソフトウェア開発者としての大半の仕事は、ほかのあらゆる職種と同様、人と接することだからだ。優れたソフトウェア開発者になるためには、人とうまく接する方法を学ぶ必要がある。
特に、ソフトウェア開発者は、すべての人が論理的な視点から物事を考えると思い、しっかりとした論理であれば、他人はあなたの考え方を否応なく受け入れるという誤った思考に陥りやすい。しかし、人は本来、非常に感情的な生き物であることを思い出さなければならない。
そういうわけで、紛糾するような議論はなんとしてでも避けたほうがいいだろう。話し合いの内容が、自分にとっては大した意味がなくても、他人にとっては大きな意味を持っている場合もある。自分がいったん諦めることで、相手に貸しを作ることもできると考えよう。このような社交術は今すぐ身につけるべきだ。人と気持よく接する方法を学べば、人生はずっと楽しいものになる。
世の中のほとんどのソフトウェア開発者は、どのプログラミング言語を使うかによって、それぞれの専門分野を定義する傾向にある。しかし、それだけでは何を専門としている人なのか見えてこない。プログラミング言語は、単に仕事をするときに使うツールにすぎない。
特定分野を専門とすると、その専門分野に押し込まれて、多くのチャンスを見逃すことになると恐怖する人は多い。確かに専門をもつことによって、一部のチャンスが閉ざされるのは事実だ。しかし、専門を持てば、それ以上にチャンスが広がることのほうが多いのもまた事実である。実際、なんでもこなせるジェネラリストになれば、さまざまな顧客に対応できるようになるかといえば、そうではない。ジェネラリストに注文を頼んでくる顧客など、スペシャリストが必要だということもわからないぐらい事情に疎い人々ぐらいである。
ソフトウェア開発者の専門分野はたくさんある。だからこそ、自分がどんなタイプのソフトウェア開発をしたいかをまずはっきりさせておこう。どこまで専門性を限定するかは市場規模によって決まるが、できる限り絞りこむようにしたい。そうすれば、その市場でのあなたの需要はとてつもなく高くなるはずだ。
ほとんどの面接官は、技術以外のあらゆる要素に基づいて人を採用している――この事実を理解し、面接官に気に入ってもらうことが、面接で「合格」するための手っ取り早い方法である。その意味で、戦いは面接前からすでに始まっている。
著者が希望する会社に入社した時の手段は以下のとおりである。
3,400冊以上の要約が楽しめる