メソッド屋のブログ

米マイクロソフト Software Development Engineer 牛尾の日記です。ソフトウェア開発の上手なやり方を追求するのがライフワーク。本ブログは、個人の意見であり、所属会社とは関係がありません。

アジャイルプログラマーに必要なスキルセットのお話(Ultimate Agilist Tokyo)

Ultimate Agilist Tokyo


昨日はUltimate Agilist Tokyoというイベントでしゃべてきました。@papandaの見事なスライドと講演、@kuranukiさんのセッションの死ぬほどの面白さと刺激、@haradahikoの講演のNo Bull Know How というセッションどれを見ても面白いものでした。


No-Bull Know-How



この形式の発表ははじめて見たのですが、面白い。原田さんが、皆に向かって話をするのではなく、あくまで1人に対して、その1人の問題を解決する為の質問をするのをその他大勢で観察するというスタイルです。この形式のいいのは、コンテキストによるという話が要らなくなるので、より深い話が出来るところです。この短い時間のなかでいろんな気づきを匠に引き出す原田さんのテクはさすがです。にやりとしてしまいましたわ。


さて、このブログは私の講演のフォローの為に書いています。なぜそんなものいつも書かないくせに書いているか?というと今回はいつもと違う形式で講演をしたからです。何しろセッション資料は全て英語にしました。これは何故かというと、今回考えたアジャイルプログラマーに必要なスキルセットというお題は、インターネットでも見つからないネタですので、世界公開してしまおうと思ったからです。そのため、参加者の方のハードルをムダに上げてしまいましたすみません、、、。お詫びにといってはなんですが、一番のメインコンテンツを日本語化して公開しますので許してくださいね(ちなみにPPT全部はムリですので、各チームで考えてくれた結果のみを日本語訳をつけました)


最初は「アジャイルプログラマの定義は俺たちが決める。そして、最速でそうなってみる 」というお題にしたのですが、英語になったので、プレゼンのタイトルはこうしました


How to be an agile programmer



じゃあ、フォロー記事書いていきます。




How to be an Agile Programmer


本講演は、世界公開する事を前提にしていますので、スライドは全て英語です。ごめんなさいね!


How to be an Agile Programmer


How to be an Agile Programmer(プレゼンテーション)

How to be an Agile Programmer(日本語訳付きプレゼンテーション)




この資料で参照すべきポイントは2点で、1点は、私なりにアジャイルプログラマの条件を考えてみたスライドや、そのスキルマップを1枚の絵で表現したものを作成したことです。今回はまた、ICAgile ICAgile - Advance your career with Agile learning というアリスターコバーンが中心になって作っている、アジャイルを学びたい人がどういう知識を獲得すればいいかを検討してくれている団体があります。この団体の作っているのは、アジャイルの基本的なお話だけではなく、アジャイルプロジェクトマネジメントやアジャイルビジネスアナリシスなど、興味深い体系がつくられています。今回私はこのなかのプログラマーの知識体系を紹介がてら、まとめてみました。
 2点目は、当日参加していただいた方々にチームを作ってもらい、参加した人がどういうスキルがアジャイルプログラマにとって必要かをGolden Circle形式でまとめる、、、としたかったが間に合わなかったのでもどき的にやってもらいました。じゃあ、その結果をお話いたします。




1. 私なりに考えたアジャイルプログラマの条件


 アジャイルプログラマの条件って何でしょうか?まずアジャイルアジャイルマニフェストがあります。アジャイルソフトウェア開発宣言 アジャイルプログラマは「アジャイル」開発が出来るようにプログラマの役割で支援出来る技術が必要だと思うので、アジャイルマニフェストの12の原則のうち、プログラマに関係しそうな5つの原則を実現できるスキルを持っている人がアジャイルプログラマと仮定してみました。(英語のスライドにどの原則をピックアップしたか書いています)プレゼンテーションには、ICAgileの知識体系のうち、プログラマーの知識体系の部分に関してまとめて、その知識エリアをカバー出来るような参考文献を紹介しています。参考文献だけ日本語のも入っているので見てみてくださいね!

 そして、その要素として、アジャイルのプラクティス(Scrum, XP) 、ICAgileの体系、その他抜けてそうなものを纏めてツリー形式にしてどのプラクティスは何の為に存在するという構造が一目で見れるようなマップに纏めてみました。

 これが私の考えるアジャイルプログラマが習得すべきスキルセットの内容です。一番左がアジャイル開発宣言の価値、そして次が12の原則です。そのうちプログラマに必要っぽいものを5つピックアップしたものをかいています。後のみかたは、左の原則を実現するために、必要と思われるプラクティスが記述されています。そのプラクティスに必要なプラクティスがさらに右側に書かれている。という関係になっています。これは、要求開発アライアンスで提唱されている要求分析ツリーという手法を応用してつくったものです。このツリーをみれば、どのプラクティスが何の為にやってるか?とか、どの価値や、プラクティスを実現するためには、どういうことが必要かが一目でわかるようになっています。


Agile Programmer's Mandatory Skill Map (English)


アジャイルプログラマスキルマップ(日本語)



2. 参加者の皆さんの考えたアジャイルプログラマの条件


 さて、次に皆さんの考えたアジャイルプログラマの条件です。上がった写真を見てみましょう。共通しているところも、考え方が違うところもあるようです。面白いですね。最後に、まとめてみました。






3. 参加者の方が考えたアジャイルプログラマに必要なスキルセットのまとめ


さて、検討結果のまとめをみてみましょう。


検討結果のまとめ(PDFへのリンク)


これを見ていると、「テスト駆動開発」、「継続的インテグレーション」に関しては誰もが必要と思っているみたいです。それに必要な「オブジェクト指向」そして、「コミュニケーション」のスキルも人気があるようです。私がICAgileの体系と比較して面白いなと思ったのは、「(業務)要求の理解」が出てきているところです。これはもしかすると日本独特の傾向じゃないでしょうか?そして、テストの部分が少ない傾向にあります。ということは、これからテストが熱いかもしれませんね。また、データベースの知識エリアや、ATDD、システムテスト等の記述が無いのも気になるところです。逆にさまざまな私やICAgileでもはいっていないような内容が入っているのも面白く感じました。


 アジャイルプログラマとして、アジャイルをまわせるようになるには上記のような事を勉強する必要があると思います。大変そうですが、アジャイルプログラマプログラマであって、コーダーではありません。SEでもありません。これだけ出来ないといけないから、ある意味「価値」があると思います。その為には努力も必要です。プログラマという偉大な職業は日本ではあまりちゃんと定義されていませんが、私は本当は能力があって、皆から尊敬される、レベルの高い仕事だと思っています。皆さんはどう思いますか?



尚、この記事とは内容が異なりますが、明日にでも英語バージョンのブログもリリースして、世界公開してみますww 公開したらここでお知らせいたします。




PS. 英語版のブログ書きました


Method-Ya's Blog: Agile Programmer's Skill Set (Ultimate Agilist Tokyo)



また、αブロガーの@shinyaa31が最高のブログを書いてくれました



【Ultimate Agilist Tokyo 参加レポート】第1セッションB:アジャイルプログラマの定義は俺たちが決める。そして、最速でそうなってみる #uatagile #uatagileB - Shinya’s Daily Report