強い欲求が己を成長させる

とある昔話。これは私がプログラムに関して何も知らなかった状態から、非常に多くの知識を得る事ができた時の話です。

まとめると目標へ到達した時、その道のりでとてもたくさんの当初予定していなかった知識が身につくという話です。目標への強い意識があればその途中途中で表れる壁を乗り越えその壁を乗り越えるための知識や力が目標達成の副産物としていつの間にか身についているという事。

例で言うとこんな感じ。Linuxを全く知らない人がWEBサーバを立てようとしたとき、たまたま手に取った本が「ApacheでWEBサーバを構築!〜Linux編〜」という本だったら、その人がWEBサーバを立てる頃にはLinuxの知識も多少なりついている事でしょう。そういう事が私にも起こったという話です。
まだプログラムというもの、プログラミングというものを知らない頃、ある便利だけど使い勝手の悪いツールに対して不満を持っていました。「こういう機能が欲しいなぁ、こうすれば便利だなぁ」と。

しばらくして雑誌(ベーマガだったかな)でEXEファイルが自作できる事を知りました。これは衝撃でした。普段あたりまえのように"使うだけ"だったものが、自分で作れるのか!と。あまりに使う事があたりまえになっていて、自分で作るという選択肢に気づかなかったんですね。

ここから一気にプログラミングに没頭する事になります。「私には作りたいものがある!」もうこれだけでした。やりたい事を実現するためには何をしなければならないのか。実現したい事のためにとにかく四苦八苦の連続。「こういう事がやりたいのにやり方が分からない。どうすればできるんだ!?」。つまづかなかった所なんてきっとひとつも無かったんじゃないですかね。

ある事を実現するためにはたくさんたくさんの事を知らなければならない。実現する事ひとつ取ってもその道のりは知らない事だらけでした。だけどどうしても"使い勝手の悪い便利なツール"を自分が思うように改造したかった。だからどんなに苦労しても作るのをあきらめませんでしたし、その苦労も楽しかった。知らないことを知れる事、自分で作れる事が嬉しかった。

いつしかそのツールは完成し、ふと振り返った時とてつもない量の知識を得ていました。それらの知識は最初から得ようと思っていたわけではなくて、目標を達成するためには必要な知識だったからいつの間にか得ていたというもの。

そして次なる目標を定め何十というツールを作り上げていきました。数行のものから数万行に及ぶものまでたくさん。ただ目標を実現するだけで、今そのソースを見ると汚くてしょうがありませんけどね(笑)関数一つが数万行だったりするのも普通でした。それは目標を達成するだけが目的の自分しか見ない、自分しか使わないものだったからですね。

そしてそれらの積み重ねがいつか自信になっていました。私は自分が思ったプログラムを思うように作れる!と。その頃には既にWin32APIを操り、大抵思った事は実現できるようになっていました。

そのプログラミングに対しては自信に満ちた状態で社会人となり、プログラマとなったわけですが・・・実務ではてんで役に立ちませんでした。

自分だけの時は「思い通りにプログラムを作り上げる事ができる人」だったわけですが、会社では「自分しか読めないバグだらけのプログラムを大量に生成する能力を持った人」だったわけです。

データベースってナンデスカー?SQLってナンデスカー?テストってナンデスカー?品質ってナンデスカー?可読性ってナンデスカー?

自信満々だった私は大いに凹みました。ただ知らない事が多くてプログラムを作れないだけだったらまだ良かったんですが、大量に得ていたWin32APIの知識も実務じゃ全く使わなかった…。新人に割り振られるとても簡単な機能「マスタメンテナンス」にはWin32APIは登場しなかったんです。

得ている知識はひとりよがりの全く使えないもの。少なからず使えるであろうWin32APIの知識は仕事じゃ使わない。全く持って役立たずでした。

自信満々で入社したわりには、その後1年間近くズタボロのプログラマでした。今思うと下手に知識を持っているが故に起こる弊害だったんですね。同期と比べても格段にズタボロでした。下手に知識を持っているから全力で間違える。大いに間違える。壮大に間違える。

それを全部叩きなおして同期に追いつくまでとても時間がかかりました。その転機が「コードコンプリート」だったわけですが、この続きは気が向いた時にでも書くとします。

コードコンプリート。今読んでも良い本だなぁと思います。全部が全部とは言いませんけどね。2ndも好きな本です。いつも私がやっている脳内設計をちゃんとした文章で説明してくれている箇所があって「説明するとこういうことか!」とナットクする箇所がありました。うまく説明できなくてもやもやしていたのが、うまく説明できるようになる気がします。1stは幾度と無く読み返しましたが、2ndはまだ斜め読み1回だけ。気になる所をじっくりじっくり読み返して租借して吸収したいと思っています。