アジャイル開発研修・読後レポート(よいシステムを開発するために)


2ヶ月間のアジャイル開発研修が始まってちょうど1ヶ月、毎日が試行錯誤と学びの連続でした。ペアプログラミングテスト駆動開発チケット駆動開発の考え方や具体的なやり方の習得、コミュニケーションの推進、見積もり精度の向上、コードの共有、リファクタリングの実行、TODOリストの作成などなど、さまざまな課題に取り組んできました。今週末明けには本番環境でのシステムリリースをして、それ以降はシステム開発とともに、システム運用も行なっていく予定です。
研修も残りあと1ヶ月、これまで以上に多くのことを学び、吸収していきたいと思いますが、同時にここまで学んだことをしっかりと体得するために、研修とは別に、個人的にシステムを開発していこうと考えています。
そこで、今回の読後レポート(『ハッカーと画家』、Paul Graham著、川合史朗監訳)では、よいシステムを開発するために必要なことや心構えについてまとめたいと思います。具体的な内容は、以下の通りです。



  1. 共感する力を養う

  2. 優れたデザインセンスを身につける

  3. 自分がやりたいことをやる



1. 共感する力を養う



(第2章【ハッカーと画家】p.35参照)
共感能力は、おそらく良いハッカー(注:本書でのハッカーとは、優秀なプログラマーのことを指す)と偉大なハッカーの、たったひとつの最も重要な違いだろう。ハッカーのなかには非常に賢いが、共感するということにかけては全く自己中心主義の人々がいる。たぶんそういう人が偉大なソフトウェアをデザインするのは難しいだろう。ユーザの視点でものを観ることができないからだ。



社会人になって早半年が経ちましたが、学生時代と社会人になってからの大きな違いは、利害が絡む他者の存在があるかどうかだと感じています。つまり、学生時代にはあまり他者を気にせず自分がやりたいことだけをやっていても、学生としての生活は過ごすことができると思います(少なくとも勉強はできるという意味で、有意義な生活になるかどうかは別の話です・・・)。ですが、社会人となりビジネスを行うようになった場合は、いくら自分がやりたいことをやっていたとしても、お金を頂くお客様がいないと社会人としての生活は送れません。そのためには、お客様の視点に立って、お客様に喜んでもらえることをする必要があります。さらに、ビジネスで成功するためには競合他社より優位に立たなければなりません。そのためには、競合他社の視点に立って、競合他社が嫌がるようなことをするのも時には必要です。



(第2章【ハッカーと画家】p.35参照)
共感能力の良さをみるひとつの方法は、その人が技術的知識のない誰かに技術的な問題を説明する様子を観察することだ。



私が今年の4月から入社した会社では、何か文章を書くときに、よく「おじいさんやおばあさんが読んでもわかるように書きなさい」と言われます。これはまさに、「文章を読む相手に共感して書くように」という意味だったのだとわかりました。私自身、このように文章を書くことがすごく苦手だったので、今後はしっかりと他者視点に立って共感する力を養っていきたいと思います。

2. 優れたデザインセンスを身につける



(第9章【ものつくりのセンス】p.138参照)
センスは個人の好みだと言うのは論争を避けるには良い方法だ。問題は、それが真実ではないということだ。(中略)ほかのどんな仕事とも同じように、ものをデザインする仕事を続けていればだんだんうまくできるようになってくる。センスが変わってくるのだ。(中略)良いデザインと悪いデザインというものがあるのだと少なくとも自分の中で認めなければ、良いデザインについて詳しく学び始めることはできない。



私自身、今まで「センスは個人の好み」という考えが強く、あまり「センス」という言葉に信頼性は持っていませんでした。しかし本文を読んで、個人において、「優れたセンスを身につける」ことはなるほど大切なことだと思いました。「今のデザインの悪い部分を修正していき、良いデザインができるようになっていく」=「優れたセンスが身についていく」と言えるのではないでしょうか。



(第9章【ものつくりのセンス】p.139参照)
良いデザインは単純である。(中略)良いデザインは再デザインだ。(中略)良いデザインは模倣する。



本文の「良いデザイン」について記載してある中で、特に印象に残った3つを抜粋しました。一つ目の「良いデザインは単純である。」は、最近、私が特に意識している事項です。単純・簡潔に文章を書いたり、話したりするためには、最も自分が伝えたいことをはっきりさせ、頭の中を整理しておく必要があります。同じように、デザインで重視していることをはっきりさせ、デザインを単純にすることは良いデザインにつながると思います。

3. 自分がやりたいことをやる



(第16章【素晴らしきハッカー】p.238参照)
自分を素晴らしいハッカーにすることができるとしたら、その方法とは、自分自身に対して次の契約を結ぶことだ。以降、退屈なプロジェクトの仕事は一切しなくてよい(家族が餓死しそうでない限りは)、その代わりに、絶対に中途半端な仕事はしない。



私は、どんな仕事に対しても前向きに取り組むことができる人は、仕事の意義づけが上手な人だと考えています。特に自分自身にとっての意義づけです。その仕事を行うことで、自分に何が身につくのか、また自分の目指す将来にどのように役に立つのかをはっきりさせてから、その仕事に取り組むのです。そうすることで、どんな仕事でも自分のやりたいことにすることができます。「まずはどんな仕事も自分のやりたい仕事にしてから、それを最後までやりきる」という働き方が、私の今考える理想の働き方です。