プログラミングできない人を集めて開発するのはさすがにもう無理

NTTデータと真昼の対決 - ひがやすを blog


NTTデータの人とひがさんの話がかみ合わないのは、想定している低スキルプログラマーのレベルがまるで違っているのだと思う。ひがさんは(地頭は良くて)経験が少ない人をイメージしているように見える。まあ分かっててわざと主張してる気もするけど。


あらためて言うまでもないけど、プログラミングって素質がすごく重要な世界なわけで。どうにもかわいそうで、なんとかしてあげたいのに、やっぱりどうしようもないくらいプログラミングに向いてない人っている。学校や新入社員研修で何ヶ月もプログラミングを教わってFizzBuzzが書けないレベルの人をこれまで何人も見てきた。
そんな人でも、プログラムの1行ずつを日本語で説明したような仕様書と、本来の言語機能の一部しか使わせないコーディング規約と、能力に合わせたスケジュールがあれば、最低限の品質つまり保守可能なレベルのソースコードをなんとか書き上げることができる。


NTTデータのような大手SIerは、協力会社からやってくるそういったレベルの技術者を大勢使ってプロジェクトを回してきた。15年くらい前はそれでもやってこれたんだよね。言語に機能が少なくて、ろくなライブラリもない時代、低スキルの技術者でもとにかく数を集めて人海戦術で開発する、というスタイルはそれなりに正当性があった。コストを下げるには安い低スキルエンジニアを使い、生産性を上げるには人数を増やすという考え方ね。


でも今はそうじゃない。ライブラリやフレームワークも充実し、工期短縮や品質向上のノウハウ、設計のパターン・アンチパターンといった情報は調べればいくらでも出てくる。ということは、知識・経験のある技術者とない技術者の差は、昔以上にますます広がってとんでもない状態になっているということ。


ちょっとWebサービスの世界へ脱線すると、政府が数億円かけて開発しようとした犯行予告検知サイトを矢野さとるさんが2時間で作ってしまったって件あるよね。あれは単に政府がバカだというお話ではなくて、ゼロから開発したら数億円かかるようなライブラリがもはや世の中にいっぱい蓄積されていて、それを矢野さんが時給1億円に値する知識と経験と才能をもって使いこなした、ということにすぎない。


だからSIの世界でも、もう少し高スキルのエンジニアを信用して能力を発揮させるようにした方が良いと思う。素質のない人を投入して全体の能力を「底下げ」し、単純労働にまで落とし込んだプログラミング作業を展開するのはさすがにもう無理がある。コストを下げるには少数精鋭で、生産性を上げるには高スキルエンジニアを使う、という考え方にシフトした方がみんなが幸せになれると思う。