Hatena::ブログ(Diary)

ハックルベリーに会いに行く このページをアンテナに追加 RSSフィード

2009-04-23

新人プログラマーがプロのプログラマーとして独り立ちするための7つの条件

ぼくは以前にIT関連の仕事をしたことがあって、ぼく自身はプログラムを組めるわけではないのだけれど、何人かのプログラマーさんと一緒にお仕事をさせて頂く機会があった。その中で生まれて初めてプログラマーという職業の方と交流させて頂いたのだけれど、彼らはなかなかにユニークで特異な個性の持ち主たちであった。もちろんプログラマーと一口に言っても色々なタイプがいて、必ずしもひとくくりにできるわけではないのだが、共通していたのは好奇心が旺盛で新しい物好きだということだった。そして少々気難しい面がありつつも、基本的にはポジティブで、明日に向かって色々なことを前向きに、精力的に取り組んでいる人が多かった。


そんな中で、特に親しくお話しさせて頂いたTさんというプログラマーがいて、この方もなかなかに個性的で、ご自分の意見や主張というものをはっきりと持っており、ITのみならず世の中に対しても一家言お持ちであった。そんなTさんと、ぼくが転職する折りに話をさせて頂く機会があって、そこでいくつか面白い話が聞けたので、今日はそれについて書いてみようと思う。彼はそこで、新人プログラマーに贈るとも言うべき、プログラマーの心得というものの幾つかを、門外漢のぼくに教えてくれたのだった。

ちなみにTさんの年齢はぼくとほぼ同い年の、もうベテランといえる部類の十年選手だ。そのTさんが、彼の会社の新人の話にかこつけて、プロのプログラマーとして独り立ちするためには、いくつかの条件があるというお話をしてくれた。ぼくはそれをふんふんと興味深くメモをしながら聞いていたのだけれど、後で数えたらちょうど7つになったので、このエントリーのタイトルは「新人プログラマーがプロのプログラマーとして独り立ちするための7つの条件」とさせてもらった。ちなみにこの順番は特に法則があるわけではないそうで、順不同で強いて言えば彼が思いついた順番だということだった。それでも、いの一番に出てきた言葉はやはり重要度が高いだろうと思われるので、そこら辺を汲み取りながら聞いてみるのも面白いかも知れないと思った。


新人プログラマーがプロのプログラマーとして独り立ちするための7つの条件


その1「プログラマーであることに誇りを持たない」

Tさんがまず初めに言ったのがこれだった。ぼくは意外に思って「そうなんですか?」と思わず聞き返したが、プログラマーははっきりとした形がある世界の職人ではなく、むしろ形のないところに形をこさえるようなものだから、誇りを持つのはかえって邪魔になるし危険だということを語られた。プログラマーは、プログラマーであることに誇りを抱いた瞬間に停滞が始まるのだという。そしてこれまで、Tさんは何人もそういう誇りを抱いて停滞してきたプログラマーを見てきたということだった。

プログラマーで何よりも大切なのは、昨日までの自分をどれだけ潔く捨てられるかだということである。そして新奇なことにどれだけ躊躇なく立ち向かっていけるか。そこに伴うべきものは飽くなき好奇心だけで、誇りなどは文字通り「埃」と一緒に身に付くやいなやさっさと払い落とすに越したことはないということだった(ちなみにこれはちょっとしたダジャレのつもりだったらしい)。

ぼくはこれはちょっと意外な気がしたのだが、しかしTさんの言うことも何となく分かった。Tさんは「誇り」という言葉を使ったけれども、正確には古いやり方や常識、あるいは前例に固執することが、プログラマーにとっては何より危険なのだということだろう。ドッグイヤーと言われるほど変化の激しい彼の業界においては、ちょっとしたつまずきでさえ命取りになるということで、本当に剣呑な世界だと思わされた。


その2「常に手抜きを考える」

Tさんに言わせると、プログラマーというのは「性格のねじ曲がった面倒くさがり屋」でなければならないということだった。優秀なプログラマーは、「物事を面倒くさくなくするためだったら、どんな面倒くさいことでもする」のだそうだ。だから、ここで言う「手抜き」とは、何も手抜き工事をするということではなく、どれだけ楽をしてそのプログラムを組み立てられるか(つまり手を抜けるか)、ということであった。それをするために、プログラマーは全力を傾けるべきだとTさんは言った。

これを聞いた瞬間、ぼくは真っ先に将棋のことを思い浮かべた。将棋にも「手抜き」という言葉があって、定石とか通常の段取りとかを一個飛ばして危険な箇所を放置したまま攻撃を仕掛けることをそういうのだけれど、これを上手に使える棋士というのは、それだけで俄然有利になる。将棋においては、一手得することは本当に大きなアドバンテージになるので、どれだけ手抜けるかというのが、そのままその人の実力を決めると言っても過言ではないのだが、Tさんのプログラミングも、勝負強い棋士のように、要所で手抜きをして、局面を短手数で進めることをよしとしているということだった。


その3「リソースが足りないと言わない」

Tさんが一番嫌いな人間が、すぐ「リソースが足りない」と言い出すプログラマーだそうだ。と言うのも、リソースが足りてればそれこそプログラマーなどは必要なくて、専門学校出たての兄ちゃんにでも組ませておけばいいんだということだった(Tさんはそういう言い方をした)。プログラマーというのは、リソースがないところを如何にやりくりするかというのが醍醐味であって、これは上に挙げた「手抜く」という考え方にも通じるのだけれど、「無理を通して道理を引っ込ませてこそプロのプログラマー」ということだった。だから、リソースがないことを嘆いているようじゃてんでだめで、むしろそういう逆境を喜ぶくらいでちょうど良いらしい。

実際、Tさん自身は条件の悪い時の方がむしろ思わぬアイデアや方策が閃くのだそうだ。これまで何度かそういう経験をしてきて、そのうちにいつしかリソースのない状況を嘆くことはなくなり、むしろそういう状況を喜ぶと言うか、楽しむようになったとのことであった。リソースがない状況をポンと押しつけられると、さあどうやってこのピンチを切り抜けてやろうかと、逆にワクワクするのだそうである。


その4「身辺を整理しておく」

この言葉もそうなのだけれど、Tさんの言葉遣いは独特だ。これは何も悪いことをした人が警察に捕まる前に身綺麗にしておく……といった意味ではなくて、単純に「机の上を綺麗にしておく」とか、「身だしなみを整える」という意味らしい。事実、Tさんの机の上には物一つ置いておらず、いつも真っさらで綺麗な状態であった。机の上にはただPCと電話があるだけで、後はカレンダーとか筆記用具とか、書類の類さえないのだ。ましてや漫画や雑誌やフィギュアなどはもってのほかということで、Tさんの言わせると、机の上にごちゃごちゃ物を置いているやつは総じて能力のないプログラマーだということだった。

ではなぜTさんが身辺を整理しておくかといえば、それは「そういう習慣を付けておくことによって、いざという時にだいじな物を見つけるため」ということだった。と言うのは、Tさんはプログラムする時でも、常に余計なコードは片っ端から掃除をするようにしているのだそうである。そうすることで、何か不具合があったり問題が起きた時にも、その問題の箇所を一刻も早く見つけることができるのだそうだ。そうして、そんなふうにプログラムの中を整理しておくためには、まず机や身の回りから整理しなければならないのだそうである。敵をだますにはまず味方からというやつだ。そういう習慣を「リアル(現実)」の世界からつけておかないと、「バーチャル(プログラム)」の世界でもなかなかそれを実行することができないのだということだった。そういう意味で、Tさんはとにかく整理整頓にはものすごくこだわりがあるということだった。


その5「勘を鍛える」

これは「その4」とも通じるのだけれど、意外なことに、プログラムというのは「勘」がとてもだいじなのだということだった。もちろん、普段の勉強や経験の積み重ねはだいじなのだけれど、前述したような手を抜く際の思わぬアイデアというものは、ふとした閃きや勘、あるいは直感から生まれることがほとんどなのだそうだ。あるいはバグを見つける時も、最初に勘を働かせて「ここら辺に問題がありそうだぞ」というのがピンと閃くと、けっこうな確率で当たっているのだそうである。そういう勘が冴えるようになると、プログラムやデバッグに割く時間はとても短くなり、おかげでリソースが足りないという問題も解決できるのだという。

だから、諸々の問題を解決するためには、プログラマーにとって勘の良さは必要不可欠なのだそうだけれど、これは規則正しい生活や食事、安定した精神状態、清潔さによって鍛えられるそうで、だからTさんは、とにかく健康には人一倍気を遣っているとのことであった。


その6「美的センスを身につける」

これもTさんのこだわりなのだそうだけれど、とにかく美的センスのないやつに良いプログラムは書けないとのことであった。スティーブ・ジョブズはPCの美しさにこだわって、基板のデザインにまで口を出したらしいけれども、Tさんもそんなジョブズの考え方に全くもって同意するとのことであった。

プログラムも、やっぱり良いものはある種の美しさを醸すようになって、これは逆に言えば、美しいプログラムさえ書いていれば、それは自ずから良いプログラムになるとのことであった。だから、良いプログラマーには美的センスが絶対的に必要で、そのためにTさんは、常日頃から有名なデザイナーの作品集を買ったりだとか、古今の家具や建築などに触れ、自分の美しさに対する感度をできうる限り高めるようにしているのだそうである。そういうふうに美に対する審美眼を養った状態でプログラムをすれば、いい感じで手抜きができるし、また思わぬアイデアが閃いたり、勘も鋭くなるとのことであった。


その7「忘却力を備える」

これもまた意外だったのだが、Tさんによれば、プログラマーには何より「忘れる力」が大切なのだということであった。

理由は二つあって、一つは、プログラマーは覚えなければならないことがあまりにも多いということ。そのため、余計なことはさっさと忘れるようじゃないと、とてもじゃないが必要な情報をいい感じで脳の中の取り出しやすいところにしまっておくことができないのだそうである。Tさんによれば、それこそ人間の脳というのは限られたリソースであって、余計な記憶をしまっておく場所は一ミリたりともないとのことであった。だから、忘却力――PCでいうならクリーンアップや圧縮が本当にだいじで、余計なことは普段からなるべく忘れるように心がけているのだそうだ。

もう一つは、色んなことを覚えたままだと、夜眠れなくなるのだそうである。特に若い頃は、かかりつけのプログラムが眠ってるあいだも気になって、おかげで快適な睡眠が取れず、仕事の能率がかえって落ちてしまったことがあったのだそうだ。そうしたことを避けるために、年齢を重ねるに連れてTさんは、仕事が終わるとパッと仕事のことを忘れる忘却力を鍛えていったのだそうだ。そうやって、オンとオフを上手に切り替えることによって、きちんと睡眠を取り、次の日はまた集中して仕事をする――そういうサイクルを確立できるようになって、仕事の能率もぐんとあがったのだそうである。その意味でも、忘れる力――すなわち「忘却力」は、本当に大切だとのことであった。


まとめ

以上の7箇条を遂行できるようになってこそ、一人前のプログラマーだとTさんは断言した。そしてこれからプロのプログラマーとして独り立ちしようとする若手プログラマーにも、そうした素養を強く求めるのだそうである。

ぼくはプログラマーではないので、その効能のほどは定かではないが、Tさんの言うことには、例えプログラマーではなくても参考になりそうだと思うところがいくつかあった。例えば美的センスを鍛えたり、あるいは忘却力を身につけるというのは、ぼくの専門である企画の仕事にも相通じるところがあると思ったし、また「身辺を整理しておく」というのは、ぜひとも見習いたいと思った(しかしさすがに机の上に何も置かないのはぼくにはちょっと無理そうだが)。

だから、もしこれを読まれた若手プログラマーの方がいたならば、試しに上記の7つのことに取り組まれても面白いのではないかと思った。前述したように、その効果のほどを保証するわけにはいかないが、それでも、Tさんがすぐれたプログラマーであることは確かだし、彼の言うように、新奇なことに好奇心を持って取り組むということは、プログラマーにとってとても重要なことではないかと思うからだ。


関連

トラックバック - http://d.hatena.ne.jp/aureliano/20090423/1240454590