僕は自分は優秀だとは思っていないが、先日、題に書いたことを実感した。

仕事で、昔作ったシステムを使う案件で、例によって、あの上司がひどいポカをしていた。その案件では、ある仕様が追加になっていて、そのシステムはそれに対応していないので、「何とか」する必要が出た。締め切り前なので超短期間に・・・ 何か月も前に受注していたのに、上司はずっと連絡して来なくて、納期直前になってようやく依頼してきたのだ。悪気などではなく、いつものようにキューの底で腐敗させていて忘れたのだろうが、さすがに殺したくなった。

でも、その時はなぜかブチ切れず、「そうですか。じゃあ、まあ、とりあえず工数を検討します(でも、納期に間に合わせるつもりは全然ないから、覚悟しておけよ!)」などと諦め気分で言って、やり過ごした。翌日、仕方なく変更内容を考えて、システムを一緒に作った同僚とやり方について話をしていたら、突然、それまでの方向とは違っていて、「ちゃぶ台返し」ではあるが、とても簡単に対応できそうな案が閃いた。

それで、とりあえず試してみようということになって、やってみたら、みごとに動いたのである。しかも、僕の部分は全く変更なしで! まあ、それだけで完結する訳ではなく、追加仕様をサポートするための、ちょっとした追加は要るのだが、核心部分は作る前にできていたのだ。だから、僕らが作ったシステムは、作る時には全く意識していなかったのだが、非常に柔軟だったということになる。その追加仕様は「逆の想定外だった」とでもいうのか。こういうことは、いつもではないが、たまにはある。優秀な人は、いつもそうなんだろうと思う。

これを上司に報告した時は、彼の鼻を明かした気分で、大変溜飲が下がった。そして、依頼された時にブチ切れなくて良かったと思った。

余談: 「ザクとは違うのだよ、ザクとは!」と思ったのは、残念ながら、その時でなく今である。

ここからが本題で、もし、システムが(良くある話だが)「ガチガチ」で全く柔軟でないものだったら、上のように一瞬では対応できず、1か月とかの工数になっただろう。僕らはフリーじゃないから、工数(工期)が長くても短くても、直接の損得はない(会社や偉い人としては別だし、残業する人にとっては手取りは減るし、評価には関係するだろうが)。でも、フリーのプログラマーだったら、大変な損になってしまう。1か月分のお金が数日分になってしまい、下手したら、「あ、そのまま動くんですか。じゃあいいです」とか「じゃあ、ちょっと直してもらえます?」のようになって、タダ働きになるだろう。

僕らにしたって、こういう「おいしい話」が多いと、上司は更に油断して、もっとひどいことになりそうだから、やっぱり損する気がする。

おかしい。いい物を作ったのに損をするなんて、全くおかしい。

だから、Micros*ftだのAppl*など(いや、日本の有名大手ソフト会社、例えば、あの素晴らしいマイナンバーシステムを構築して大好評の所の方がひどいが)、あるいはそこで働いているフリーの人は、わざわざしょうもないものを作って、仕事を減らさないようにしているのかも知れない。というのは、だいたい半分くらい冗談である。

後日談:

核心部分自体は問題なかったのだが、最終的には、追加仕様をサポートするために、核心部分もわずかに直す必要があった。調査した時は無変更でいいと思っていたのに、念のために最終的な動作確認を進めるうちに気付いたので、ちょっとがっかりした。そして、急いでその対応をする羽目になって疲れた。やっぱり、まだまだ詰めが甘いと思った。でも、確認しておいて良かった。自分で作ったプログラムだけど、何が起こるか分からないものだ。

きっと、すごいプログラマーは、こんな修正すら不要なのを作るんだろうな・・・ (1/28 5:11)

 

PS. こういうのって、プログラミングのセンスとか常識とか経験の問題だと思う。それらを持った人は、無意識のうちに柔軟性のある方式で設計したり作ったりするから、こういうことが起こるのだろう。だが、子どもの頃からプログラミングを教えることが、これに寄与するかと聞かれると、僕は「余り期待できない」と答えるだろう。

理由はいろいろあるけど、まず、先生はそんなの持ってないし、意識もないだろうから、まず教えられないし。。。

PS2. もし学校でプログラミングを教えるとして、その「採点」はどうなるのだろう? 漢字や算数みたいに、ガチガチに正答どおりでないと×になるのだろうか? 例えば、インデントがタブでないとか、空白の数が多いとか足りないとかは減点なのだろうか? あるいは、処理の順序が(動作に全く問題はないけど)「正答」の逆な箇所があったら駄目とか。それから、1ドットでもウインドウの位置がずれていたら駄目とか。。。結構悪夢の予感。(1/28 5:09)

  •   1
  •   2

4件のコメント

  1. エイコ:

    こんばんは。「いいね」「そうね」はあるけど、「そうなんだ〜」とか「へえ!」というのがないから、こういった話の時には、感心はしてもどちらも押せない、ということになってしまします。(笑  そもそも「忘れるために書いています」とおっしゃっているのだから、勝手に読んでいる私は、ほほーうと感心して読み流しておけばいいんですけどね。

    •   0
    •   0
  2. PiuLento:

    ●こんばんは。なるほど。Facebookみたいに、いろいろ選べるといいかも知れませんね。僕はwebの方面は得意でないので、あれを作るのは結構面倒そうです(得意な方だったら、すぐできそうです)。。。

    確かに忘れるために書いておりますが、コメント欄で皆さんの感想を頂いたり、お話するのは楽しいので、歓迎です。

    •   0
    •   0
  3. naoki:

    僕は御存知の通りプログラマーではありませんが,小学校の時に買ったプログラミング入門のマンガを友達から借りて,BASICをMSXで打って遊びました。

    それこそ,学校や,学校の先生が全く関係ないところでの,純粋な興味からの学習で,あれは良かったなあと思います。

    •   0
    •   1
  4. PiuLento:

    ●そうなんです。僕は、それがいいと思うんですよ。子どもがプログラミングを学ぶ意味はあると思うのですが、自分の興味からでなかったら、苦痛でしかないと思います。

    •   0
    •   1

コメントを書く

名前    

メール 

URL