アーキテクト > プログラマ ?
情報システム開発を支えるアーキテクトの不足が叫ばれて久しい。ソフトウェア・アーキテクトとは、簡単に言えば、最終的に情報システムを利用するユーザーと、それを実際に開発するプログラマとの橋渡しをする人だ。つまりアーキテクトは、エンド・ユーザーが直面するビジネスの現場と、開発者を取り巻く現場の双方を理解し、双方の人たちとコミュニケーションを図る。
アーキテクトの主たる生成物は仕様書で、これには、エンド・ユーザーの要求を、どうすれば情報システムとして実現できるかという統一的なコンセプトと、開発の方向性が記述されている。具体的な実装方法は、基本的には実装担当のプログラマにまかせればよい。ただし実装手法をプログラマに質問された場合には、その1つの具体案を躊躇なく提示できる必要はある。
全体のコンセプトを決定するわけだから、情報システム開発においては、アーキテクトがプログラマよりも支配的な立場にいるのは間違いがない。しかしこれが高じて、アーキテクトは偉くて価値があり、実装を担当するプログラマは卑しくて価値が低いという間違ったイメージがインプットされつつあるように思う。中国やインドなど、人件費の安い海外に実装を担当させるオフショア開発がこうしたイメージ形成を後押ししている。
日ごろの情報収集や取材で、「アーキテクト育成の必要性」を聞くことはあっても、「プログラマの育成の必要性」について聞くことはほとんどない。
しかしビジネス・ユーザーとプログラマという、価値観がまったく異なる人々をつなぐアーキテクトは、双方の誇りや、不満、痛み、悩みを実感として理解できなければつとまらないはずだ。これには、いったんは双方の現場で泥にまみれる必要があるのではないか。
本当に秀れたアーキテクトを育成したいなら、まずは秀れたプログラマを育成すべきだと思う。目の前にあるシステム開発のコストダウンのために、こうした次世代アーキテクト育成の場が失われることのないようにしたいものだ。