プレゼンビフォアアフタ
DESCRIPTION
英語プレゼンのレビュー前、レビュー後の恥ずかしい資料です。しかも日本語の元ネタがあるページはそれもつけておきました。TRANSCRIPT
レビュー前 (抜粋)
Agile Fundamental Skill Set
Produced by Tsuyoshi Ushio
A presentation for elementary programmers of Agile
Elementary バカにされてる
気分になる
Agile Fundamental Skill Set
• learn about Agile technical skill set in 90 min. • Know about book recommendations. • Watch demonstration of TDD.
• Make some teams (4 people in each team) • Think about important agile skill set for you. • Write your ideas and share these.
In this presentation, you will …
What will you do?
Ranking You should learn it now! You can learn it. Development Team should cover it.
Mission #1 Mandatory Skills (5min) Discuss with Team members about …
・What skills are needed for agile programmers?
Please tell me your opinions. Discuss and write down and share.
受動態多用 日本人っぽい
Agile Practice Overview
Reference this blog and customize it. hAp://blogs.itmedia.co.jp/hiranabe/2012/09/rightwing-‐and-‐leJwing-‐of-‐agile.html
Business Value Customer SaOsfacOon
Market CreaOon
CollaboraOon , Team Technical PracOce
Goal
Scrum VisualizaOon RetrospecOve
IteraOon Daily Standup MeeOng
Human / Mind
Engineering pracOce (XP) ConOnuous IntegraOon ConOnuous Delivery
Automated Build / Test / Deploy Version Control TDD / Refactoring
Right Wing LeJ Wing
国によっては 敏感!
Five Knowledge Areas
1. Designing & Programming 2. Testing 3. Team and behaviors 4. Structuring Work 5. Environment
新規作成 ページ例
1. Designing & Programming
Refactoring and Good Design support TDD
TDD (Test Driven Development)
Refactoring Good Design
新規作成 ページ例
Test Driven Development • Test-driven development is a software development technique that uses really short development cycles to incrementally design your software.
Write Test Fail Write Code Success
Refactoring
Refresh the Design
Test Driven Development NoOce : you should not execute add funcOon and refactoring on the same Ome.
8
日本語元ネタ ありの例
Refactoring • Refactoring is the art of safety improving the design of existing code.
Planed Design EvoluOonal Design
Before AJer
• If the soJware design changes, the design is ge]ng worse. • Cannot embrace change • It takes too much Ome for analyze and design.
• If the soJware design changes, the design is sOll smart. • Embrace change • It takes small amount of Ome for analyze and design.
AJer the design , implement it.
Design Programming
Small design ,Small implementaOon, small refactoring.
design
Add funcOon Add tests
Refactoring
Point 1. Basic skill of design is same. 2. Automate Test 3. Learn about Refactoring catalog
9
日本語元ネタ あり例。ダサイ
Good Design • Agile Programmer has an ability to think some good designs.
10
Simple Design
Clean Programming Design Principles
/ PaAerns
Architecture
TDD / Refactoring
新規作成例
Simple Design If you keep it simple, you will get … Easy to change, Less time, Easy to Understand it. We can’t predict the future
11
Beck’s 4 rules of simple design
Pass all tests
Contains no duplicaOons
Express the intent of the programmers
Minimizes the number of classes and methods
hAp://theholyjava.wordpress.com/2011/02/14/clean-‐code-‐four-‐simple-‐design-‐rules/
Extreme Prgramming Explained: Embrace Change – Kent Beck
OOP (Object Oriented Programming)
新規作成例
Clean Programming Poorly written code is hard to understand and hard to evolve, making code base more expensive to maintain.
12
The Art of Readable Code: DusOn Boswell, Trevor Foucher
Avoid Generic Names Like tmp and retval
The Art of Readable Code:DusOn Boswell, Trevor Foucher
var euclidean_norm = function (v) {�for (var i = 0; I < v.length; i += 1) � retval += v[i] + v[i]; � return Math.sqrt(retval); �};
Instead of retval you should use sum_squares Because it would show the meaning of the variable
新規作成例
Estimating Estimate user stories on the product backlog using relative estimate.
13
Planning Poker
EsOmate Size = 0, 1, 2, 3, 5, 8, 13, 20, 40 and 100. Fetch a user story which seems smallest size and set size to 2. Compare user stories with others and define these size.
Agile EsOmaOng and Planning Mike Corn
恥ずかしい文法 ミス指摘の例
レビュー後 (抜粋)
Agile Fundamental Skill Set
Produced by Tsuyoshi Ushio
Introduction of Agile programmer Skills
Agile Fundamental Skill Set
• learn about Agile technical skill set in 90 min. • Know about book recommendations. • Watch demonstration of TDD.
• Make some teams (4 people in each team) • Think about important agile skills and build your future skill set. • Write your ideas and share these.
In this presentation, you will …
What will you do?
Ranking Everybody must have A Team should have A Team may have
Mission #1 Mandatory Skills (5min) Discuss with Team members about …
・What skills do you need as an agile programmer?
Please share your team’s opinions. Discuss and write down and share.
Agile Practice Overview
Reference this blog and customize it. hAp://blogs.itmedia.co.jp/hiranabe/2012/09/rightwing-‐and-‐leJwing-‐of-‐agile.html
Business Value Customer SaOsfacOon
Market CreaOon
CollaboraOon , Team Technical PracOce
Goal
Scrum VisualizaOon RetrospecOve
IteraOon Daily Standup MeeOng
Human / Mind
Engineering pracOce (XP) ConOnuous IntegraOon ConOnuous Delivery
Automated Build / Test / Deploy Version Control TDD / Refactoring
Five Knowledge Areas
1. Designing & Programming 2. Testing 3. Team and behaviors 4. Structuring Work 5. Environment
1. Designing & Programming
Refactoring and Good Design support TDD
TDD (Test Driven Development)
Refactoring Good Design
Test Driven Development • Test-driven development is a software development technique that uses really short development cycles to incrementally design your software.
Write Test Fail Write Code Success
Refactoring
Refresh the Design
Test Driven Development NoOce : you should not execute add funcOon and refactoring on the same Ome.
21
Refactoring • Refactoring is the art of safety improving the design of existing code.
Planed Design EvoluOonal Design
Before AJer
• If the soJware design changes, the design is ge]ng worse. • Cannot embrace change • It takes too much Ome for analyze and design.
• If the soJware design changes, the design is sOll smart. • Embrace change • It takes small amount of Ome for analyze and design.
AJer the design , implement it.
Design Programming
Small design ,Small implementaOon, small refactoring.
design
Add funcOon Add tests
Refactoring
Point 1. Basic skill of design is same. 2. Automate Test 3. Learn about Refactoring catalog
22
Good Design • Agile Programmer has an ability to think some good designs.
23
Simple Design
Clean Programming Design Principles
/ PaAerns
Architecture
TDD / Refactoring
Simple Design If you keep it simple, you will get … Easy to change, Less time, Easy to Understand it. We can’t predict the future
24
XP Simplicity Rules
Run all the tests.
Express every idea that we need to express
Say everything Once And Only Once
Has no superfluous parts
hAp://c2.com/xp/XpSimplicityRules.html
Extreme Prgramming Explained: Embrace Change – Kent Beck
OOP (Object Oriented Programming)
Clean Programming Poorly written code is hard to understand and hard to evolve, making code base more expensive to maintain.
25
The Art of Readable Code: DusOn Boswell, Trevor Foucher
Avoid Generic Names Like tmp and retval
The Art of Readable Code:DusOn Boswell, Trevor Foucher
var euclidean_norm = function (v) {�for (var i = 0; I < v.length; i += 1) � retval += v[i] + v[i]; � return Math.sqrt(retval); �};
Instead of retval you should use sum_squares Because it would show the meaning of the variable
Estimating Estimate user stories on the product backlog using relative estimation.
26
Planning Poker
EsOmate Size = 0, 1, 2, 3, 5, 8, 13, 20, 40 and 100. Fetch a user story which seems smallest size and set size to 2. Compare user stories with others and define these size.
Agile EsOmaOng and Planning Mike Corn
日本語元ネタ (抜粋)
テスト駆動開発 • プログラムに必要な各機能について、最初にテストを書き、そのテストが動作する最低限の実装を行った後、コードを洗練させるという短い工程を繰り返す開発方法
テストコード作成 テスト失敗 コーディング テスト成功
設計改善(リファクタリング)
設計改善を定期的に 実施する
テスト駆動開発イメージ
注:機能追加と、リファクタリングを同時に行わないことがポイントです
28
リファクタリング • 外部から見た時の振る舞いを保ちつつ、理解や修正が簡単になるように、ソフトウェアの内部構造を変化させること
先行型設計 進化型設計
Before AJer
• ソフトウェアの変更によって設計が崩れる • 想像しなかった変更に弱い • 分析/設計に時間がかかる
• ソフトウェアの変更後も設計が崩れない • 変化が前提であり、変更に強い • 分析/設計はシンプルに実施するので時間が かからない
最初にじっくり設計を考え、その後プログラミングする
設計 プログラミング
少し設計、少し機能追加、リファクタリングを繰り返す
少し設計
少し機能追加 少しテスト追加
リファクタリング
導入のPoint 1. 必要な基本リテラシは先行型設計と同じ 2. 自動テストがあること 3. リファクタリングのイメージを知る事
29