« 独自UI | メイン | LostPlanet2 »

2010年05月15日

プログラミング速度を上げる方法

結構古い記事なんだけど、妙に納得がいったので紹介。
少々長くなるが、おつきあいください。

みなさんのプログラミング速度はどれくれいでしょうか。
私は集中しているときは1日に1000から2000行程度かけます。(もちろん内容にもよりますが)
まぁ行数なんて意味はないですが、まぁ感覚的にそんなもんです。
もし、1日に数百行程度の人ならこの方法が役に立ちます。
また、調子がいいときはかけるけど、調子がよくないときはかけないなど
コンスタントにパフォーマンスが出ない人にとっては、なるほど!な記事(のはず)です。

いろいろトラバされてますが、大元のネタ記事はたぶんこれです。
論理的思考の放棄
論理的思考の放棄2
論理的思考の放棄3

えっと、このblogの記事だけ読んでも理解できる人と、できない人が居ると思うので
あわせてコメントやトラバを読むとよいです。


以下に簡単に内容をまとめます。(感じたままに書きます。まとまってないかも)

プログラミング速度をあげるには論理的に考えてはならない。
ここでいう論理的とは、言い換えるなら細かいことを考えることである。
日本語で話すときに、主語とか動詞とか考えないように
思ったまま、感じたままに話すような感じである。
当たり前だとおもうが、これが重要な感覚。

具体例をあげるなら、プログラミングしながら、
このクラスの継承関係をどうしようとか、このデータはこっちのクラスにもたせたほうが
いいとか、そんなことを考えながらプログラミングしてはいけないということ。
(まぁそもそもそんなことはプログラミングするまえに設計しておくべきだし。)

つまり、プログラミングも言語をしゃべるように書けばかなり早くなる。
まぁそりゃそうだが、それができないからこまってんじゃん。という人もいるだろう。
それは基礎力がなさすぎ。

初心者のために脱線する。
英文を読めるようになるのに、えっとこの単語はなんて意味だっけ?
なんてやってるようではスラスラ読めるようにはなるはずが無い。
まず、単語と文法を押さえるべきである。
プログラミングも同様で、言語の基本的な構造、書き方は最低限マスターすべき。
いちいちそんなこと気にしなくても体でかけるくらいに(論理的思考をしなくていいように)
練習することが必要。
その次にデザインパターンとか、こういうときにはこう書くと良いみたいな本をよんで
いわゆる文法をマスターしておく。クラスのデータメンバの持たせ方とかはこの辺。
文法も体でかけるくらいにマスターしておくことが必須。設計も早くなる。
マスターする方法は練習する(場数をこなす)しかない。

もし、あらゆるデザパタとか文法をマスターしていなくて、焦ってそこを勉強することはない
すべてを知っていなくても、知っている範囲で実践すればよい。
自分の知っている範囲の設計で実装できるプログラミングであれば何でも実行可能だ。
ある問題に対してプログラムを設計するときに自分の知っている範囲の設計では
効率よく解決できないときに、別の方法で簡単にとける手法を学べば良い。


玄人さんお帰りなさい。
さて本題に戻る。

速くプログラミングするためには、余計なことを考えてはいけない。
つまり、集中した状態。いわゆるドーパミン放出状態。
ここの状態へのなり方は人によって異なるものだと思う。
私はヘッドホン(スピーカではだめだ)でエレクトロニカ系の音楽を聞いていると
この状態に入ることが比較的簡単である。
理由は定かではないが、いわゆるトランス状態になりやすい。神キターな状態である。
この状態になればすでに設計が決まっているプログラムを書くことは容易い。
ほとんど単純な作業状態になる。
どれくらいの速度でかけるかというと、絵で描かれた図などを日本語で説明するくらいの
速度でかけるようになる。
このトランス状態を作り出すのに登氏は鉄球と磁石の例をあげている。
この例が分かりやすいかどうかは別として、図式的に私のトランス状態もこんな感じである。
なんというか、周りが見えてない状態でディスプレイの中央付近だけが見えているような
状態で、まさにこの絵の状態に近い。
いくつか場数をこなしたプログラマであれば、このような状態の経験はあるだろう。
よく、多少風邪引いているときとか、ちょっとアルコールが入っているときの方が
コーディングがよく進むという状態もまさにこの状態。
余計なことを考えてないからはやい。

まぁしかし、残念なことに日本の会社ではこのような状態になっても
大抵インタラプトされせっかくのトランス状態を解除されることが多々ある。


まぁ結果的に集中してる(トランス状態)だからできるんでしょー。でも、
どうやってトランスしたら良いか分からないよって言う人は以下のリンクが
参考になるかもしれない。
日常業務を簡単に50%アップさせる方法
集中する方法は人によって異なるだろう。

このページの著者のてるやんさんは私が今までいろいろなんとなく感じていた
現象にいろいろ思い当たることをずばっとあててくれる良いページだと思う。
今はこちらに移転している模様
teruyastarはかく語りき


実は今回のプログラミング速度を上げる方法はこのページでみつけた。

プログラミングのスピードを上げる方法
プログラミングのスピードを上げる方法2 (2はとばしてもいいかも
プログラミングのスピードを上げる方法3
大事な話があるんだ
パソコンが使える人と、使えない人ぐらい

他にもいろいろ紹介したいがまた次回。

投稿者 kioku : 2010年05月15日 21:33