agile software development process practice in thai culture
DESCRIPTION
Presentation from the Thailand Software Park Annual Conference 2009 (http://www.swpark.or.th/swpconference2009/)TRANSCRIPT
Agile Software Development Process Practice in Thai Culture
Weerasak Witthawaskul, Ph.D.ThoughtWorks Inc., USA
IntroductionAgile
พริ้วฉบัไว
คล่อง
Objective
a presenter,
make audiences excited about Agile methods,
you will consider applying agile concepts inyour projects.
Daily Stand-up Meeting
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)
Daily Standup - Thai Cutural Impact
Traffic
Shyness to speak in front of crowds
Not sure what to update
Afraid to mention problems
Release 1 - Iteration PlanningIteration 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
Iteration 0
Project Deadline
Scope Increase
Codebase Complexity
Defects
Staff Turnover
Transparency & Accountability
Project Nightmare
Knowledge Sources
Where are Thai books?
Knowledge Sources
Do we have to wait for Thai books?
Introducing Agile
”After I moved to Agile, I don't want to go back to work in non-Agile projects again”
- Client Developer
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
Agile Values
Individuals and interactions overprocesses and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
http://agilemanifesto.org/
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
Agile Organization
Group teams across functional areas
Business● Sponsor● Product Owner – Users / Customer Laisons
IT Development● PM / BA / Dev / QA
Engineering● Deployment / Operations Support
Iteration 1
Common Agile Practices
Scrum as a project management practice
XP as an engineering practice
Iteration 1
Scrum as a project management practice
User Stories
Iteration / Sprint
Release Plan
Next Iteration
Bugs
IterationPlanning
Development LatestVersion
New User StoryProject Velocity
Copyright 200 J. D. Wells
User Stories
ProjectVelocity
Failed AcceptanceTests
Unfinished Tasks
IterationPlan
Learn andCommunicate
New Functionality
Bug Fixes
Day by Day
Burn-up chart
Burn Down Charts
Retrospective
Feedback meeting at the end of each iteration
Team feeback
Vote and Action Items
Common Agile Methods
XP as an engineering practice
eXtreme Programming
Next TaskOr FailedAcceptanceTest
Createa UnitTest
PairProgramming
CRCCards
Move PeopleAround
ContinuousIntegration
100%Unit
TestsPassed
AcceptanceTest
Passed
RefactorMercilessly
Copyright 200 J. D. Wells
SimpleDesign Complex
ProblemFailedUnitTest
PassedUnit
ChangePair
WeNeedHelp
New UnitTests
NewFunctionality
Run All UnitTests
SimpleCode
ComplexCode
RunFailedAcceptanceTest
Pair Programming
Proverb: สองหัวดีกวา่หัวเดียวOne types (driver), one thinks (navigator)
Watch out for:
Chitchatting
Dominator
Ping-pong programming
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
Demo
Story 1Title: Customer withdraws cashAs a customer,I want to withdraw cash from an ATM,so that I don’t have to wait in line at the bank.
Demo – ATM WithdrawalScenario 1: Account is in credit
Given the account is in credit
And the card is valid
And the dispenser contains cash
When the customer requests cash
Then ensure the account is debited
And ensure cash is dispensed
And ensure the card is returned
Scenario 2: Account is overdrawn past the overdraft limit
Given the account is overdrawn
And the card is valid
When the customer requests cash
Then ensure a rejection message is displayed
And ensure cash is not dispensed
And ensure the card is returned
Spec-first Design – User/BA pairing
BA / Dev Pairing
Dev Pairing
Test / Code / Test Cycle
Dev done when we see all dots
With nested option, test result becomes documentation
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
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
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
Q & A
Please provide feedback at http://tinyurl.com/agilefeedback