建設現場とソフトウェア開発

毎朝、ビルの建設現場の横を通って出勤しています。
ちょうど朝礼のときらしく、ラジオ体操やスローガンの唱和をやっていたりします。

ソフトウェア開発は建物建築に例えることが多いと思います。「家を建てるなら…」みたいなたとえ話はソフトウェア開発を理解するのに役立ちます。

建築業とソフトウェア開発の相違点を考えながら、ソフトウェア開発者としてどうあるべきかを考えてみたいと思います。

シビアな建設現場

建築現場というのは非常にシビアな職場だと思います。ひとつ間違えば、ケガや事故につながりますし命の危険もあります。また、基本的に外気にさらされるわけで、夏は暑く冬は寒い。雨も雪も降りますね。

そのような中で、気のゆるみ、自分勝手な行動といった類はあってはならないことだと思います。体調不良なら休まなければならないですし、休まないように体調管理もしっかりしないといけません。睡眠不足で注意力散漫もありえないですね。

実際に建築現場で働いたことはないですが、シビアな世界であることは容易に想像できます。

快適なソフトウェア開発現場

一方で、ソフトウェア開発の現場というのはどうなんでしょう。

ミッションクリティカルなシステムの場合は企業活動に影響を与えることはあるでしょう。引いては、人命に関わるトラブルや社会全体に波及する大事故につながる可能性もあります。しかし、多くのソフトウェア開発現場ではそういうリスクをもったシステムを対象としていません。
また、システム開発途中の設計、開発、単体テストといったフェーズではミスが即座に事故に結びつくといったことは少ないです。手戻りが増えるくらいでしょう。

オフィスも節電中とはいえ、屋外に比べると快適な環境に違いないですし、基本的に座り仕事です。また、二日酔いや寝不足で判断力が低下していても、やる気がなくても、なんとかなるものです(正確にいうと、仕事をしていないのですが)。

例えること自体がおかしいという意見もあると思いますが、建築現場に比べると、なんて楽な環境なのだと改めて思ってしまいます。

お給料に見合った仕事、できているか

それでいて、お給料をどれだけもらっているかという話になると、ソフトウェア開発者はおそらく建築現場の大工さんと同じくらいかそれ以上のお給料をもらっていると思います。

ホワイトカラー・ブルーカラーという話になると思いますが、同じものづくりに携わるものとしてどうなんだろうと思ってしまいます。大工が筋肉痛になるくらい、システムエンジニアが脳みそフル回転しているのか。緊張感をもって仕事できているのかと。

頭を使わない知的労働者

要件や仕様を理解せずに、設計する。似たような画面や機能をコピペして、部分的に切り貼りして実装する。設計書に書かれたとおりに、そのままプログラミングする。

そういう行為というのはソフトウェア開発ではよくあることで、いちいち考えたら納期に間に合わないというのもある程度理解できます。また、標準化・共通化という大義名分のもと、なにも考えさせない・余計なことはさせない。そうすることで品質確保やリスク軽減をはかるプロジェクト管理も管理者としては大切なことです。

でも、それってどうなんでしょう。知的労働者として。
何も考えずにキーボードを打っているだけなんて、知的ではなく肉体労働ですよ。

ソフトウェア開発者としての立ちふるまい

たとえ、決まりきった作業が指示されたとしても、工夫をこらして生産性を向上させたり、質をよくしたりすることはできるはずです。少なくとも、建設現場に比べれば、ソフトウェア開発では個人の創意工夫は反映しやすいはずです。

その創意工夫が失敗したとしても、ケガするわけでも、事故が起こるわけでもないです。費やした時間以上の知識や経験が身につくはずです。ソフトウェア開発者はもっともっと努力しなければならないと思います。自分の存在価値を生み出すために。