未来のいつか/hyoshiokの日記

hyoshiokの日々思うことをあれやこれや

プログラマの仕事

不思議なことに日本ではソフトウェアの生産工程を設計、コーディング、テストなどとわけて上流工程〜下流工程として上流が偉くて下流は偉くない。上流をプロジェクト・マネージャー、コンサルタントが担い、下流プログラマが担う、そして給料は上流が高くて下流が低いみたいな伝説がある。(過度な類型化による議論)
オープンソースの場合設計、コーディング、テストを分業して別々の人がやると言うことはほとんどなくて、一人で設計して、コーディングしてテストしてデバッグしてリリースする。一人が全工程を見るのが一般的である。コーディングと設計は不可分だしテストとデバッグそしてコーディング、設計というのは行きつ戻りつの試行錯誤のプロセスなので分業するメリットは全くと言っていいほどない。コーディングする力がなければどんないいアイデアを持っていてもオープンソースのコミュニティでリスペクトされるのは難しい。コーディングする力があればバザールモデルで多くのアイデア、改良が得られる場合がある。コミュニケーション力、リーダシップがあれば自分のコードを雪ダルマ式に膨らませることができる。
日本のソフトウェア産業の競争力を奪ったのは工程の分離だとわたしは思う。コーディング経験のない人間が設計をしてはいけないし、設計力のない人間がコーディングをしてはいけない。ソフトウェア製品を開発する人間は顧客の要求を理解し、それを外部仕様にまとめ、実装できる(コードを書く)人間でなければいけない。
シリコンバレーの競争力のあるソフトウェアを開発販売している会社の多くは設計者がコードを書く。そしてそうでなくては、環境の変化、顧客の好みの変化、マーケットの変化、とにもかくにも変化に強いソフトウェア製品をタイムリーにマーケットに出すことはできないのである。変化に対応できたチームだけが生き残る。
日本と言う地域に必要なのは評論家面したコンサルタントではなくスーパープログラマだとわたしは思う。