- 2008-03-20 (木) 3:03
- コラム

このエントリ
プログラミングのスピードを上げる方法(teruyastarはかく語りき)
を読んで、職業プログラマー歴10年の僕も、ちっと考えてみる。
当該エントリ中に触れられている登さんの
普通の開発者の作業能力は、1 ヶ月数百行程度、多い人でも 1 ヶ月で 3,000 行程度らしい。
この話、
仕事の他に、毎日大学へ行ったり自分の会社を持っていたりしている訳ではなく、プログラミングに専念していても、この程度だという。
とのことだが、うん、そんなもんじゃないかなと思った。
プログラマのお仕事
「プログラマ」が仕事だとして実際「プログラム」を書くのって、全業務を10としたら1くらいじゃないかな、体感的に。
というかむしろ「プログラム」以外の、事前の設計だとか、クライアントとの調整業務だとか、ドキュメンテーション作成に貴重な時間を搾取され、「いつコーディングするんだよ!」というジレンマに泣きながら身悶えするのが職業プログラマの楽しさです(違うか)。
いかに開発効率を上げるかと考えた時に、僕らは腕を3対に増やしてアシュラマン状態になったりもできないし、公安9課の少佐みたいな電脳化も果たしていないわけなので、開発速度を上げるとしたらそこはもう、どれだけ「書かないか」の勝負だろうし。
どっからがSEでどこまでがプログラマなのかよくわからないのはよくある話で、コーディングしかできないプログラマは早晩干されますです。
僕の場合を鑑みる
会社で業務のプログラムをガリガリ書いて、更に家に帰ってからも自分のサイトに乗っけるプログラムをシコシコ書くという、オプス・デイにおける「肉の苦行」の様な状態を、僕は何故続けられるんだろうと考えてみると、ダヴィンチコードで言うところの、荒縄で自らを打ち据えるのが日課のMっ子シラス君くらいに、僕が変態なんだろうというところに論は帰結した。
実際気持ちがいいのだ。プログラムをカクという行為は。
「いかにスピードにのったまま楽しくプログラムできるか」
1 努力しないでいいように
2 論理的に考えなくてもいいように
3 頭を使わないでもいいように
teruyastarさんはエントリの中で、開発効率を高めるためのコツをこうまとめているが、「やりたいよーにやればいい」のだと読めた。シンプルに言ってしまえば。少なくとも「コーディング」に関しては。同意。
アプリケーション開発というものは必ず「完成形」があるからこそ作るのである。それが曖昧模糊とした、雲を掴むようなものであっても、誰かの頭の中に「解」は必ずある。
「儲かるから」でも「必要だから」でも「面白そうだから」でも動機はなんでもいいのだけれど、頭の中にあるものを形にするものが「コーディング」なのだから、そこで更に頭を使う必要は本来無いはずだ。
僕らはコードを吐くための出力機であり、脳内インタプリタであり、対コンピューター人型インターフェースに過ぎない。要するに、イタコみたいなものと考えても差し支えはない。自動書記が究極の理想。
「MYST」というゲームがある。セガサターンにも移植された有名なソフトだ。
この「MYST」の開発者は当初、コンピュータに関する知識は皆無であったにもかかわらず、頭の中にある「MYST」のアイディアを、ただ具現化したいだけのためにプログラムを学んだと聞いたことがある。
彼にとって「プログラム」とは、頭の中にあるものを形にするための方法論の一つであり、たまたま「プログラム」が自分の脳内アイディアを実現するのにモアベターなツールに過ぎなかったのだろう。結果、作った「MYST」は日本を含めた世界中で大ヒットを記録した。
ゴルフの話をしよう。ゴルフと言うものは、クラブごとの特性だとか、自分の持つ飛距離、天候が結果に与える影響などを統計的体系的に学んでいくスポーツだけれど、シンプルに言えば、それら全ては、ただカップにボールをねじ込むという最終系実現ためのメソッドだ。ボールをうまく打つことを「努力」と思って振っていたらツマラナイ。ゴルファーはただ「やりたい」からこそ、何度でもクラブを振るのだ。
僕は、「MYST」の作者は、プログラムを学ぶことを努力と思ってさえいなかったんじゃないかと推測する。 やりたいよーにやった結果だ。開発中もさぞノリノリだったんじゃないかな。
あなたと合体したい
経験的に、コーディングがノッテいる時ふと、「あ、自分、入ってるな」と気づく瞬間がある。
スポーツの世界で言うところの「ゾーン」とでも言うのか、自分が自分の持つスペック以上ものを発揮しているのを、確かな感覚で実感する瞬間がある。
その最中の恍惚たるや。僕はこの高揚感を感じる為に、この10年以上プログラムを続けていると言っても過言ではない。
その瞬間の僕は、自分の脳みそがCPUの一部として脳汁の一滴まで高速回転しているような高揚感と、その逆にコンピューターが自分の体の一部となって、回路を流れる電気の流れまで把握できているような、1ビットのオンオフまで可視化できるぜみたいなイカれた一体感が同時に体の中を駆け巡り、ああ、いつまでもこの状態をずっと維持したい、いや違う、もっと速く、もっともっと速く、ああもう、「俺とお前を分ける、この皮膚が邪魔だ」ってくらいのドーパミンドババな状態になっているのです。
あの一体感、恍惚感、僕は、間違いなく、その瞬間、コンピューターとファックしている。
OSの違うPCを4-5台机に並べて、それぞれに違う言語で、違うアプリケーションを同時に組み上げて同時実行、こちらの予想した通りの挙動を確認した瞬間なんて、マジでイキそうになる。
こんな時の生産効率は、通常時をはるかに凌駕する。圧倒的だ。
書いていて、我ながら変態だなとは思うが、大なり小なりプログラム開発者はこういうところがあると思う。
ただ最初に言ったように、「プログラマ」にとって「プログラム」がメインタスクになり得ないのが職業プログラマにとっての現実だ。
こう、僕が最高潮ノリにノッテいる時に限って、「あ、今、時間ちょっといいかな、この件なんだけど」課長登場なんてのが日常。
その瞬間の、良い夢を見ていたのに無理に起こされた時の憤りというか、がっかり感はそらもう大変なもの。
トランス状態から現世に復帰する時って、脳内の言語がコンピューターに最適化されているので、話しかけられた瞬間はうまく言語化できなかったりする。
そんな時、脳内の言語セットの切り替えが終わるまで「あ・・・えと・・・えと・・・」なんて、自慰行為を母親に見つかった中学生男子みたいになってすごく恥ずかしいので、話かけるのはできればご遠慮願いたい。
最速を維持する為に
電気的なノイズが混じるとネットワーク内の通信速度が低下したりする。
僕にとって一体感=気持ち良い=最大効率であるので、それを邪魔するノイズ(=気持ちよくないもの)を省いていけば、より気持ちよくなれるはずである。やるぞ!って時に、僕がしていること。
- タスクの明確化、設計は最初に、徹底的に
- 集中できる時間の確保
- 音楽を聴く
1については当たり前のこと。考えながらやっていたら無駄でしょうがない。プログラムは事前設計で9割は終了。後は流し込むだけ。思考はノイズだ。考えない。
2は「入り込むまで」のウォーミングタイムと、「入った」後のランニングタイムの確保。勢いがつくまで若干時間が掛かるけど、一旦入ってしまえば僕らは電池が切れるまで動きます。トイレとか膀胱が破裂しそうになるまでいきません。トイレに行く時間がもったいない。息をするのもメンドクセー。
3、これはできない職場もあると思うけど、うちは割とその辺り寛容なので。テンションを上げるのが目的なのでハードなのが多い。マキシマムザホルモンとかギターウルフとか。
実際入り込んでしまえばなんの音も聞こえないのだけれど、そこに至るまでの外界の刺激との隔離の為に。
ハード的には、マシンスペックって開発中はあんまり関係ないっす。多分マシンをちょっと早くするくらいなら、ディスプレイをできるだけでかくしたほうがいいと思う。
プログラマに最大の開発効率を求めるのならば「肉の苦行」ですよというお話。
殉教とかそんなたいそうなもんじゃない。プログラマなんてすべからく、シラス君みたいに基本ドMなんだから(問題発言)、やりたいよーにやらせとけば勝手に苦労に顔つっこんで、勝手に気持ちよくなりますよ。それくらいでないと、プログラムなんてやってけませんて。
関連する投稿
- Newer: せめてまだ、今だけは。
- Older: Web拍手ツール、【GJ!】 ver1.00公開しました
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://hmlab.info/minor/2008/03/post-60.html/trackback
- Listed below are links to weblogs that reference
- 最速プログラミングはシラス君に学ぼう from Minor Problem

