エンジニア的なネタを毎週書くブログ

東京でWebサービスの開発をしています 【英語版やってみました】http://taichiw-e.hatenablog.com/

“Demand Technical Excellence” アジャイルにおける技術と品質の重要性 Agile Japan 2013 #agilejapan

Agile Japan 2013 の基調講演を聴いた感想です。

講師のJames Grenningは、組み込み系のエンジニアで、最近、彼の書籍の訳本、

が日本で発売になったとのこと。

そして講演を聞いたあとに知ったのですが、なんとプランニングポーカーの発明者なのですね。知らなかった、、、!
※著者プロフィールくらい事前に読んでおかなきゃですね、反省。

そのJamesが、Demand Technical Excellenceというタイトルで話してくれました。

大きなテーマは、セッション概要にもある通り、
"Technical Excellence", 「卓越した技術」を学び、適用することがいかに必要かということ。
TDDの導入を実際の事例として、紹介してくれました。

イケてない例

アンチパターンとして紹介されたのが、
未だに1979年と同じ方法で開発している、という話。
Jamesがプログラミングを始めた1979年、デバッグといえば、いわゆるprintfデバッグをみんなやっていました。
バグが有るらしいことがわかったら、ひたすら出力を埋め込んで、一行一行確認していく。
ところが2013年になった今でも、ツールこそ変わっても、これと同じやり方をしている人達がいると彼は言います。
ある調査によると、「価値を生み出すフェーズ」であるコーディングより、手動テストやデバッグに多くの時間をかけている人がいるとのこと。
Jamesは、こういったやり方を、先にコードを書いて、後からデバッグするので、Debug Later Programing(デバッグ後付プログラミング), DLP である! といって切り捨てていました。

TDDを導入!

ではどうするか。
今の時代、DLPよりイケている、TDDという方法があります。
ユニットテストを書いて、テストと開発のサイクルを小さく小さく回していくことで、後からまとめて時間をかけてデバッグ、という自体を防ぐことができるのです。

もしTDDが難しかったとしても、ユニットテストはとてもCritical, 重要なので、きちんと書きましょうとのこと。

これによって、手動でテストをしていてはとてもまかないきれない、リリースを経る毎に増大していくテストケースを、コストを増やすことなくメンテナンスすることができるようになるのです。

Technical Excellence

私が考えるに、ここで彼が伝えたかったのは、
自動テストやTDDという方法が登場しているにもかかわらず、20年以上前のやり方をなんの成長もなく続けていてはいけないということだったと思います。

Scrumにある、「ふりかえり」というプラクティスを使って、定期的に自分たちの問題(TDDの例で言えば、バグが多いとか、デバッグに時間がかかっているとか、テストが終わらないとか)と向き合い、それを解決する"Technical Excellence"を身につけ続けることが重要なのです。

DeveloperやScrum Masterがすべきこと

Jamesは、"Technical Excellence"を身につけるため、DevloperやScrum Masterには以下の様なTODOがあると話してくれました。
(managerについても話してたけど割愛)

Developerに求められることは、
自分がやっていることを透明化すること。
(透明じゃない例として、4ヶ月先まで成果が見えない とか)
そして、新しいことを学び、挑戦し、そしてそれを自分の中だけで留めるのではなく、
その技術について、チーム内での「アドバイザー」となること。

また、ScrumMasterには、
自分のチームが、そういった最新のプラクティスについての知識を持てるよう、手助けをすることが求められているとのことでした。

例えば自分のチームのプロダクトに自動テストがなかったら、、どのようにしたらいいか、どんな技術を覚えたらいいのか、まずDeveloperチームと話し合ってはどうかと、教えてもらいました。

また、その新しい技術にtryする時間などを調整したりするのもスクラムマスターの仕事になるんでしょうね。

このTODOを自分に置き換えてみると、最近、改めて、効果的な自動テストを作っていきたいという思いがあり、テストコードのよりよい書き方や、受け入れテストの自動化の検討などを行いたいと考えていました。
実は、ちょうど、TDDブートキャンプが近々開催されると聞いてました。

そこに、「周りの人達も誘って」(これが自分がなかなかできていないけど、おそらく重要なこと)参加してみることを、自分のTryとしてあげたいと思います。

 

※追記
英語版書きました