3.答えの探し方を知っている
答えを調べるということには、検索エンジンにキーワードを入力したり、Stack OverflowやMSDNのフォーラムに質問を投稿する以上のことが含まれる。私は、検索エンジンで調べても分からず、Stack OverflowやMSDNのフォーラムに質問を投稿しても回答らしいものが得られない場合でも、問題を解決して先に進んできた。私は魔法使いではない。ただ、答えの探し方と、原因の見つけ方を知っているだけだ。
多くの問題は状況に依存しており、検索エンジンやフォーラムに頼っても、時間を無駄にするばかりで、回答は最後まで得られないかもしれない。原因を特定することを学び、基盤となっているシステムについて十分に知ることにより他の手がかりやソリューションを探せるようになること。また、問題に深く立ち入る前に、広い見地から検討できるようになることだ。
4.情熱を持っている
仕事を愛していなければ、この職業でトップに上り詰めることはできない。「単なる仕事」として働いているよいプログラマーもいるが(私もそうだったことがあった)、そのような取り組み方をしている限り、成功するために必要なことなら何でもするということはないだろう。この考え方を自分に対する個人攻撃だと感じて、腹を立てる人は多い。「私はよいプログラマーだが、ほかにも優先すべきことはあり、人生を仕事に賭けることはできない」という考え方はよく分かるし、私にもほかに大事なことはある。しかし、これを言うのは好きではないのだが、仕事に情熱を燃やしているときは、私は進んで(喜びはしないものの)仕事を終わらせるために、ほかの大事なことを犠牲にする。「全力を尽くさなければベストにはなれない」というのは、誰かを攻撃しようとして言っているのではない。単なる事実だ。
また、プログラミング以外にも情熱を傾ける必要がある。自分の仕事、使っている技術、雇い主、プロジェクトなど、さまざまなものを愛していなくてはならない。プロジェクトが嫌いであったり、気に入らない技術を使っているなど、何か合わないところがあって、非常に優秀な、あるいは偉大なプログラマーが平凡なレベルの仕事しかできていないのを見たことがある。私自身がそうだったこともあるし、そういう開発者と一緒に仕事をしたこともある。どちらの側に立っていても、これは嫌なものだ。もし自分がそういう状況にいることに気づいたら、その仕事のよいところを見つけたり、喜んで関われるプロジェクトを見つけたりすることでその状況を解決するか、そこから抜け出した方がいい。そのままなら、その仕事は続ける価値がない。
5.エゴを捨てている
多くの開発者は自意識が大きい。誰かよりもより賢く、より知識が多く、より経験があるということは、あなたがその人よりもましな人間だということを意味しない。他の人には敬意を持って接し、その人の意見を聞き、本当によく検討して、必要な時には助けを求め、誰も見下すべきではない。また、自分の仕事が認められることよりも、チームの成功を気に掛けるべきだ。