<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>MinorProbrem&#187; ダヴィンチコード、シラス</title>
	<atom:link href="http://hmlab.info/minor/tag/%e3%83%80%e3%83%b4%e3%82%a3%e3%83%b3%e3%83%81%e3%82%b3%e3%83%bc%e3%83%89%e3%80%81%e3%82%b7%e3%83%a9%e3%82%b9/feed/" rel="self" type="application/rss+xml" />
	<link>http://hmlab.info/minor</link>
	<description>グダグダ日記</description>
	<lastBuildDate>Wed, 27 Apr 2011 21:48:54 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://hmlab.info/minor/tag/%e3%83%80%e3%83%b4%e3%82%a3%e3%83%b3%e3%83%81%e3%82%b3%e3%83%bc%e3%83%89%e3%80%81%e3%82%b7%e3%83%a9%e3%82%b9/feed/" />
		<item>
		<title>最速プログラミングはシラス君に学ぼう</title>
		<link>http://hmlab.info/minor/2008/03/post-60/</link>
		<comments>http://hmlab.info/minor/2008/03/post-60/#comments</comments>
		<pubDate>Wed, 19 Mar 2008 18:03:56 +0000</pubDate>
		<dc:creator>Hex68</dc:creator>
				<category><![CDATA[コラム]]></category>
		<category><![CDATA[ダヴィンチコード、シラス]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[肉の苦行]]></category>

		<guid isPermaLink="false">http://hmlab.info/wordpress/2008/03/post-60.html</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[</p>
<p>このエントリ</p>
<p>  <a  href="http://d.hatena.ne.jp/teruyastar/20080308/1204977907" target="_blank">プログラミングのスピードを上げる方法</a>（teruyastarはかく語りき）
<p>&nbsp;</p>
<p>を読んで、職業プログラマー歴10年の僕も、ちっと考えてみる。 </p>
<p>&nbsp;</p>
<p>当該エントリ中に触れられている登さんの</p>
<blockquote><p>普通の開発者の作業能力は、1 ヶ月数百行程度、多い人でも 1 ヶ月で 3,000 行程度らしい。 </p>
</blockquote>
<p>この話、 </p>
<p>&nbsp;</p>
<blockquote><p>仕事の他に、毎日大学へ行ったり自分の会社を持っていたりしている訳ではなく、プログラミングに専念していても、この程度だという。 </p>
</blockquote>
<p>&nbsp;</p>
<p>とのことだが、うん、そんなもんじゃないかなと思った。</p>
<p><span id="more-3429"></span></p>
<h4>プログラマのお仕事</h4>
<p>「プログラマ」が仕事だとして実際「プログラム」を書くのって、全業務を１０としたら1くらいじゃないかな、体感的に。</p>
<p>というかむしろ「プログラム」以外の、事前の設計だとか、クライアントとの調整業務だとか、ドキュメンテーション作成に貴重な時間を搾取され、「<strong>いつコーディングするんだよ！</strong>」というジレンマに泣きながら身悶えするのが職業プログラマの楽しさです（違うか）。 </p>
<p>いかに開発効率を上げるかと考えた時に、僕らは腕を３対に増やしてアシュラマン状態になったりもできないし、公安9課の少佐みたいな電脳化も果たしていないわけなので、開発速度を上げるとしたらそこはもう、<strong>どれだけ「書かないか」</strong>の勝負だろうし。</p>
<p>どっからがSEでどこまでがプログラマなのかよくわからないのはよくある話で、コーディングしかできないプログラマは早晩干されますです。 </p>
<p>&nbsp;</p>
<h4>僕の場合を鑑みる</h4>
<p>会社で業務のプログラムをガリガリ書いて、更に家に帰ってからも自分のサイトに乗っけるプログラムをシコシコ書くという、オプス･デイにおける「<strong>肉の苦行</strong>」の様な状態を、僕は何故続けられるんだろうと考えてみると、<strong>ダヴィンチコードで言うところの、荒縄で自らを打ち据えるのが日課のMっ子シラス</strong>君くらいに、僕が変態なんだろうというところに論は帰結した。</p>
<p>実際気持ちがいいのだ。プログラムをカクという行為は。 </p>
<p>&nbsp;</p>
<blockquote><p>「いかにスピードにのったまま楽しくプログラムできるか」 </p>
<p>&nbsp;&nbsp;&nbsp; １ 努力しないでいいように </p>
<p>&nbsp;&nbsp;&nbsp; ２ 論理的に考えなくてもいいように </p>
<p>&nbsp;&nbsp;&nbsp; ３ 頭を使わないでもいいように </p>
</blockquote>
<p>&nbsp;</p>
<p>teruyastarさんはエントリの中で、開発効率を高めるためのコツをこうまとめているが、「<strong>やりたいよーにやればいい</strong>」のだと読めた。シンプルに言ってしまえば。少なくとも「コーディング」に関しては。<strong>同意</strong>。</p>
<p>&nbsp;</p>
<p>アプリケーション開発というものは必ず「<strong>完成形</strong>」があるからこそ作るのである。それが曖昧模糊とした、雲を掴むようなものであっても、誰かの頭の中に「<strong>解</strong>」は必ずある。     </p>
<p>「儲かるから」でも「必要だから」でも「面白そうだから」でも動機はなんでもいいのだけれど、頭の中にあるものを形にするものが「コーディング」なのだから、そこで更に頭を使う必要は本来無いはずだ。</p>
<p>僕らはコードを吐くための出力機であり、脳内インタプリタであり、対コンピューター人型インターフェースに過ぎない。要するに、<strong>イタコみたいなもの</strong>と考えても差し支えはない。自動書記が究極の理想。</p>
<p>&nbsp;</p>
<p>「<a href="http://ja.wikipedia.org/wiki/%E3%83%9F%E3%82%B9%E3%83%88" target="_blank">MYST</a>」というゲームがある。セガサターンにも移植された有名なソフトだ。</p>
<p>この「MYST」の開発者は当初、コンピュータに関する知識は皆無であったにもかかわらず、頭の中にある「MYST」のアイディアを、ただ<strong>具現化したいだけのため</strong>にプログラムを学んだと聞いたことがある。</p>
<p>彼にとって「<strong>プログラム</strong>」とは、頭の中にあるものを<strong>形</strong>にするための方法論の一つであり、たまたま「プログラム」が自分の脳内アイディアを実現するのにモアベターなツールに過ぎなかったのだろう。結果、作った「MYST」は日本を含めた世界中で大ヒットを記録した。</p>
<p>&nbsp;</p>
<p>ゴルフの話をしよう。ゴルフと言うものは、クラブごとの特性だとか、自分の持つ飛距離、天候が結果に与える影響などを統計的体系的に学んでいくスポーツだけれど、シンプルに言えば、それら全ては、ただ<strong>カップにボールをねじ込むという最終系実現ためのメソッド</strong>だ。ボールをうまく打つことを「<strong>努力</strong>」と思って振っていたらツマラナイ。ゴルファーはただ「やりたい」からこそ、何度でもクラブを振るのだ。 </p>
<p>僕は、「MYST」の作者は、プログラムを学ぶことを<strong>努力と思ってさえいなかったんじゃないか</strong>と推測する。 やりたいよーにやった結果だ。開発中もさぞノリノリだったんじゃないかな。</p>
<p>&nbsp;</p>
<h4>あなたと合体したい </h4>
<p>経験的に、コーディングがノッテいる時ふと、「あ、<strong>自分、入ってるな</strong>」と気づく瞬間がある。     </p>
<p>スポーツの世界で言うところの「<strong>ゾーン</strong>」とでも言うのか、自分が自分の持つスペック以上ものを発揮しているのを、確かな感覚で実感する瞬間がある。 </p>
<p>その最中の恍惚たるや。僕はこの<strong>高揚感</strong>を感じる為に、この10年以上プログラムを続けていると言っても過言ではない。 </p>
<p>その瞬間の僕は、自分の脳みそが<strong>CPUの一部として脳汁の一滴まで高速回転</strong>しているような<strong>高揚感</strong>と、その逆にコンピューターが自分の体の一部となって、<strong>回路を流れる電気の流れまで把握できている</strong>ような、<strong>１ビットのオンオフまで可視化</strong>できるぜみたいな<strong>イカれた一体感</strong>が同時に体の中を駆け巡り、ああ、いつまでもこの状態をずっと維持したい、いや違う、もっと速く、もっともっと速く、ああもう、「<strong>俺とお前を分ける、この皮膚が邪魔だ</strong>」ってくらいのドーパミンドババな状態になっているのです。</p>
<p>あの一体感、恍惚感、僕は、間違いなく、その瞬間、<strong>コンピューターとファックしている</strong>。</p>
<p>OSの違うPCを４－５台机に並べて、それぞれに違う言語で、違うアプリケーションを同時に組み上げて同時実行、こちらの予想した通りの挙動を確認した瞬間なんて、<strong>マジでイキそう</strong>になる。 </p>
<p>こんな時の生産効率は、通常時をはるかに凌駕する。<strong>圧倒的</strong>だ。     <br />書いていて、我ながら<strong>変態だな</strong>とは思うが、大なり小なりプログラム開発者はこういうところがあると思う。</p>
<p>&nbsp;</p>
<p> ただ最初に言ったように、「プログラマ」にとって「プログラム」がメインタスクになり得ないのが職業プログラマにとっての現実だ。    <br />こう、僕が最高潮ノリにノッテいる時に限って、「<strong>あ、今、時間ちょっといいかな、この件なんだけど</strong>」課長登場なんてのが日常。</p>
<p>&nbsp; <br />その瞬間の、良い夢を見ていたのに無理に起こされた時の憤りというか、がっかり感はそらもう大変なもの。     <br />トランス状態から現世に復帰する時って、脳内の言語がコンピューターに最適化されているので、話しかけられた瞬間はうまく言語化できなかったりする。 </p>
<p>そんな時、脳内の言語セットの切り替えが終わるまで「<strong>あ・・・えと・・・えと・・・</strong>」なんて、<strong>自慰行為を母親に見つかった中学生男子</strong>みたいになってすごく恥ずかしいので、話かけるのは<strong>できればご遠慮願いたい</strong>。 </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h4>最速を維持する為に</h4>
<p>電気的な<strong>ノイズが混じるとネットワーク内の通信速度が低下</strong>したりする。     <br />僕にとって<strong>一体感＝気持ち良い＝最大効率</strong>であるので、それを邪魔するノイズ（＝気持ちよくないもの）を省いていけば、より気持ちよくなれるはずである。やるぞ！って時に、僕がしていること。 </p>
<p>&nbsp;</p>
<ol>
<li>タスクの明確化、設計は最初に、徹底的に </li>
<li>集中できる時間の確保</li>
<li>音楽を聴く </li>
</ol>
<p>&nbsp;</p>
<p>１については当たり前のこと。考えながらやっていたら無駄でしょうがない。プログラムは事前設計で9割は終了。後は流し込むだけ。思考はノイズだ。考えない。 </p>
<p>２は「<strong>入り込むまで</strong>」の<strong>ウォーミングタイム</strong>と、「<strong>入った</strong>」後の<strong>ランニングタイム</strong>の確保。勢いがつくまで若干時間が掛かるけど、一旦入ってしまえば僕らは電池が切れるまで動きます。トイレとか膀胱が破裂しそうになるまでいきません。トイレに行く時間がもったいない。息をするのもメンドクセー。</p>
<p>３、これはできない職場もあると思うけど、うちは割とその辺り寛容なので。テンションを上げるのが目的なのでハードなのが多い。マキシマムザホルモンとかギターウルフとか。</p>
<p> 実際入り込んでしまえばなんの音も聞こえないのだけれど、そこに至るまでの外界の刺激との隔離の為に。</p>
<p>ハード的には、マシンスペックって開発中はあんまり関係ないっす。多分マシンをちょっと早くするくらいなら、ディスプレイをできるだけでかくしたほうがいいと思う。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>プログラマに最大の開発効率を求めるのならば「<strong>肉の苦行</strong>」ですよというお話。</p>
<p>殉教とかそんなたいそうなもんじゃない。プログラマなんてすべからく、シラス君みたいに基本<strong>ドＭ</strong>なんだから（問題発言）、やりたいよーにやらせとけば勝手に苦労に顔つっこんで、勝手に気持ちよくなりますよ。それくらいでないと、プログラムなんてやってけませんて。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="wlWriterSmartContent" id="scid:81867AAF-BB02-476b-AE5D-12BDAC2E750D:a7554a2d-5657-4ab6-9edc-7d0b169ccb9d" style="margin: 0px; padding: 0px; display: inline; float: none;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B000HWY2JQ/minorproble06-22/ref=nosim" target="_blank"><img alt="ダ・ヴィンチ・コード デラックス・コレクターズ・エディション" src="http://ecx.images-amazon.com/images/I/21M50XW7DML.jpg" /><br />ダ・ヴィンチ・コード デラックス・コレクターズ・エディション トム・ハンクス オドレイ・トトゥ イアン・マッケラン ポール・ベタニー ジャン・レノ </a></div>
]]></content:encoded>
			<wfw:commentRss>http://hmlab.info/minor/2008/03/post-60/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://hmlab.info/minor/2008/03/post-60/" />
	</item>
	</channel>
</rss>

