2. Elementary
バカにされてる
気分になる
A presentation for elementary programmers of Agile
Agile Fundamental Skill Set
Produced by Tsuyoshi Ushio
3. Agile Fundamental Skill Set
In this presentation, you will …
• learn about Agile technical skill set in 90 min.
• Know about book recommendations.
• Watch demonstration of TDD.
What will you do?
• Make some teams (4 people in each team)
• Think about important agile skill set for you.
• Write your ideas and share these.
Ranking
You should learn it now!
You can learn it.
Development Team should cover it.
4. 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.
5. Agile Practice Overview
Goal
Business
Value
国によっては
Customer
SaOsfacOon
敏感!
Market
CreaOon
LeJ
Wing
Right
Wing
CollaboraOon
,
Team
Technical
PracOce
Scrum
Engineering
pracOce
(XP)
VisualizaOon
ConOnuous
IntegraOon
RetrospecOve
ConOnuous
Delivery
IteraOon
Automated
Build
/
Test
/
Deploy
Daily
Standup
MeeOng
Version
Control
Human
/
Mind
TDD
/
Refactoring
Reference
this
blog
and
customize
it.
hAp://blogs.itmedia.co.jp/hiranabe/2012/09/rightwing-‐and-‐leJwing-‐of-‐agile.html
6. Five Knowledge Areas
新規作成
ページ例
1. Designing & Programming
2. Testing
3. Team and behaviors
4. Structuring Work
5. Environment
7. 1. Designing & Programming
新規作成
ページ例
TDD
(Test
Driven
Development)
Refactoring
Good
Design
Refactoring and Good Design support TDD
8. Test Driven Development
• Test-driven development is a software development technique that
uses really short development cycles to incrementally design your
software.
日本語元ネタ
ありの例
Test
Driven
Development
NoOce
:
you
should
not
execute
add
funcOon
and
refactoring
on
the
same
Ome.
Write Test
Fail
Write Code
Success
Refresh the Design
Refactoring
8
9. Refactoring
• Refactoring is the art of safety improving the design of existing code.
Planed
Design
EvoluOonal
Design
AJer
the
design
,
implement
it.
Small
design
,Small
implementaOon,
small
refactoring.
design
Design
Programming
Add
funcOon
Refactoring
Add
tests
Before
AJer
• If
the
soJware
design
changes,
the
design
is
ge]ng
worse.
• If
the
soJware
design
changes,
the
design
is
sOll
smart.
• Cannot
embrace
change
• Embrace
change
• It
takes
too
much
Ome
for
analyze
and
design.
• It
takes
small
amount
of
Ome
for
analyze
and
design.
Point
日本語元ネタ
1.
Basic
skill
of
design
is
same.
あり例。ダサイ
2.
Automate
Test
3.
Learn
about
Refactoring
catalog
9
10. Good Design 新規作成例
• Agile Programmer has an ability to think some good designs.
TDD
/
Refactoring
Simple
Design
Design
Principles
Clean
Programming
/
PaAerns
Architecture
10
11. 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
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
Extreme
Prgramming
Explained:
Embrace
Change
–
Kent
Beck
hAp://theholyjava.wordpress.com/2011/02/14/clean-‐code-‐four-‐simple-‐design-‐rules/
11
OOP
(Object
Oriented
Programming)
12. Clean Programming
Poorly written code is hard to understand and hard to evolve, 新規作成例
making code base more expensive to maintain.
Avoid
Generic
Names
Like
tmp
and
retval
var euclidean_norm = function (v) {
for (var i = 0; I < v.length; i += 1)
retval += v[i] + v[i];
return Math.sqrt(retval);
};
The
Art
of
Readable
Code:DusOn
Boswell,
Trevor
Foucher
The
Art
of
Readable
Code:
DusOn
Boswell,
Trevor
Foucher
Instead
of
retval
you
should
use
sum_squares
Because
it
would
show
the
meaning
of
the
variable
12
13. Estimating
Estimate user stories on the product backlog using relative estimate.
恥ずかしい文法
ミス指摘の例
Planning
Poker
Agile
EsOmaOng
and
Planning
Mike
Corn
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.
13
15. Introduction of Agile programmer Skills
Agile Fundamental Skill Set
Produced by Tsuyoshi Ushio
16. Agile Fundamental Skill Set
In this presentation, you will …
• learn about Agile technical skill set in 90 min.
• Know about book recommendations.
• Watch demonstration of TDD.
What will you do?
• 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.
Ranking
Everybody must have
A Team should have
A Team may have
17. 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.
18. Agile Practice Overview
Goal
Business
Value
Customer
SaOsfacOon
Market
CreaOon
CollaboraOon
,
Team
Technical
PracOce
Scrum
Engineering
pracOce
(XP)
VisualizaOon
ConOnuous
IntegraOon
RetrospecOve
ConOnuous
Delivery
IteraOon
Automated
Build
/
Test
/
Deploy
Daily
Standup
MeeOng
Version
Control
Human
/
Mind
TDD
/
Refactoring
Reference
this
blog
and
customize
it.
hAp://blogs.itmedia.co.jp/hiranabe/2012/09/rightwing-‐and-‐leJwing-‐of-‐agile.html
19. Five Knowledge Areas
1. Designing & Programming
2. Testing
3. Team and behaviors
4. Structuring Work
5. Environment
20. 1. Designing & Programming
TDD
(Test
Driven
Development)
Refactoring
Good
Design
Refactoring and Good Design support TDD
21. Test Driven Development
• Test-driven development is a software development technique that
uses really short development cycles to incrementally design your
software.
Test
Driven
Development
NoOce
:
you
should
not
execute
add
funcOon
and
refactoring
on
the
same
Ome.
Write Test
Fail
Write Code
Success
Refresh the Design
Refactoring
21
22. Refactoring
• Refactoring is the art of safety improving the design of existing code.
Planed
Design
EvoluOonal
Design
AJer
the
design
,
implement
it.
Small
design
,Small
implementaOon,
small
refactoring.
design
Design
Programming
Add
funcOon
Refactoring
Add
tests
Before
AJer
• If
the
soJware
design
changes,
the
design
is
ge]ng
worse.
• If
the
soJware
design
changes,
the
design
is
sOll
smart.
• Cannot
embrace
change
• Embrace
change
• It
takes
too
much
Ome
for
analyze
and
design.
• It
takes
small
amount
of
Ome
for
analyze
and
design.
Point
1.
Basic
skill
of
design
is
same.
2.
Automate
Test
3.
Learn
about
Refactoring
catalog
22
23. Good Design
• Agile Programmer has an ability to think some good designs.
TDD
/
Refactoring
Simple
Design
Design
Principles
Clean
Programming
/
PaAerns
Architecture
23
24. 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
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
Extreme
Prgramming
Explained:
Embrace
Change
–
Kent
Beck
hAp://c2.com/xp/XpSimplicityRules.html
24
OOP
(Object
Oriented
Programming)
25. Clean Programming
Poorly written code is hard to understand and hard to evolve,
making code base more expensive to maintain.
Avoid
Generic
Names
Like
tmp
and
retval
var euclidean_norm = function (v) {
for (var i = 0; I < v.length; i += 1)
retval += v[i] + v[i];
return Math.sqrt(retval);
};
The
Art
of
Readable
Code:DusOn
Boswell,
Trevor
Foucher
The
Art
of
Readable
Code:
DusOn
Boswell,
Trevor
Foucher
Instead
of
retval
you
should
use
sum_squares
Because
it
would
show
the
meaning
of
the
variable
25
26. Estimating
Estimate user stories on the product backlog using relative estimation.
Planning
Poker
Agile
EsOmaOng
and
Planning
Mike
Corn
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.
26