
「エンジニアあるある」第27回
プログラマーの数を倍にしても納期が半分になるわけではない。逆に、プログラマーの数を半分にしても、奇跡的に完成する場合もある!?
エンジニアの方の”あるかもしれない”日常風景をデフォルメしてコメディタッチに描く本連載「エンジニアあるある」。さて、今回はどんな風景なのでしょうか...
☆☆☆☆☆☆
ソフトウェア開発の予算や見積もりでは「人月」という単位を使います。n人のエンジニアがnヶ月働くと完成するという工程数を見積もるためのものです。見積もりも、エンジニアの単価を人月に掛け算すれば出てくるのであちこちで便利に使われています。
しかし、これは元々土木工事の見積もり計算に使われていたものでした。大昔の土木工事は、土砂を運ぶのもネコグルマという人力中心だったので、この人月計算がうまくマッチしたのです。ソフトウェア開発も1人が1日3000行のソースコードを書けるとして、このソフトウェアは何百万行だから、◯人月と、見積もりとしてはかなり正確に計算ができます。
しかし、プロジェクトはそう簡単に進みません。膨大なコードをいったん破棄して、仕切り直しなどということもしばしば起こります。それでも人月計算で定められた納期は守らなければなりません。最近では、苦戦する開発案件が、クフ王のピラミッドの建設の推定値20万人月を超えたところから「クフ王越え」などと揶揄されたこともあります。
この人月計算は、エンジニアの労働環境を悪化させる原因になっていると批判されていますが、算出法自体は優れているため、プロジェクト開始前の大まかな見積もり計算にはいまだによく使われています。
しかし、非エンジニアの人は、この人月計算を勘違いしてしまいます。よくあるのが「プログラマーの人数を倍にするから、納期を半分に短縮してくれ」という無茶な注文です。確かに人月計算上は合っていますし、土木工事のように作業の標準化が進んでいる世界では昼夜二交代にすることで納期の短縮は不可能ではありません。でも、ソフトウェア開発では絶対に無理。それが理解されません。
しかし、一方で、なんらかのアクシデントがあって、エンジニアの数が半分になってしまったような崩壊寸前のプロジェクトでも、エンジニアたちはなんとか納期に仕上げてしまいます。これは奇跡のようなことで、エンジニアチームの超ファインプレーなのですが、非エンジニアには「やってみればできるじゃん!」と受け止められてしまうのかもしれません。エンジニアも、無理なものは無理とはっきり口にするようにしましょう。

自身に向いている職種を考える際には、客観的な視点も欠かせません。転職エージェントを利用して、プロ視点での向き不向きを無料で診断してみませんか?
(イラスト:ConChan)
-----------------------------------------------------------------------------
※「エンジニアあるある」バックナンバーは以下からご覧ください。
- 「1時間の単純作業を5分で終わらせるプログラミングに8時間かける。」
- 「全角スペースと全角の「1」を異常なまでに敵視している。」
- 「自分で書いたコードがなぜ動かないのか理解できないが、うまくいくと、今度はなぜ動くのかが理解できない。」
- 「時折、大きな声の独り言を言って、自分の声帯がアベイラブルかどうかを確認する。」
- 「機械は擬人化して、「この子」と呼び、性格まで把握しているが、同僚のことはオブジェクト化して見ている。」
- 「「サーバー」か「サーバ」かの話で、焼酎3杯は飲める。」
- 「映画の中でハッカーが登場すると、いちいちケチをつける。」
- 「最初は変数名を英語でつけていたのに、途中からローマ字表記になる。」
- 「ネット通販で変わったガジェット見つけるとすぐに買ってしまうが、翌日配送された時には冷めていて、開封するのも億劫になる。」
- 「記憶がないのに、作業が進んでいることがある。」
- 「意味はなくても、季節の変わり目にデフラグをかけ、プロセス画面をじっと見つめてしまう。」
- 「家電が故障すると、直せないとわかっていても中を開けてみる。」
- 「休みの日に出かけても、自然と家電量販店に吸い込まれる。」
- 「あまり健康には興味はないけど、AppleWatchを買ったらジョギングを始める。」
- 「すぐ隣の席なのに、Slackで雑談をしてくる。」
- 「昼食のメニューを決めていて、いつも同じものを食べる。そのメニューが売り切れだったりするとフリーズしてしまう。」
- 「年下年上限らずに敬語(ですます)で話すのに、エンジニア同士ではタメ口。」
- 「社内や取引先の人々を、自分がよく知っているアイドルグループやアニメの登場人物に当てはめて理解しようとする。」
- 「普段はモノを優しく扱うが、会心のコードが書けた時だけ、ビルド実行のエンターキーを強打する。」
- 「会社の外ではプログラマやエンジニアではなく、会社員と名乗る。」
- 「Dを「デー」と読むのが日常の癖になっていて、「デズニーランド」と言ってしまう。」
- 「家族旅行で、どこの観光地を見て回るかを話し合っているうちに、なぜかフローチャートが出来上がっている。」
- 「ソースコードに付けられたコメントを読んでいるうちに、顔も知らないその人に親近感を感じてしまう。」
- 「ぜんぜん逆でもないのに、「逆に言うと」と言ってしまう。」
- 「ループ変数はとりあえずiを使い、足りなくなるとj、kと使うが、さらに足りないとlを使おうとしてなんとなくヤバイ感じがして、iiを使う。」
-----------------------------------------------------------------------------