生産性と教育とIDEの関係みたいなはなし

emacsネタからの派生でもあるんだけれどもね。

「emacs vim を使いこなす」で検索で見つかるこれには共感高し:

vim な人らしい。

ワタシは共感するんだけれど、果たしてこれ、「わかりやすい」だろうか、とも思った。格調高いがために、伝わらないかもしれん、と。

禿げしく同意なのは特に「魔法の裏側/雛形の理解」の部分なんだけどね。ただこれ、emacs/vi 論議とは関係ない。なんならメモ帳でも cat でも ed でもいい。して、このことだけ膨らましてみようと思った。

ワタシの住処が「guruの集まり」だったことは働き始めてからは一度としてなくて、一度でもそういった場所にいた人には共感を得られないのではないかと思うんだけど、「「魔法の裏側/雛形の理解」の欠如」は、ワタシの周りでは、上記引用サイトの方が主張するよりもずっと目先の意味で深刻、だった。「魔法」ですらないような基礎までも理解できぬまま、「ひとまず開発作業だけは進められてしまう」(結果テストの段になってようやく「死ぬ」)若手は、ワタシの周りでは後を絶たなかったが、これが「大企業の大規模プロジェクト」の現実である。SIer は馬鹿の集まりだ、とは良くぞ言ったものだ。

例えば C/C++ で開発するのに、プリプロセッサ・コンパイラ(・アセンブラ)・リンカの知識がなければエラーメッセージの意味さえわからない、というのはこれは当たり前のことだが、圧倒的大多数の末端開発者は IDE の親切に任せ、「闇雲に」記述済みの実装を掻き回す。「おかしいんです!」と。あげくコンパイラまで疑い始める。それがたとえリンクの問題であろうと、本人は気にも留めない。留めるはずがないのだ。「IDEがコードだけ見ろと言っている」のだから。こんなことでは時間がいくらあっても足らん、と思う。これで何日も台無しにする若者は、信じてください、本当に極めて多いのだ。

例えば Python で開発するのに、皆で PyDev 使いましょう、と決めたとする。PyDev がテスト・デバッグ等々開発支援に優れているのは事実とは思うのだが、傍目には、「開発作業が目的化する」のを助長してるようにしか見えなかった。つまり、製品が最終的にどう振舞うのが正解なのかの想像を完全に欠如したまま「作っていた」。言葉変えるぞ。「面白いか? それ?」。IDE 頼みの若者をみて哀れに感じるのはそう、「開発作業」というルーチンと「製品が動作するさま」が乖離してしまうことにあるんじゃないか、と、日々感じていた。

初心者のために IDE、ということについては、ワタシは昔から違和感がある。IDE の作者は本音ではそんなことは考えていないのではないだろうか。IDE がありがたいのは、「IDE が秘密裏にやってくれることが煩わしくて面倒であることを知っている」場合に限る、というのが、昔からワタシが感じていたことである。これは何か問題が起こってからしかわからないことだ。順調に行っているうちはわからない。

IDE がどんなに詳細を隠蔽しようと、必要な知見は同じだ、結局ボトムアップに教育するコストはいずれ発生し、また、それを怠った場合の時間的金銭的損害は甚大である、というのは、おそらくある程度新人教育で苦労した人にしか理解出来ないかもしれない。けれどもこれは本当に事実だ。

発端の、エディタとして何を使うかなんかどうでも良いんだけれど、ワタシは、初心者ほど「低級な開発環境」を一度は経験した方が、成長は結果として猛烈に速いと確信している。というよりは、IDE の知識だけでは永遠に「中級にすら到達しない」と断言したい。

ただしこれは「大企業の大規模プロジェクト」にとりわけ特筆すべき特徴かもしれない。というのも、こういった場所では、設計から製作・テストまで一貫して作業させてもらう方が稀な場合が多く、また、それぞれのフェーズがいずれも数ヶ月・数年といった単位で極めて長いことが多い。このような場合、各フェーズにおける作業に忙殺されるあまり、よほど自覚的に自力で学習しようとしない限り、「次なるフェーズのための」学習機会に恵まれないといったことも起こるうえに、「以前学習したのが一年前」のようなことも大変多くなり、こちらとしては同情したくもなる。IDE 任せで基礎を理解せぬまま開発フェーズに突入してしまった際の弊害が具現化するためには、この「長いブランク」が必要だ。すなわち、前回も闇雲にコードを破壊した経験のまま、今回も同じようにコードを闇雲に破壊する。基礎がなってない、というのはそういうことだろう。

こんなの生産性以前の問題だ、とワタシは思うんだけれど、「質の高い技術者に囲まれた恵まれた一部の人々」には理解しがたいだろうなぁ、これ。

スポーツの世界では基礎体力の重要性は誰も疑わないのだが、どうしてこう、頭脳労働における基礎体力作りは軽視されるんだろう、という疑問に置き換えても良いかもね。IDE では基礎体力は付かない。まぁそんなとこだろう。「楽して生産性向上するツールがあります」なんて、「楽して金儲け出来る魔法の壷がたった500万円で手に入ります」と大差ないはずなんだが、こと IT に関しては、そんな当たり前の感覚が通用しないようである

ま、生産性に必要なのはツールじゃないぞ、教育だっ、てことな。