「あるだけ、まし?」 …… 否、あるだけ、拙い!

 
で、でたぁ〜〜。


「自分たちでやろう! 」 「 やろう! 」「 有志でやろう !! 」で集まって、
始めたとたん、
「やってもらえば済むぅ〜〜 」「 やらせれば済むぅ〜〜 」


挙句が、「 やってくれなないから、出来ませんでしたぁ〜〜 」


…… ならまだしも、
『自分たちでやろう』という意欲と覚悟の有志で集まったはずなのに、
「 やる人が足らなくて困ってますぅ〜〜 」 って …… 凸(-_-# 。


凄いです。


” 『 困る 』 ための担当者 ”は居るのに、 『 やる人 』 がいない …… というのは …… 凸(-_-# 。


参加する前に、何のために参加するのか考え直した方がいいと思いますよ。はい。
周囲や部外者、他人の足を引っ張らないためにも、その世界から居なくなって欲しいですよ、はい。

www.pro.or.jp


http://www.pro.or.jp/~fuji/mybooks/okite/okite.7.4.html  .

まったくの新規開発の割合はどんどん減っている。一番多いのが、既に開発されているプログラムになんらかの手を加える仕事である。コンピュータがどんどん変化していくので、その変化にプログラムの方を適合させる仕事は特に多い。


こういう時には、過去に自分または他の誰かが作ったプログラムを修正したり、付け加える部分を既存部分と適合するように作る訳だ。既存プログラムが現状にそぐわなくなっていれば、そのプログラムも修正する。


こういう仕事は、元のプログラムの品質で作業効率が目茶苦茶違う。元が良い場合には、非常に楽である。しかし、元が酷いと、とんでもない苦労をさせられる。元のプログラムを捨ててしまって、新規に作り直した方が、遥かに楽なことが良くある。


でも、捨てることは、まずない。捨てられない事情がある。今までに費やした工数、費用がもったいないのである。なんとか今までの成果を利用しようと悪あがきをする。そうして泥沼状態になっていく。過去の費用は重要であるが、未来の浪費は構わないのだろう。今までの失敗を授業料と考え、これからのことを考えるべきだと思うのだが、そういう判断が下されることは希である。


したがって、既存プログラムに関連する仕事の場合、元のプログラムの品質を見てからでないと作業量は全く予想がつかない。しかし、一般に、受注金額が決まって、契約が行なわれないと、プログラムはやってこない。だから、プログラマは、プログラムがやってきた時、こわごわと覗き見る。汚ない下手糞なプログラムだったら、その日から何ヵ月も苦闘の日々が続くことになる。
「馬鹿!アホ!間抜け!とんま!」
とか呟きながらの作業が続く訳だ。


スーパー下手糞なプログラムの改造の仕事を受注したことがある。まあ、かなり下手だろうことは予想していたから、それは問題ではなかった。改造の範囲は決まっているので、たとえどんなに下手糞な作りになっていても、もし改造の範囲外だったら、そのまま手をつけないことにしようと決心した。


腕の良いプログラマは、ついつい悪い個所を直してしまう。技術者魂に忠実で良いことであるのだが、そんなことをするくらいなら全部最初から作った方が良い場合が多い。だから、悪い個所は、悪いままにしておくことは、重要なことなのだ。


さて、プログラムを改造するとき、まず、作業範囲内か範囲外かがはっきり分かるように、プログラムを分離する。これは、ついうっかり範囲外のプログラムを見て、気分を悪くしたりしないためである。万一間違って修正を加えだしたら泥沼になるからだ。


プログラムの改造が進んで、テストの段階になった。こちらが修正した部分は、新しいコンピュータの画面から色々な操作ができるようにすることであった。コンピュータ内部のデータの加工、修正などはこちらの仕事ではない。しかし、困ったことが起きてしまった。データ加工の時間があまりにも長いのである。画面上のボタンを押しても、結果が表示されるまでに何十分もかかる。これでは、テストなど全くできない。


テストできないのでは、こちらの作ったプログラムの仕事は、いつになっても終えることができない。やむを得ず、どうして驚異的に遅いのかを調べた。理由は分かった。手をつけないことに決めていた部分に、無茶苦茶に下手糞な信じられないような部分があり、猛烈に遅くなっているのが分かった。本来、この部分に手をつけるのはこちらの仕事ではないので、発注元に連絡して、非常に遅いことを訴えた。
「遅いですね」
という相づちを打ってくれたが、それ以上は駄目だった。


元のプログラムを作っていた人たちは、どうやってテストをしたのだろうと考えてしまった。まあ、こんなに時間がかかるのだから、テストを放棄したのは想像できた。


元のプログラムに問題があるのだから、元のプログラムを作った側の責任でプログラムを修正するのが道理である。しかし、相手には、とてもそんな実力がない。どうせ、何を言っても、理屈にならない理屈で、のんべんだらりと逃げ回るだけに決まっている。こちらの作業は止まってしまい、どうしようもなくなっていく。


こういう場合、やむを得ず、仕事の範囲外であった部分にも手をつけてしまう。そうしないと、仕事にならないからだ。越権行為であるが、やむを得ない。相手に修正依頼を出すよりも、自分で修理してしまった方が早い。早いどころか、相手が直したならば、もっと悲惨なことになりそうで怖いのだ。


一回こういうことを行なうと、もうとどまるところを知らない。そうやって、下手糞なプログラム、遅いプログラムも、自然に使い物になっていくことがある。


納品の時に言われた。
「元のプログラムより、だいぶ速くなりましたね」
それで、こちらの方は、
「元のプログラムは、あまりに下手糞でどうしようもなかったし、元のプログラムを作ったプログラマは全然対応する気力および能力がなかったので、ビシバシ書き換えました。元々はそういう予定じゃなかったのですが、おかげで、随分馬鹿げたことに時間を使ってしまったぞ。我々の仕事は、尻拭いでしかなかったわい」
と答えたかったのだが、そうあからさまには言えないので、言葉を慎重に選んで、穏やかに言ってしまった。


どの世界でも、尻拭いという作業は存在する。下手な奴、失敗する奴がいるから、尻拭いは絶対にある。問題は、尻拭いは優秀な人間にしかできないことである。下手なプログラマには、どうやっても責任は取れない。せいぜい、仕事を退くことによってしか責任を取れない。直そうと思って修正を加えると、どんどん症状を悪化させるだけだから、退くことが唯一の道である。作業から離れて、学習にでも精出してくれれば言うことなしだ。


優秀なプログラマに尻拭いをさせるのは、非常にもったいない。尻拭いをするくらいだったら、初めからその人が作っていれば良い物ができる。しかし、優秀なプログラマの多くは、尻拭いに忙しいのである。低レベルのプログラマを早く締め出すのが急務である。