Second Lifeで気に入ったアイテムの記録です あ、ウソです。スクリプトとか他のことも書いてます

2009/04/18

プログラムについてのどーこーの2

ということで、長くなった前回の続き
あまりにも長いのでいつもどおり動画で癒されてください

前回のhao_yayoiさんの「習熟はしてるのかどうかよくわからない」という部分。
この「習熟」というのをどういうレベルとするのか
また、「習熟」することは、求められているのかという話が、今回のテーマ。

個人的には「普通」に使えるようになれば「習熟」なんじゃねーの?と思うんですが
この「普通」というアイマイな言葉がクセモノです。

マスタークラス(※)を目指すべきなのか
 ※「職人」っすかね。今風に言えばGeekな。
  Wiz的にいうなら、単独で最下層を楽々に歩けるくらい
  Diabloなら、Hell/Hell踏破
  あるいは...

実際、仕事で目にするコードは、ベタベタなものが多いです。
これはメンテナンスを大事にしてという理由よりも
さらに大きな理由があります。

誰でも書ける事

テンプレというかスケルトンとなるコードがあって
それに改造を加え作られることが非常に多いようです。
一から書けるほど習熟してる人が少ないそうで。
(また、人が一から書いたものを理解できる人も少ない)

このやり方は
「世界に冠たる日本の製造業のノウハウを
 適用することで生産性を上げることができるに違いないという発想」(※)に
基づいているんだろうなぁ。
(他にも「使えないやつ」が多すぎて
彼らに「そこまで」求められない現状に対する苦肉の策って面もあるかも)


 ※Rubyの人の「ソフトウェアは工業製品ではない」は
  私としては、ものすごく納得できるし、同意もします。

  完全に余談ですが、
  私の大好きなホーガンの作品に「創世記機械」というのがあるんですが
  この中にも似たような描写があります。


このテンプレ化は、それなりの効果があって
新人さんでも、マシンと化して、次々とコードを生産していけます。
かつ、計画も立てやすく、銀の弾丸も夢じゃないという状態になります
 ※正直「つまんね」と思ったことは隠しません。

ただ、落とし穴もあります。

仕事で、あるチームのお手伝いをすることになり
「郷に入りては」で、そこのお作法に従って、シェルを書いてました。
で、あるエラー処理と思われる箇所がエラー処理になっていない(※)ように思えたので
 ※「ひとつ前の処理の成否が、ある変数に格納される」というシェルの機能で
  それをifで判断しようとしてるんだけど、チェックしたい処理と
  ifの間に別の処理(必ず成功する)があって、肝心の処理の戻り値が上書きされている
それを署名の人に聞きにいくと
「ああ、そこは元からそうなんでわかりません」
隣の席の人に聞いても同じ答。
そのテンプレを提供したその人の先輩に聞いても「前からあるやつなんで(略」

ここで注目したいのは、この質問は、「~だからエラーが拾えてないんじゃないですか」と
理由をつけて聞いてるんですが、その仕組そのものを理解している人がいないことです。
完全に伝言ゲーム状態になってるんですね。
 ※最終的に、責任者に聞くことになり、そのフロアはかなりざわざわする事態まで。
  さすがにその責任者は理解していて「なにー!」となったんですが。
  じゃりんこチエのテツを思い出しましたよ
「次の分から、直したものを使おう」となったというのがオチです

私の思う「普通」ってのは、たとえテンプレを使ってても
こんなことに気づくレベルなんですけどね。
「習熟」って、単に知ってるだけじゃなくて
自分のものとして使えるかどうかってところが大事ですね。

0 コメント: