agile software development process practice in thai culture

35
Agile Software Development Process Practice in Thai Culture Weerasak Witthawaskul, Ph.D. ThoughtWorks Inc., USA

Upload: weerasak

Post on 15-Jan-2015

2.051 views

Category:

Technology


0 download

DESCRIPTION

Presentation from the Thailand Software Park Annual Conference 2009 (http://www.swpark.or.th/swpconference2009/)

TRANSCRIPT

Page 1: Agile Software Development Process Practice in Thai Culture

Agile Software Development Process Practice in Thai Culture

Weerasak Witthawaskul, Ph.D.ThoughtWorks Inc., USA

Page 2: Agile Software Development Process Practice in Thai Culture

IntroductionAgile

พริ้วฉบัไว

คล่อง

Page 3: Agile Software Development Process Practice in Thai Culture

Objective

a presenter,

make audiences excited about Agile methods,

you will consider applying agile concepts inyour projects.

Page 4: Agile Software Development Process Practice in Thai Culture

Daily Stand-up Meeting

Page 5: Agile Software Development Process Practice in Thai Culture

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)

Page 6: Agile Software Development Process Practice in Thai Culture

Daily Standup - Thai Cutural Impact

Traffic

Shyness to speak in front of crowds

Not sure what to update

Afraid to mention problems

Page 7: Agile Software Development Process Practice in Thai Culture

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

Page 8: Agile Software Development Process Practice in Thai Culture

Iteration 0

Project Deadline

Scope Increase

Codebase Complexity

Defects

Staff Turnover

Transparency & Accountability

Project Nightmare

Page 9: Agile Software Development Process Practice in Thai Culture

Knowledge Sources

Where are Thai books?

Page 10: Agile Software Development Process Practice in Thai Culture

Knowledge Sources

Do we have to wait for Thai books?

Page 11: Agile Software Development Process Practice in Thai Culture

Introducing Agile

”After I moved to Agile, I don't want to go back to work in non-Agile projects again”

- Client Developer

Page 12: Agile Software Development Process Practice in Thai Culture

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

Page 13: Agile Software Development Process Practice in Thai Culture

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/

Page 14: Agile Software Development Process Practice in Thai Culture

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

Page 15: Agile Software Development Process Practice in Thai Culture

Agile Organization

Group teams across functional areas

Business● Sponsor● Product Owner – Users / Customer Laisons

IT Development● PM / BA / Dev / QA

Engineering● Deployment / Operations Support

Page 16: Agile Software Development Process Practice in Thai Culture

Iteration 1

Common Agile Practices

Scrum as a project management practice

XP as an engineering practice

Page 17: Agile Software Development Process Practice in Thai Culture

Iteration 1

Scrum as a project management practice

Page 18: Agile Software Development Process Practice in Thai Culture

User Stories

Page 19: Agile Software Development Process Practice in Thai Culture

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

Page 20: Agile Software Development Process Practice in Thai Culture

Burn-up chart

Page 21: Agile Software Development Process Practice in Thai Culture

Burn Down Charts

Page 22: Agile Software Development Process Practice in Thai Culture

Retrospective

Feedback meeting at the end of each iteration

Team feeback

Vote and Action Items

Page 23: Agile Software Development Process Practice in Thai Culture

Common Agile Methods

XP as an engineering practice

Page 24: Agile Software Development Process Practice in Thai Culture

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

Page 25: Agile Software Development Process Practice in Thai Culture

Pair Programming

Proverb: สองหัวดีกวา่หัวเดียวOne types (driver), one thinks (navigator)

Watch out for:

Chitchatting

Dominator

Ping-pong programming

Page 26: Agile Software Development Process Practice in Thai Culture

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

Page 27: Agile Software Development Process Practice in Thai Culture

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.

Page 28: Agile Software Development Process Practice in Thai Culture

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

Page 29: Agile Software Development Process Practice in Thai Culture

Spec-first Design – User/BA pairing

Page 30: Agile Software Development Process Practice in Thai Culture

BA / Dev Pairing

Dev Pairing

Page 31: Agile Software Development Process Practice in Thai Culture

Test / Code / Test Cycle

Dev done when we see all dots

With nested option, test result becomes documentation

Page 32: Agile Software Development Process Practice in Thai Culture

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

Page 33: Agile Software Development Process Practice in Thai Culture

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

Page 34: Agile Software Development Process Practice in Thai Culture

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

Page 35: Agile Software Development Process Practice in Thai Culture

Q & A

Please provide feedback at http://tinyurl.com/agilefeedback