2014年11月13日木曜日

アプレンティスシップ・パターン

書籍『アプレンティスシップ・パターン』を読み終わりました。


この本は、書籍『ソフトウェア職人気質』で提唱された「徒弟制度」というプログラマの成長のさせ方を、eXtreme Programming、アジャイル、ペアプログラミングといったものが普及してきた現代に合わせてまとめ直したものになっています。

この本の内容は、一言で表すなら「職業プログラマの心得をパターン・ランゲージで学ぶ」というものになるでしょう。

パターン・ランゲージというと、多くの方はGoFのデザインパターンを思い浮かべるでしょうが、パターンはプログラムの典型に名前を付けるだけでなく、その他多くの状況に適用できるものです(パターン・ランゲージは建築業界から来ました)。本書では、状況別に問題点と解決策をまとめ、パターン名を付ける、という形式になっており、カタログの要領で自分にあった心得や方法論を探して学べます。

徒弟制度というのは、もともと鍛冶屋がとっていた技術伝承の方法です。流れとしては、弟子(アプレンティス)は熟練職人(クラフトマン)になるために、熟練職人の元を転々として数々の技術を学んでいき、やがて独り立ちして自分の工房を持ちます。これをソフトウェア開発に応用するのが、書籍『ソフトウェア職人気質』で提唱され、本書『アプレンティスシップ・パターン』でまとめ直されたものです。
本書は、熟練職人がいかに弟子を育てるか、ではなく、弟子がいかにして熟練職人になるか、という弟子視点の内容になっています。
本書のターゲットとしては、就職して職業プログラマになってから2〜3年目くらいまでの人になるのでしょうが、学生がプロを目指すために学んだり、少し伸び悩んでいるプログラマ、一緒に働いているプログラマにもっと成長してほしいと考えている方も読むといいでしょう。

この本で学べることは多々ありますが、とくに重要なことは「生涯学習を身につける」ということだと感じました。
ソフトウェア業界には、一生安泰の技術なんてありません。常に自身を成長させていく必要があります。ですが、私たちが学生のときには、先生から与えられたカリキュラムに沿って勉強してきたこともあり、学ぶものを自分から探す・探し続ける、ということは、就職したら自分で身につけなければなりません。
本書はその「生涯学習」を、プログラマ向けに動機付けて身に付けてもらうのに最適だと感じました。

とてもオススメです!

2014年11月11日火曜日

コードレビューについての簡単なまとめ

目的はあったほうがいい。ないと粗探しになる。
コードレビュー全体の目標と、定期開催でやるならその度にテーマとしての目標を立てる。
全体の目標は、プロジェクトの目標設定やプロジェクト憲章なんかと同じ。やらされてる感をなくし、目的意識を持たせるために必要。

コードを書いてからレビューまでの時間は、短ければ短いほどいい。時間が長くなるほど、直すのが億劫になる(心理的ハードルが高くなる)。
週に一度のレビュー会よりは、全員で全てのコミットを見張ってコミット直後に指摘したほうがいい。それよりは、ペアプログラミングをしてキーボードを入力するそばから指摘するのがいい。

コードレビューを受ける側は、指摘されるまで座して待っていてはいけない。
フィードバックは進んで受けにいこう。「こういうコードを書いてみたのですけど、この考えで合ってますか?」というようにフィードバックを求め、自分のコードを良くすることに貪欲になろう。