1. Introduction of Agile programmer Skills
Agile Fundamental Skill Set
Produced by Tsuyoshi Ushio
2. 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
3. Tsuyoshi Ushio
• Consultant, Samurai of Agile
• Agile, OO, Business Analysis , Project Manager
• 2001 - 2005 Agile Programmer, PM , Join Community(XP-Jug in Japan)
• 2003 Agile2003, wrote OO/Agile Best Seller Book in Japan
• 2006 - 2009 Consultant
• 2009 CEO of SimpleArchitect
• 2011 Established E-Agility(Community)
• 2011 Agile2011 Conference Speaker (Salt Lake City)
• Vocalist of Za Michael.
4. 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.
5. What is the GOAL of software development?
Our
highest
priority
is
to
sa#sfy
the
customer
through
early
and
con#nuous
delivery
Of
valuable
so5ware.
Principles
behind
the
agile
manifesto
h?p://agilemanifesto.org/principles.html
7. Cost of change curve
• The cost of fixing errors increases exponentially later they are
detected the development lifecycle.
• If we try it to be flat, what would happen in a software
development.
Serial
Agile
Cost
Cost
Time
Time
h?p://www.agilemodeling.com/essays/costOfChange.htm
7
8. Serial
It
works
well
for
buildings
Requirements
but
isn’t
proper
to
soQware
development.
Design
ImplementaPon
Test
8
9. Agile Development
Agile Process
A sprint is a period of time which specific work
1 – 4 weeks
has to be completed and made ready for review.
Release
Planning
Sprint #1
Sprint #2
Spring #3
・・・
Decide
Sprint Scope
Potentially
Shippable
Product
Sprint
Review
Planning
Retrospectives
Development
Kaizen
1st Day
Last Day
9
10. Roles (Scrum)
Scrum
Master
is
accountable
for
removing
impediments
to
the
ability
of
the
team
to
deliver
the
sprint.
• Ensures
the
team
is
fully
funcPonal
and
producPve
• Shields
from
external
interferences
• Ensures
the
process
is
followed
Product
Owner
Development
Team
Is
accountable
for
Is
responsible
for
Ensuring
that
the
team
delivers
Delivering
poten#ally
shippable
product
value
to
business.
increments
at
the
end
of
each
sprint.
• Try
to
realize
the
sprint
goal
• Defines
the
feature
of
the
product
• Organizes
and
manages
itself
and
its
work
• Decides
on
release
date
and
content
• Review
work
results
with
the
Product
Owner
• PrioriPzes
features
according
to
market
value
• Cross-‐funcPonal,
5
–
9
members
• Accept
or
rejects
work
results
10
16. Now, Agile is popular
in Japan but…
• Shallow Understanding of Agile
• Poor Engineering practices
• Don’t care about Prerequisites of
Agile practices
16
19. I still believe
Agile is AWESOME!
19
http://terrapin21.s502.xrea.com/?p=153
20. We can never go back to the past
h?p://www.fanpop.com/clubs/back-‐to-‐the-‐future/images/29447185/Ptle/back-‐future-‐wallpapers-‐photo
21. I want see you succeed in
running projects
using Agile
21
22. Get the Value!
Chance to get the
Competence!
To Vietnam!
22
23. Agile Practice Overview
Goal
Business
Value
Customer
SaPsfacPon
Market
CreaPon
CollaboraPon
Team
Technical
PracPce
Scrum
Engineering
pracPce
(XP)
VisualizaPon
ConPnuous
IntegraPon
RetrospecPve
ConPnuous
Delivery
IteraPon
Automated
Build
/
Test
/
Deploy
Daily
Standup
MeePng
Version
Control
Human
/
Mind
TDD
/
Refactoring
Reference
this
blog
and
customize
it.
h?p://blogs.itmedia.co.jp/hiranabe/2012/09/rightwing-‐and-‐leQwing-‐of-‐agile.html
24. Five Knowledge Areas
1. Designing & Programming
2. Testing
3. Team and behaviors
4. Structuring Work
5. Environment
25. 1. Designing & Programming
TDD
(Test
Driven
Development)
Refactoring
Good
Design
Refactoring and Good Design support TDD
26. 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
NoPce
:
you
should
not
execute
add
funcPon
and
refactoring
on
the
same
Pme.
Write Test
Fail
Write Code
Success
Refresh the Design
Refactoring
26
27. Refactoring
• Refactoring is the art of safety improving the design of existing code.
Planed
Design
EvoluPonal
Design
AQer
the
design
,
implement
it.
Small
design
,Small
implementaPon,
small
refactoring.
design
Design
Programming
Add
funcPon
Refactoring
Add
tests
Before
AQer
• If
the
soQware
design
changes,
the
design
is
gegng
worse.
• If
the
soQware
design
changes,
the
design
is
sPll
smart.
• Cannot
embrace
change
• Embrace
change
• It
takes
too
much
Pme
for
analyze
and
design.
• It
takes
small
amount
of
Pme
for
analyze
and
design.
Point
1.
Basic
skill
of
design
is
same.
2.
Automate
Test
3.
Learn
about
Refactoring
catalog
27
28. TDD / Refactoring Books
Test
Driven
Development:
Refactoring:
Improving
the
Design
Refactoring
Workbook
By
Example
of
ExisPng
Code
William
C.
Wake
(2003)
Kent
Beck
(2002)
MarPn
Fowler
,
Kent
Beck,
John
Brant,
William
Opdyke,
Don
Roberts(1999)
28
30. Good Design
• Agile Programmer has an ability to think some good designs.
TDD
/
Refactoring
Simple
Design
Design
Principles
Clean
Programming
/
Pa?erns
Architecture
30
31. 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
h?p://c2.com/xp/XpSimplicityRules.html
31
OOP
(Object
Oriented
Programming)
32. 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:DusPn
Boswell,
Trevor
Foucher
The
Art
of
Readable
Code:
DusPn
Boswell,
Trevor
Foucher
Instead
of
retval
you
should
use
sum_squares
Because
it
would
show
the
meaning
of
the
variable
32
33. Design Principle / Pattern
Design principle and pattern will solve common or difficult design
problems.
Open-‐Closed
Principle
Client
Server
Agile
SoQware
Development:
Robert.
C.
MarPn
<<interface>>
Client
Client
Interface
Server
An
Object
Oriented
Principle:
Modules
and
funcPons
should
be
open
for
extension
33
But
closed
for
modificaPons.
Head
First
Design
Pa?erns:
Elisabeth
Freeman,
Eric
Freeman,
Bert
Bates,
Kathy
Sierra,
Elisabeth
Robson
34. Advanced
Architecture
The software architecture of a computing system is the set of structures
needed to reason about the system, which comprise software elements,
Relations among them, and properties of both.
Structures
sample
Just
Enough
SoQware
Architecture
George
H.
Fairbanks
h?p://www.uml-‐diagrams.org/package-‐diagrams-‐examples.html
h?p://adrianmejia.com/blog/2011/08/11/ruby-‐on-‐rails-‐architectural-‐design/
h?p://www.ibm.com/developerworks/raPonal/tutorials/rt-‐umlprofiles/secPon2.html
h?p://www.codeproject.com/ArPcles/22769/IntroducPon-‐to-‐Object-‐Oriented-‐Programming-‐Concep
It
contains
not
only
applicaPon
architecture,
but
also
include
Pa?erns
of
Enterprise
network,
infra
structure
architecture.
ApplicaPon
Architecture
MarPn
Fowler
34 You
can
learn
architecture
by
learning
open
source
frameworks
35. Learn and Practice
You
can
prac#ce
and
share
…
The
4
rules
of
simple
design,
OO
principles,
TDD,
FuncPonal
programming,
ConPnuous
Refactoring
by
Coderetreat
h?p://mybroadband.co.za/news/soQware/65218-‐coderetreat-‐
programming-‐event-‐grows-‐in-‐sa.html
h?p://coderetreat.org
37. Advanced
Software Testing
A development team should cover these knowledge areas.
Automated
Business
Facing
Manual
&
Manual
Exploratory
TesPng
Func#onal
Tests
Scenarios
Story
Tests
SupporPng
the
Team
Usability
TesPng
Prototypes
CriPque
Product
Acceptance
Test
SimulaPons
Alpha
/
Beta
A
PracPPoner’s
Guide
to
SoQware
Test
Design
Lee
Copeland
Performance
TesPng
Unit
Tests
Load
TesPng
Component
Tests
Security
TesPng
“ility”
TesPng
Automated
Tools
Technology
Facing
Agile
TesPng
Quadrants
Agile
TesPng:
A
PracPcal
Guide
for
Testers
and
Agile
Team
37 Agile
TesPng
:
A
PracPcal
Guide
for
Testers
and
Agile
Team
Lisa
Crispin,
Janet
Gregory
Lisa
Crispin,
Janet
Gregory
38. 3. Team and Behavior
CollecPve
Team
CollaboraPon
Accountability
AcPvity
CommunicaPon
CollecPve
Visualize
Design
Ownership
Learn Software Testing
39. Communication Design
The team should have UML Modeling skill.
You may use to communicate with your team mate and read books.
h?p://trelford.com/blog/category/UML.aspx
UML
DisPlled
(3rd
EdiPon)
UML
Sequence
Diagram
MarPn
Fowler
UML
Class
Diagram
(Wihteboard)
39
41. Analog Tools
User
Story
Mapping
h?p://www.infoq.com/jp/news/2010/04/scrum-‐gathering-‐comm-‐of-‐pracPce
SoQware
Kanban
Burn
Down
Chart
h?p://www.infoq.com/jp/arPcles/agile-‐kanban-‐boards
44. Collective Ownership
• Everyone can change code.
Private
Ownership
CollecPve
Ownership
Every
code
is
maintained
by
one
person
Everyone
can
maintain
every
code.
Code
Create/change
A
Code
Create/change
Code
Code
A
B
B
Code
Code
Create/change
C
C
Repository
Before
AQer
• If
the
person
leaves
this
secPon,
no
one
can
change
it
• Reduce
the
risk
of
leaving
• Quality
of
Code
is
relaPvely
bad
• Gain
code
quality,
everyone
check
out
the
code
• Only
the
author
can
understand
the
code
• Every
code
will
be
read
by
other
person
Point
1.
Version
Control
System
2.
Automated
Test
3.
The
team
has
CollaboraPve
mood
44
45. Pair Programming
• Write codes by a pair using same machine.
Use 1PC by 2 people
Someone who write code(Driver)
Someone who navigates (Navigator)
Change the role between Driver
And Navigator by 10 min.
The roles should be exchanged
at the fixed interval
• Pair
programming
increate
the
quality,
it
reduces
setback.
• You
don’t
execute
pair
programming
,
every
Pme.
45
47. 4. Structuring Work
FuncPon-‐Based
Planning
Development
Story
Card
EsPmaPng
and
Back
Log
Planning
Manage It
48. Story Card
A user story is a chunk of functionality that is of value to the customer.
As a developer you should have an ability to write story cards.
User
Story
A user can search for books by author,
title or ISBN number.
User
Stories
Applied
User
Stories
Applied:
For
Agile
SoQware
Development
Story
must
be
understandable
to
the
customer.
Mike
Corn
A
user
story
is
nothing
more
than
an
agreement
that
the
customer
and
developers
will
talk
together
about
a
feature
48
49. Backlog
The product backlog is an ordered list of user stories that is maintained
for a product.
Story
ID
Story
Es#mate
Sprint
#1
1
As
a
swimmer,
I
can
see
a
line
chart
of
my
Pme
for
a
3
parPcular
event.
2
As
a
coach,
I
can
see
a
line
chart
showing
the
progress
over
8
the
season
of
all
of
my
swimmers
in
a
parPcular
event.
3
As
a
swimmer,
I
can
see
a
pie
chart
showing
how
many
first,
5
second,
third,
and
lower
places
I’ve
finished.
4
As
a
coach,
I
can
see
a
text
report
showing
each
swimmer’s
2
best
Pme
in
each
event
Agile
EsPmaPng
and
Planning
Mike
Corn
Sprint
#2
5
As
a
coach,
I
can
upload
meet
result
from
a
file
and
Planning
rom
Agile
EsPmaPng
exported
f
3
the
Pming
system
used
at
the
meet
List
of
funcPonality,
technology,
issues
Emergent,
prioriPzed,
esPmated
49
One
list
per
product
50. Estimating
Estimate user stories on the product backlog using relative estimation.
Planning
Poker
Agile
EsPmaPng
and
Planning
Mike
Corn
EsPmate
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.
50
52. Planning
Release Planning allocates user stories to releases and sprints by these estimate.
The big plan helped us decide that it wasn t patently stupid to invest in the project.
Release
Planning
Coarse
Grained
Planning
Sprint#1
Sprint#2
Sprint#3
Sprint#4
…
Sprint#1
Sprint#2
Sprint#3
Sprint#4
…
Story
1
Story
2
PO
Story
3
Subsystem
B
Subsystem
C
Story
4
Story
4
Story
5
Dev
Subsystem
A
Subsystem
B
We
should
make
a
big
plan.
But
we
must
understand
it
is
not
stable
at
all.
A
big
plan
is
just
an
assumpPon
of
the
development,
never
promise
it.
Coarse
Grained
Planning
helps
Product
Owner.
52
53. 5. Environment
Leveraging
tools
ConPnuous
Version
Control
IntegraPon
Sometimes tools helps to be Agile
54. Version Control
• Version Control System is a software that has the ability to manage
and track changes that occur to any document (incl Source Code) that is in
a project.
Version
Control
with
Git:
Powerful
tools
and
techniques
For
collaboraPve
soQware
development
Jon
Leliger,
Ma?hew
McCullough
54
55. Continuous Integration
• Continuous integration is a software development practice where
members of a team integrate their work frequently, usually each person
integrates at least daily ‒ leading to multiple integrations per day.
• Each integration is verified by an automated build to detect integration
error as quickly as possible.
CI
acPviPes
Report
1.
Check
out
Repository
2.Automated
Build
Send E-mail
3.Automated
test
Visualize the problem
4.Test
Reports
Test Reports
Tool
Examples
CI :Jenkins xUnit : rspec
Automated Build :rake Automated Test: rake
55
56. Reference
ICAgile
exists
to
support
educaPon
in
the
agile
space.
Use
ICAgile’s
definiPve
learning
roadmap
to
find
accredited
courses
that
recognize
students
as
they
progress
along
their
specialty
paths.
h?p://www.icagile.com/
57. Sometimes, we have other roles
• Project
Manager
• Architect
• Business
Analyst
• Tester
58. Mission #2 Retrospective (5min)
Discuss
with
Team
members
about
…
・What
skills
does
an
agile
programmer
need?
・Which
skills
will
you
learn
aQer
back
your
office?
・What
good
knowledge
have
you
got
in
this
lesson?
Please
share
your
team’s
opinions.
Discuss
and
write
down
and
share.