新しい何かに取り組むプログラマさんたちへ


桜の季節が近くなってきましたね。

春といえば出会いと別れの季節です。

我々プログラマも、ともすると4月から就職して新しいプログラミング言語やプロジェクトに出会うのではないでしょうか。

僕は1月に戦場を移動した関係で、1月から初めてRubyに取り組みました。

またObjective-cも書き始めています。

何かの参考になればと思い、今回の経験から僕なりの新しいプログラムへの取り組み方の定石みたいなものを偉そうに書いてみようと思います。

Kiai Driven Development

新しい言語やプロジェクトに出会ったとき、KDD(気合駆動開発)信奉者の僕が気を付けている点が3つ有ります。

それを一から紹介します。

Githubをとにかく巡れ!

新しい言語に取り組むとき、僕はまずGithubのその言語に関するwatchやfolkのランキングを見てます。

ランキングは、Github上部のExploreってメニューから飛べますよ。

そんでもって、Watch数の多いプロジェクトをかたっぱしからWatch、はてブに突っ込むなりしてリストアップしつつ、各プロジェクトの概要だけReadmeを見て頭に叩き込みます。

例えばRubyを書き始めたとき、とりあえずrailsやdiasporaなどをとりあえずWatchして、またプロジェクトに必要そうなキーワードで検索、それらもwatchするなどしつつ、頭に入れていきました。

僕は細かいこと覚えるのが苦手で、常に頭にインデックスを貼ることしか考えてません。

それゆえに、使えそうなプロジェクトのインデックスを頭につくっておいて、必要なときにそこを見に行くようにしています。

この作業をしておくことで、開発中に行き詰まったら、「あ〜あんなプロジェクトあったなー」って感じで思い出してすぐ参考にしてます。

ソースコードを読め!

これは当然ですね。

説明はいらないかもしれませんけど、自分が使う言語やフレームワークには必ず書き方の定石があります。

デザインパターンとかではなくてもっと簡単なものからアプリケーション全体の設計まで。

これらを学ぶために、Githubのプロジェクトの中から一つだけ選んで、サクっとソースを読みます。

この作業をするときに、理解度の目安として、追っているコード一行一行の意味が取れる、というところまではせめて読みましょう。

意味の分かってないコードを書く、もしくはコピペしてくるプログラマほど厄介なものはありません。

テストとサンプルを読め!

プロジェクト中、どれくらいの精度のテストを導入できるかは締切りなんかにも依るかもしれませんが、その精度、有無にかかわらず、既存のテストコートは読みましょう。

その言語でどうやって精度を保っているのか、そのフレームワークでどういったテストをしてるのか、といった情報は、実際にコードを書き始める上で非常に大切です。

コードを書いてる時に、どういった点に気をつければバグが減るのか、このコードをテストしたい時どうやったらいいのか、ここを理解していれば作業が案外スムーズに進みますよ。

何か調べるときはまずはてブを当たれ!

調べ物するときなんですが、Google先生に問い合わせすると、案外精度の悪い記事とか間違った記事が引っかかったりします。

そんな時でもはてブの検索は結構良記事がヒットしやすいんですよ。

あと、入門記事的なものもはてブの検索が一番です。

とりあえず、新しい言語始めるときは、はてブでその言語検索しましょう。

絶対に両記事に当たるはず。

後は書け!

実際に書くことに勝る勉強はありませんね、やっぱり。

KDDで一番大切なのは、とにかくコード量です。

どう書いたらエラーになるとか、どういうパターンで書くとうまくいくとか、こういった情報を即座に引き出せるように何でもいいからとりあえず書きましょう。

手が勝手に動くくらい書け!

とりあえず書けよ、なにか見えるさ!

むちゃくちゃな精神論を振りかざしたところでこの辺にしておきます。

プログラミング楽しいよこわくないよ。

 

追記

3つと言ってたのに5つ書いてたので小学校からやり直したい。

コメント: 1

  1. 公開日時: 2012年3月7日 - 11:35 PM | パーマリンク

    社会人エンジニア1年生です。
    KDD……はじめて知りました。これは、、いい。

    はてブで検索は考えてもみなかったですが、よさそうです。早速使ってみます。

とやまりにょん への返信

あなたのメールは 絶対に 公開されたり共有されたりしません。

次の HTML タグと属性が使用できます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>