5. Who is this presenter?
Agile Software Consultant from
Software Architecture Group member at the
University of Illinois at Urbana-Champaign
Pattern Languages of Programs (PLoP)
conference chair 2002
”นายข้าวโพดหวาน”,Voluntary Consultant at
since 2003 (Mr SweetCorn)
6. Daily Standup - Thai Cutural Impact
Traffic
Shyness to speak in front of crowds
Not sure what to update
Afraid to mention problems
7. Release 1 - Iteration Planning
Iteration 0
Problems with software projects
How Agile methods help
Agile principles
Iteration 1
Scrum / XP / TDD
Iteration 2
Introducing Agile methods to your organization
More Information
11. Introducing Agile
”After I moved to Agile, I don't want to go back
to work in non-Agile projects again”
- Client Developer
12. Introducing Agile
Agile methodology is an umbrella of software
development methods that are based on shared
values and principles
It focuses on
delivering frequent releases of high-quality
working software
self-organizing teamwork and accountability
● Self-discipline is very important
It embraces changes in a flexible, controlled way
13. Agile Values
Individuals and interactions over
processes and tools
Working software over
comprehensive documentation
Customer collaboration over
contract negotiation
Responding to change over
following a plan
http://agilemanifesto.org/
14. Thai Cultural Impacts
Afraid of / Reluctant to / Resist to change
Uncomfortable to work closely with senior
management / other departments?
'Yes, boss' attitude
Afraid to show problems until last minutes
This is not my code / problem / work
15. Agile Organization
Group teams across functional areas
Business
● Sponsor
● Product Owner – Users / Customer Laisons
IT Development
● PM / BA / Dev / QA
Engineering
● Deployment / Operations Support
16. Iteration 1
Common Agile Practices
Scrum as a project management practice
XP as an engineering practice
19. Iteration / Sprint
New User Story
Project Velocity
Release Learn and
Plan User Stories
Unfinished Tasks Communicate
Project New Functionality
Next Velocity Iteration Latest
Iteration Development
Planning Iteration Bug Fixes Version
Plan
Bugs Failed
Acceptance
Tests Day by Day
Copyright 200 J. D. Wells
24. eXtreme Programming
Move People 100%
CRC Around
Cards Unit
Change We Tests
Simple Pair Need
Help Passed
Design
Complex
Problem Run All Unit
Failed Tests
Unit New Unit
Next Task Create Test Pair Tests Run
Or Failed Programming Continuous Failed
a Unit Integration Acceptance
Acceptance Test Passed New Test
Test Unit Functionality
Simple Complex
Code Code
Refactor Acceptance
Mercilessly Test
Passed
Copyright 200 J. D. Wells
25. Pair Programming
Proverb: สองหัวดีกว่าหัว
เดียว
One types (driver), one
thinks (navigator)
Watch out for:
Chitchatting
Dominator
Ping-pong programming
26. Test Driven Development (TDD)
Little Design Up Front (LDUF)
Test, test, test mentality
Write tests first before implementing new features
Write tests first before fixing bugs
Tests become
Specification
Executable, live documents
Guards
27. Demo
Story 1
Title: Customer withdraws cash
As a customer,
I want to withdraw cash from an ATM,
so that I don’t have to wait in line at the bank.
28. Demo – ATM Withdrawal
Scenario 1: Account is in credit Scenario 2: Account is overdrawn past
the overdraft limit
Given the account is in credit
Given the account is overdrawn
And the card is valid And the card is valid
And the dispenser contains cash When the customer requests cash
Then ensure a rejection message is
When the customer requests cash displayed
Then ensure the account is debited And ensure cash is not dispensed
And ensure the card is returned
And ensure cash is dispensed
And ensure the card is returned
31. Test / Code / Test Cycle
Dev done when we see all dots
With nested option, test result
becomes documentation
32. Iteration 2
Introduce Agile into your organization
Get executive buy-in
Start with a pilot project
Gradually apply agile techniques
● Daily Stand-up
● Demo every 2 weeks
● Refactoring
● TDD/Test coverage
● Core pair progamming hours
● Retrospective meeting
33. Practical Advice
Use face-to-face communication
Walk & talk instead of emails
Use whiteboard to show progress, discuss designs
Quick huddle when issues involve more than a
pair
Early release, active feedback
Learn from mistakes as well as try new things
Trust
34. Where is Release 2?
Narisa Tech Talk 7 – Sat Aug 29, 2009
http://tinyurl.com/narisa7
Focusing on technical aspects
TDD / BDD (Test / Behavior Driven Designs)
● 3 rules of TDD
● Functional tests/ Unit tests / External tests
● How to write maintainable tests
Refactoring Techniques
Tools
● Automated Build / Tests