常々思っているが

プログラマの管理職はどうしてもソフトの見積もりを出さねばならない。


俺はゲームプログラマのアルバイトをしていたとき(15年前)ソフトはプログラマ1人で1本2ヶ月と、その会社では決まっていた。2ヶ月で1本組む人もいれば誰かの作り捨てを2ヶ月かかって少し改造して続編として出したりといった塩梅だ。出来ないと、クビになるかというと社長はそこまで冷酷ではなく、他のプログラマの2ヶ月分のアシスタントのような役に回され、普通は嫌で自分から辞めるんだけど、しがみついている万年アシスタントの人もいた。


それから設計事務所プログラマーになるが、ここでは最初は上司が出来る分量を新人の仕事として割り振ってくれた。慣れると自分で見積もりを出せと言われ、まあ何があってもコレくらい取っておいたら間違いなく出来るだろうという長い期間を言って、それが通るものだから相当にダラダラできた。これは悪いようで、出来ないという最大の裏切りはしていないから、今にして思うと良い方策だったのではないかと思う。


富士通でとんでもない目に会ったのは以前書いた。


そして今ゲーム開発の現場で見積もりを書く人とプログラムを組む人が違う人で違う頭でやっているものだから、殺人事件が起きそうになっている。プログラマー殺人事件。まあ、死ぬ事は無いかもしれんが誰か倒れたら知らんぞと。


1人で2ヶ月かかる仕事を2人なら1ヶ月になるかというと、大抵の仕事はそういうものなので、プログラムだけ特別で何かそういうふうにできない。この論点で説明にかかるのは俺はもうやめた。コピーロボットのように同じ人間が2人いると、きっと2ヶ月の仕事は2人で1ヶ月になる。(コピーロボットドラえもんの道具だがわからない人はあきらめてくれ)


プログラムと言うのは単式では命令の事だが、手分けするほど複雑なものは計算式であったり手続きであったりするものだ。


数式を2人で解くと仕事が半分になるか。数学の証明問題を2人で解くとして、前半を誰かが証明して、後半を別の人が証明するとなると、2人の答えが同じで、真ん中当たりで辻褄が合わないとマズい事になる。そういう特殊な事情を除けば、計算の分業は出来る。計算結果は連帯責任だが。


手続きを2人ですると仕事が半分になるか。ローンを組んでクルマを買う。片方が借金をしてもう片方がクルマに乗る。借金をした方が丸損ではないか。分けようは借金を半々にせねばならないだろう。ではクルマをどう半々にするか。バラして部品で半分ずつ持つのか。バカバカしい。クルマの取り合いになるのは目に見えている。


そのバカバカしい事が世の中の色々の分野で実際に起こっている。皆与えられた仕事をこなす事より貧乏くじを引かないように牽制し合っている。これはプログラミングに限らない。世の中の分業は大抵はそういうもんだ。これが改善されないと、やがて百姓一揆のようなことが起こっても不思議でない。


俺はせっかくの時間とエネルギーを使ってグチを書いてしまった。俺がプログラムの分業に本当に興味を持ち始めたのは、三目並べの人工知能を考え始めた時だ。三目並べの人工知能は一度負けた手を覚えて二度と同じ手を指さないようにするプログラムだ。このプログラムを一度組み上げたら、誰でも良いからずっと三目並べの相手をさせておいたら、やがてプログラムは最強になる。もっというと、その相手もコンピュータにして延々させることもできる。しかし、プログラムを組む複雑な仕事と、三目並べを遊ぶ簡単な仕事にひとつの仕事を分けれる所が素晴らしいと俺は感動したのだ。


きっと上手いやり方はある。しかし、それが発明されるまでは、やはりバカバカしいやり方が世の中に蔓延して、誰かが貧乏くじを引きつつ、うまく避けたものが胡座をかいて暮らすのだ。おれもなるたけ胡座の側になりたい。