優れた開発者の条件

周囲にはいろいろなソフトウェア開発者がいるけれど、彼らを観察していると、優れた開発者にはある共通の性質があることに気づく。例えば、こんな感じ。

  • 質問ができる
    渡された資料を噛み砕き、関連する情報を集め、何を作るのか認識できるくらいなら普通のレベル。優れた開発者は、そこから自分がやるべき事について意図を説明できるし、確認のための質問もたくさん出して来る。質問の量とソフト開発の実力は、そのまま比例するのではないかと思う位だ。逆に言うと、何も質問をしてこない開発者は、自分だけの理解で満足してしまっているので、その理解を他人に確認してもらうこともなく、要求されたものとは全く異なるものを作ってきたりする。
  • 大局的なモノの見方ができる
    どうでも良いことを細かく突っ込むことが出来る人は多いけど、そのスタンスから一歩引いて広い視点から見た場合の課題を指摘できる人は少ない。例えば、過去に発生した障害を教訓とするのならこう変更すべきとか、今後の拡張性を考慮すればこのような設計をしておく必要がある、なんて言えるのは広い視野を持っている証拠だろう。マクロな視点とミクロな視点を上手く切替ながら、同時に多方面から考えられるのはスキルの一つだと思う。
  • 問題の切り分けができる
    障害が見つかった場合、その原因を突き止めるために何をすべきか、何が不要で何が必要なのか判断できるのは、優れた開発者の証拠。力ずくでログファイルを解析したりデバッガに頼る前に、状況証拠から合理的な推論を下すことが出来るし、その推論に従って検証作業の優先順位を決めたり、作業の方針を決めることが出来たりする。問題の切り分けが出来ない開発者は、いつも大きな問題に正面から体当たりして、無駄な作業をすることが多いようだ。

考えていくとまだまだ出てきそうな気はするけれど、今回はここまで。