practices of an agile developer

137
達人プログラマ に学ぶ現場開発 者の習慣 第20回XPJUGユーザ会;マイクロソフト新宿オフィス; 2008-03-07(金) Practices of an Agile Developer:Working in the Real Wrold 角谷 信太郎 (株)永和システムマネジメント [email protected] 木下 史彦 (株)永和システムマネジメント [email protected]

Upload: shintaro-kakutani

Post on 01-Nov-2014

9 views

Category:

Documents


3 download

DESCRIPTION

2008/03/07

TRANSCRIPT

Page 1: Practices Of An Agile Developer

達人プログラマに学ぶ現場開発者の習慣

第20回XPJUGユーザ会;マイクロソフト新宿オフィス; 2008-03-07(金)

Practices of an Agile Developer:Working in the Real Wrold

角谷 信太郎(株)永和システムマネジメント [email protected]

木下 史彦(株)永和システムマネジメント [email protected]

Page 2: Practices Of An Agile Developer

テスト駆動開発者。日本Rubyの会理事。株式会社永和システムマネジメントサービスプロバイディング事業部チーフプログラマ。1998年、立命館大学法学部卒業後、独立系SIベンダにてSEとしての勤務を経て、2003年より現職。アジャイル開発とRubyのもたらす「楽しさ」にビジネス価値があると信じて現場で試行錯誤を続ける日々。目標は「達人プログラマ」。共著書に『Life Hacks PRESS~デジタル世代の「カイゼン」術~』(2006年、技術評論社)。翻訳書に『JavaからRubyへ――マネージャのための実践移行ガイド』(2007年、オライリー・ジャパン)。その他雑誌への寄稿多数。好きな言語はRuby。好きなメソッドは Object#extend 。好きな映画は『未来世紀ブラジル』。好きなアジャイルプラクティスのベスト3は「作る前から使う」「顧客に決断してもらう」「ソリューションログをつける」。

角谷 信太郎http://kakutani.com

Page 3: Practices Of An Agile Developer

1. “アジャイルプラクティス”2. 達人プログラマに学ぶ3. 現場開発者の習慣4. “46番目”の習慣 ΩΩΩ < ナ、ナンダッテー

本日のお品書き

Page 4: Practices Of An Agile Developer

アジャイルプラクティス

Page 5: Practices Of An Agile Developer
Page 6: Practices Of An Agile Developer

オーム社刊

Page 7: Practices Of An Agile Developer

第3刷増刷決定

Page 8: Practices Of An Agile Developer

お買い上げいただいた皆様に感謝します

Page 9: Practices Of An Agile Developer

1~100~200~300~400~

12/05~ 12/17~ 12/31~ 01/14~ 01/28~ 02/11~ 02/25~

349

205102

最高平均最低

Page 10: Practices Of An Agile Developer

今後もよろしくお願いします

Page 11: Practices Of An Agile Developer

アジャイルプラクティス

Page 12: Practices Of An Agile Developer

翻訳

Page 13: Practices Of An Agile Developer

Practices of an Agile Developer:Working in the Real World

Page 14: Practices Of An Agile Developer

プロダクトのビジョン

Page 15: Practices Of An Agile Developer

読みやすさ

Page 16: Practices Of An Agile Developer

装丁

Page 17: Practices Of An Agile Developer

アジャイルな監訳プロセス

Page 18: Practices Of An Agile Developer

http://www.fkino.net/20080214.html#p02

!"#$%&'()!"#$%&'()**+,-./01+,-./01**

!"#$%2345

6789

&'(')*+',-./01123.4556.!"#$%:;<=>?@$A

監訳者

http://www.slideshare.net/guest38a0d4/ss-209606/

イテレーティブでインクリメンタルな技術書の作り方

オーム社開発部森田チーム(仮)高尾・鹿野

編集者

Page 19: Practices Of An Agile Developer

✓ イテレーティブかつインクリメンタルなビルド

✓ バージョン管理(Subversion) ✓ 完成に近いレイアウトのPDFを毎日更新

✓ ペア「エディティング」 ✓ レトロスペクティブズ (ふりかえり)

✓ ホワイトボードの利用 (かんばん的な何か) ✓ ブラウンバックミーティング

実践したプラクティス

✓ 共同所有

✓ ペア監訳✓ RTMによるタスク管理

✓ 信頼のおける人たちによる頻繁なレビュー✓ フィードバックを重視する

✓ Tracによるバグトラッキング

Page 20: Practices Of An Agile Developer

課題

Page 21: Practices Of An Agile Developer

コミット回数(日次)

Page 22: Practices Of An Agile Developer

どうみても炎上してる

Page 23: Practices Of An Agile Developer

課題:作業の平準化

Page 24: Practices Of An Agile Developer

邦題

Page 25: Practices Of An Agile Developer

アジャイルプラクティス

Page 26: Practices Of An Agile Developer

あわせて買いたい

Page 27: Practices Of An Agile Developer

Agile Retrospectives: Making Good Teams Great

アジャイルなふりかえり:良いチームをすごいチームに

アジャイルレトロスペ(ry:強いチームを育てる「ふりかえり」の手引

Page 28: Practices Of An Agile Developer

完璧

Page 29: Practices Of An Agile Developer

Practices ofan Agile Developer:Working in the Real World

アジャイル開発者の習慣:現場で使えます

Page 30: Practices Of An Agile Developer

敗北

Page 31: Practices Of An Agile Developer

アジャイルプラクティス達人プログラマに学ぶ現場開発者の習慣

Page 32: Practices Of An Agile Developer

私たちからのメッセージ

Page 33: Practices Of An Agile Developer

達人プログラマに学ぶ現場開発者の習慣

Page 34: Practices Of An Agile Developer

装丁

Page 35: Practices Of An Agile Developer
Page 36: Practices Of An Agile Developer

(あとで話す)

Page 37: Practices Of An Agile Developer

轟木亜紀子さんGJと言わざるをえない

Page 38: Practices Of An Agile Developer

達人プログラマに学ぶ現場開発者の習慣

Page 39: Practices Of An Agile Developer

達人プログラマに学ぶ

Page 40: Practices Of An Agile Developer

達人プログラマー

Page 41: Practices Of An Agile Developer

装丁

Page 42: Practices Of An Agile Developer
Page 43: Practices Of An Agile Developer

“The Fall of the Rebel Angels-- Pieter Brueghel

叛逆天使の墜落ピーテル・ブリューゲル

(1562年)

Page 44: Practices Of An Agile Developer

Renaissanceルネサンス

Page 45: Practices Of An Agile Developer

ルネサンス✓ 人間らしさの回復✓ 絶対権威(=神)から の解放✓ 自由意志

Page 46: Practices Of An Agile Developer

別実装

Page 47: Practices Of An Agile Developer

“San Michele scaccia gli angeli ribelli -- Domenico Beccafumi

叛逆天使を退治する大天使ミカエルドミニコ・ベッカフーミ

(1525年)

Page 48: Practices Of An Agile Developer

“叛逆した天使らに神の力を振るう大天使ミカエルは、父なる神の威光により神々しいまでの輝きを放ち、それは父なる神の絶対的な存在と力を示すものであると同時に、正義による完全な勝利を表している。http://www.salvastyle.com/menu_renaissance/brueghel_angels.html

Page 49: Practices Of An Agile Developer

“The Fall of the Rebel Angels-- Pieter Brueghel

叛逆天使の墜落ピーテル・ブリューゲル

(1562年)

Page 50: Practices Of An Agile Developer

“本作では≪善徳≫と≪悪徳≫が繰り広げる、渾然とした闘争場面の描写に注力され、それは画面全体を支配する混沌とした場面表現や、天上の光の中から≪善徳≫と≪悪徳≫が入り乱れ降下してくる姿としても示されている。http://www.salvastyle.com/menu_renaissance/brueghel_angels.html

Page 51: Practices Of An Agile Developer
Page 52: Practices Of An Agile Developer

悪魔の囁きと天使の声との間で揺れる開発者の心理

Page 53: Practices Of An Agile Developer

轟木亜紀子さんGJと言わざるをえない

Page 54: Practices Of An Agile Developer

問:ソフトウェア開発は何に似ているか?

Page 55: Practices Of An Agile Developer

✓ 建築?✓ 製造業?✓ 生物の進化?✓ 油絵?✓ ガーデニング?

Page 56: Practices Of An Agile Developer

Dave Thomas says...

Photo by snoozer-05:http://www.flickr.com/photos/snoozer/539389108/

Page 57: Practices Of An Agile Developer

“Software develpment is like software development.

“ソフトウェア開発は

ソフトウェア開発に似ている

http://pragdave.blogs.pragprog.com/pragdave/2007/10/art-in-programm.html

Page 59: Practices Of An Agile Developer

ソフトウェア開発とはソフトウェア開発である✓ ふつうで正直なチーム✓ 工程はバージョン ★ ★ ★ ★ ★ ★ ★✓ 一定の出力を繰り返す✓ フィードバックを重視する✓ 開発プロセスも開発する ★ ★ ★

Page 60: Practices Of An Agile Developer

その中心には人がいる

Page 61: Practices Of An Agile Developer

いまどきのアジャイル本

Page 62: Practices Of An Agile Developer

人が中心だと説いている

Page 63: Practices Of An Agile Developer

He who chooses the beginning of a road chooses the place it leads to.

道の起点を決める者が、その行先を決める

ー『アジャイルプラクティス』

Page 64: Practices Of An Agile Developer

現場開発者の習慣

Page 65: Practices Of An Agile Developer

木下史彦(http://fkino.net)

現場リーダー兼プログラマ。日本XPユーザグループスタッフ。株式会社永和システムマネジメントサービスプロバイディング事業部所属。1998年、同志社大学工学部卒業後、独立系SIベンダにてSEとしての勤務を経て、2006年より現職。「誠実なシステム開発」をモットーに、開発の現場でアジャイル開発を実践。好きな言語はC++。好きなWin32 APIはWaitForSingleObject。好きな映画は『ビューティフル・マインド』。好きなアジャイルプラクティスのベスト3は「機雷がなんだ! 全速前進!」「頻繁なデモでフィードバックを得る」「はやめに統合、こまめに統合」。

Page 66: Practices Of An Agile Developer

現場開発者の習慣

Page 67: Practices Of An Agile Developer

最近話題の本

Page 68: Practices Of An Agile Developer

夢をかなえるゾウ

Page 69: Practices Of An Agile Developer

✓ガネーシャ✓関西弁をしゃべるゾウ✓史上最悪のメンター

✓普通のサラリーマン✓変わりたいけど三日坊主で終わってしまう

夢をかなえるゾウ

Page 70: Practices Of An Agile Developer

ガネーシャ名言集✓ 靴をみがく✓ コンビニでお釣りを寄付する✓ 食事を腹八分におさえる✓ 人が欲しがっているものを先取りす

る✓ 会った人を笑わせる✓ トイレ掃除する✓ まっすぐ帰宅する✓ その日頑張れた自分を褒める✓ 一日何かをやめてみる✓ 決めたことを続けるための環境をつ

くる✓ 毎朝、全身鏡を見て身なりを整える✓ 自分が一番得意なことを人に聞く✓ 自分の苦手なことを人に聞く✓ 夢を楽しく想像する✓ 運がよいと口に出していう

✓ ただでもらう✓ 明日の準備をする✓ 身近にいる一番大事な人を喜ばせる✓ 誰か一人のいいところを見つけて褒

める✓ 人の長所を盗む✓ 求人情報を見る✓ お参りにいく✓ 人気店にはいり、人気の理由を観察

する✓ プレゼントして驚かせる✓ やらずに後悔していることを今日か

ら始める✓ サービスとして夢を語る✓ 人の成功をサポートする✓ 応募する✓ 毎日、感謝する

Page 71: Practices Of An Agile Developer

なんか似てへん?

Page 72: Practices Of An Agile Developer

天使の言葉1. 非難してもバグは直りません2. 応急処置の誘惑に打ち勝ちなさい3. 批判するならアイデアになさい、人ではなく4. 正しいことをしましょう5. 技術の変化に付いていきましょう6. あなた自身とチームのレベルを引き上げましょう7. 新しきを学び、古きを捨てましょう8. なぜ? と問い続けなさい9. タスクはため込まずに対処しましょう10. 顧客に決断してもらうのです11. 優れた設計は地図です。少しずつ発展させるのです12. ニーズに裏打ちされた技術を選びなさい13. いついかなる時でもプロジェクトをリリース可能な状態に

しておくのです14. はやめの統合、こまめな統合を心がけましょう15. 最初からアプリケーションのデプロイを自動化しましょう16. 見通しのいい開発をしましょう17. インクリメンタルに開発しなさい18. 実作業を基準に見積りなさい19. 自動化されたユニットテストを習慣にしなさい20. 作る前から使いましょう21. 違いがあれば結果も変わります22. 重要なビジネスロジックのテストを用意しましょう23. 残作業を計測しなさい24. あらゆる不満に真実が潜んでいるのです25. 小賢しいコードではなく、わかりやすいコードを書きなさ

26. 伝えるためにコメントはあるのです27. トレードオフを積極的に考慮しましょう28. コードを書くときは編集・ビルド・テストのサイクルを短

くなさい29. うまくいく最もシンプルな解法を考えなさい30. クラスは狙いを絞り、コンポーネントは小さく保ちなさい31. Tell, Don’t Ask ――― 求めるな、命じよ32. コードを置き換えてシステムを拡張しなさい33. 問題とその解決策を記録しなさい34. 警告はエラーと同じです35. 問題を切り分けて攻めなさい36. 発生した例外はすべて対処するか、さもなくば伝播させな

さい37. 役に立つエラーメッセージを提供しなさい38. スタンドアップミーティングをしなさい39. まともな設計は積極的にコードを書くプログラマから生ま

れます40. 共同所有を大切にしなさい41. メンターになりましょう42. みんなに問題を解決する機会を与えなさい43. コードの共有には段取りがあります44. あらゆるコードをレビューしなさい45. みんなに知らせましょう

Page 73: Practices Of An Agile Developer

天使とガネーシャ

Page 74: Practices Of An Agile Developer

正しいことをしましょう

天使の言葉

Page 75: Practices Of An Agile Developer

決めたことを続けるために環境をつくる

ガネーシャ名言集

Page 76: Practices Of An Agile Developer

共通していること✓当たり前のこと✓ちょっとした心がけ✓すぐ行動にうつせる

Page 77: Practices Of An Agile Developer

当たり前のこと✓正しいことをしましょう✓あなた自身とチームのレベルを引き上げましょう✓まっすぐ帰宅する

Page 78: Practices Of An Agile Developer

ちょっとした心がけ✓非難してもバグは直りません✓タスクはため込まずに対処しましょう✓食事を腹八分におさえる

Page 79: Practices Of An Agile Developer

すぐ行動にうつせる✓問題とその解決策を記録しなさい✓スタンドアップミーティングをしなさい✓トイレを掃除する

Page 80: Practices Of An Agile Developer

習慣

Page 81: Practices Of An Agile Developer

フレームワーク✓悪魔の囁き✓天使の言葉✓こんな気分✓バランスが肝心

Page 82: Practices Of An Agile Developer

こんな気分✓日々の現場で自分が感じる気持ち✓チェックリストではない✓「で、どうやった?」

Page 83: Practices Of An Agile Developer

バランスが肝心✓天使と悪魔の間で揺れる開発者の心理✓きれい事だけじゃ済まされない現場✓アジャイル開発はゼロサムゲームじゃない✓「あきらめてもええんやで」

Page 84: Practices Of An Agile Developer

習慣✓当たり前のこと✓ちょっとした心がけ✓すぐ行動にうつせる

Page 85: Practices Of An Agile Developer

難しいのは継続すること

Page 86: Practices Of An Agile Developer

劇的に変わる方法✓不幸・逆境・事件✓応募する

Page 87: Practices Of An Agile Developer

私はいかにしてアジャイル開発者への

道を選んだか

Page 88: Practices Of An Agile Developer

本書に従えば、私たち監訳者は二人とも(程度はさておき)アジャイル開発者です。なぜそんなことを断言できるのかというと、私たちは「アジャイル開発者になることを始めた」からです。だからきっと、誰にでもできます。始めさえすれば。『アジャイルプラクティス』監訳者あとがき

Page 89: Practices Of An Agile Developer

アジャイル開発者になることを

始めた

Page 90: Practices Of An Agile Developer

✓きっかけ✓後押し✓決断✓感謝

Page 91: Practices Of An Agile Developer

きっかけ

Page 92: Practices Of An Agile Developer

5年前5years ago

Page 93: Practices Of An Agile Developer

窮地のプロジェクト

Page 94: Practices Of An Agile Developer

✓開発者100人✓10チーム✓チームリーダー

Page 95: Practices Of An Agile Developer

✓計画を絶対視する✓メールが1日に100通✓人を責める

Page 96: Practices Of An Agile Developer

自分はどうだったか

Page 97: Practices Of An Agile Developer

✓マイクロマネジメント✓怖かった✓人を信頼していなかった

Page 98: Practices Of An Agile Developer

悪いことは全部やった

Page 99: Practices Of An Agile Developer

後輩が(会社を)辞めたいと言い出した

Page 100: Practices Of An Agile Developer

自分には何もできなかった

Page 101: Practices Of An Agile Developer

そのプロジェクトは終わり

次のプロジェクトへ

Page 102: Practices Of An Agile Developer

少しだけ人を信頼してみる

ことにした

Page 103: Practices Of An Agile Developer

あるのは、やり方ではなく、あり方だ

老子

Page 104: Practices Of An Agile Developer

アジャイル開発者になることを

始めた

Page 105: Practices Of An Agile Developer

後押し

Page 106: Practices Of An Agile Developer

3年前3years ago

Page 107: Practices Of An Agile Developer

2人のケンジ

Page 108: Practices Of An Agile Developer

平鍋健児さん

Page 109: Practices Of An Agile Developer

最後のスライドは、セレンディピティについて。キャリアプランを考える上で、偶有性の占める割合が大きく、計画通りにはいかない。しかし、「思う」、ことがまず決定的に重要で、それが出

来事を産み、行動を生む。特に「人に会いに行く」ということはとても大きな意味を持つことを伝えたかった。

『An Agile Way』2007/11/22

Page 110: Practices Of An Agile Developer

太田憲治さん

Page 111: Practices Of An Agile Developer

XPを始めた

Page 112: Practices Of An Agile Developer

手軽で簡単で楽しみながらやるための

工夫や仕組み作り

Page 113: Practices Of An Agile Developer
Page 114: Practices Of An Agile Developer

決断

Page 115: Practices Of An Agile Developer

2年前2years ago

Page 116: Practices Of An Agile Developer

応募する『夢をかなえるゾウ』

Page 117: Practices Of An Agile Developer

XP祭り2006

Page 118: Practices Of An Agile Developer

Agile2008

Page 119: Practices Of An Agile Developer

▶45みんなに知らせる

『アジャイルプラクティス』

Page 120: Practices Of An Agile Developer

自分の状況、アイデア、関心のある事柄などを公開しなさい。

『アジャイルプラクティス』

Page 121: Practices Of An Agile Developer

本書を読むだけでは、エクストリームプログラマにはなれない。エクストリーム方式によるプログラミング、XPの価値のすべてと少なくとも一部のプラクティスを共有する人のコミュニティへの参加、自分の知っている情報の共有化を行って初めて、エクストリームプログラマになれるのだ。

『XPエクストリーム・プログラミング入門』

Page 122: Practices Of An Agile Developer

感謝

Page 123: Practices Of An Agile Developer

毎日、感謝する『夢をかなえるゾウ』

Page 124: Practices Of An Agile Developer

今日は第20回XPユーザ会

Page 125: Practices Of An Agile Developer

日本のXPコミュニティに

感謝を

Page 126: Practices Of An Agile Developer

『達人プログラマー』の出版に始まった長い道のりだけれど、おかげで楽しい旅路になっている。

『アジャイルプラクティス』アンディからの謝辞

Page 127: Practices Of An Agile Developer

難しいのは継続すること

Page 128: Practices Of An Agile Developer

✓考え方を少しだけ変えてみる✓人に会いに行く✓楽しみながらやるための工夫や仕組み作り✓みんなに知らせる✓『アジャイルプラクティス』をいつも傍に

Page 129: Practices Of An Agile Developer

もうひとつのアジャイルプラクティス

Page 130: Practices Of An Agile Developer

▶46好きな

アジャイルプラクティスを発表する

Page 131: Practices Of An Agile Developer

「早く終わらないかなぁ。ささっと切り上げてビール飲みに行こうぜ」

Page 132: Practices Of An Agile Developer

好きなアジャイルプラクティスを発表しましょう自分の好きなアジャイルプラクティスについてエピソードを交えてみんなの前で発表するのです。

Page 133: Practices Of An Agile Developer

こんな気分 アジャイルプラクティスについてもっと語り合いたいと思える。ビールはもう少し我慢しなさい。

Page 134: Practices Of An Agile Developer

バランスが肝心•みんなが少しずつ発表できるようにしょう。•ひとりで喋りすぎては駄目だ。

Page 135: Practices Of An Agile Developer

つづきはビンゴゲームで

Page 136: Practices Of An Agile Developer

ご清聴ありがとうございました

Page 137: Practices Of An Agile Developer

何かご質問は?