プログラマではなくテスターとして現場デビューする

http://watanabek.cocolog-nifty.com/blog/2006/01/post_ffa9.html

うーむ,なんでこんなのが人気エントリなんだろう?*1

プログラムがそれなりに完成してしまうとそれで満足してしまって、さっそく次のプログラムにとりかかりたくなる。結局、システムテストの段階でハデにバグが見つかってどれだけ周りに迷惑をかけたかわからない

それは「完成した」とは言わない.*2

新人をまずテスターとしてみっちり仕込むようにしている.

これは必ずしも否定しない.良いコードの持つべき条件にデバッグ可能であること,テスト可能であることというのがある.テスト不可能なコードがいかに悲惨なものであるか身をもって経験することで,良いコードとはどうあるべきか理解する助けになる.

ある意味でテストはソフトウエア開発の根幹を成すものであり,それに魅了される者がいたとしても不思議ではない.ただ残念なことに,その意義を真に理解できる者は少ないようだ.

多くのソフト開発企業での新人教育が何から始まるかというと、大学の一般教養課程のような「コンピュータ概論」だったりする。その後に「ソフトウエア分析・設計」とか「プログラミング」の学びが続く。テストなんて「プログラミング」の最後あたりでちょろっと学ぶくらいだ。

ズブの素人相手の教育の話だな.大学で何年もかけてやることを大幅に削って,3ヶ月〜半年ばかりに短縮しているんだろう.そんな短期間でできることなど押してしるべし.

ちなみに大学においてもテストの科目自体はさほど多くはない.座学としてやるべきことがほとんどないからだ.

そのような学びを終えた新人を迎えて、要員が増えてうれしいと喜ぶ現場なんてほとんどないだろう。

たとえベテランであっても配属されたばかりでは,通常は何もできることはない.「ブルックスの法則」もこれが原因.

いずれにせよプログラミングを習得するには十年はかかる*3.大学で4年+αやってきて,それに加えて現場で実務経験を何年か積んで,ようやくそれなりに使えるレベルになる程度だ.「一流大学卒」などという肩書きはないよりはマシだが,それでもほとんど気休め程度で個人差が非常に大きい.

だから、新人にはテスティングだけをみっちり教えてそれなりの「プロのテスター」になってもらえばいい。

新人でも務まる「テスター」などというのは,テストの中でもほとんどは単純作業の部分に限られるだろう.これは素人のバイトでもできるレベルだ.真のテスターと素人のテスターを一緒くたにするのは真のテスターに対して失礼だ.

何しろ彼らはそれなりに現場で鍛えられたテスト技術を持っているので、バグの少ないプログラムを作ってくれるようになるだろう。

甘いな.

たしかに現場でテストを経験すれば,デバッグし難い設計や役立たずの設計書がどういうものか体験できるだろう.しかし全ての人がそれから何かを学ぶとは限らない.それにそれで学べるのは「質の悪いコードや質の悪い設計書がどれほど悲惨な結果をもたらすか」という惨状だけで,「どうすれば良いコードが書けるようになるか」については何も教えてくれない

なかには独学で良いコードの書き方を学ぶ者もいるかもしれないが,ごく少数だ.おまけに官僚主義の中では,その努力が報われることはない.


スピード違反でトラックと正面衝突してグシャグシャに潰れた死体を,ペーパードライバーにいくら見せても運転は上達しない.ペーパードライバーに*4必要なのは教習所で一から練習しなおすことだろう.

その後でいよいよ「基本設計」や「プロジェクトマネージメント」の学びが始まる。つまり、学んで現場経験を重ねることで、「より上流の仕事」の学びと実務経験の機会が与えられるという「報奨的」な教育体制である。

報償的?懲罰的の間違いだろ.

こんな技術者の墓場に葬り去られるくらいなら,私ならさっさと転職するね.たとえ給料が下がろうと,どれほど仕事が厳しかろうと,そういう地獄で生殺しにされるよりはまだマシだ.

しかもこのカフェテリアは料理を気軽に味わいつつ選べるようになっているため「食わず嫌い」の心配もない。

一口食べただけで,ソフトウエア開発の奥深さを見抜けるのなら,その人は天才だろう.だがそういう天才は,おそらく現場から引き離されて上流工程なぞに放り込まれることを良しとはすまい.そうでない多くの人はあちこちを摘み食いして現場を混乱させるだけ.*5

上記のように「学んでも学んでもまだ他に学ぶべき課題があることを意識させられる体制」であれば安心して教育投資ができる。

心配するまでもなくソフトウエア開発は奥が深い.技術進歩も早いし学ぶべき課題が尽きる心配だけはない.問題なのは,学ぶ環境だ.

上に立つ者が率先して学んでいれば,できる人はその背中を見て真似をする.逆に上に立つ者が何も学ばず,努力もせず,何十年も前の技術で話をする人だと,その下ではいかなる努力も無駄になる.本来なら上に立つものこそが手本になるべく常に学び続けなければならないのに,実際には反面教師になる例の方が多いのではないか?


そういう反面教師の下では,学び続ける人/努力している人から辞めていくようになるのは時間の問題だ.

*1:単にたまたま話題になっただけなのかな?

*2:まるで「鉄筋を減らしてコストダウン」の世界だ.強度が30%しかなくても「完成した」というのかね.

*3:http://www.yamdas.org/column/technique/21-daysj.html

*4:いや無免許かも.

*5:ところで,こういうのが官僚主義の権化「たらい回し人事」というのではないか?そのような「たらい回し」では真のソフトウエア技術者は生まれない.