Open Source Software Development Practices that Works
- 2. Hi!
I develop software for a living.
I think a lot about making good
software -- and that is what I am
going to talk about today.
Basically, I learned enough tricks to
be good at what I do.
- 5. http://agilemanifesto.org
" We are uncovering better ways of developing software by
doing it and helping others do it. Through this work we have
come to value
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in
the items on the right,
we value the items on the left more.
- 7. It basically means we got
a pretty good plan to get
things done.
You can worry less now. ;
-)
- 9. User Stories
Just enough details to make time estimate, priority
and purpose.
Must be simple and easy to understand.
Make them testable.
E.g., "Load in 3 seconds"
Requirements are never final,
so be flexible.
- 12. Estimation
It's very hard to plan for next 6 months.
Break big thing down to smallest things.
How to eat an elephant?
One piece at a time
- 13. Respect / trust
Respect your teammates or staffs
Move responsibility down the chain
Let workers decide the best approach
Encourage passionate commitment
Expect top quality from everyone
- 15. Daily Standup
What I accomplished yesterday
What I plan to accomplish today
What issues are blocking progress
5-10 minutes
- 18. Write Tests
The idea is to build quality in.
Unit test, integration test, .. any sensible test!
Automate the testing
Learn to write good test cases
- 20. Refactor
Keep it really simple and continue to keep it simple
as you go along.
Make code clean and easy to read.
Remove dead code,
unused functions, and simplify further.
Not worried about throwing code out for
sake of better software
- 21. Quality is Easy
Track bug -- assign to someone, set deadline + priority
CAR -- Corrective Action / Prevention Action
Poka Yoke -- Fail-proof
Automation -- automate build, test and deploy
CANI -- Continuous And Never Ending Improvement
- 24. Retrospective
Over lunch if you have to.
How did we screwed up?!
What went well?
What did we learn?
How can we do better next round?
This is NOT a blame session!
- 26. Continuous
Improvement
Keep learning -- new tech, architecture, techniques, process
Keep adjusting -- make it fit your needs or size
Keep improving -- measure and improve, faster,
less bug, happier customer
- 27. Summary
1. User stories instead of heavy requirement docs
2. Deliver iteratively and deliver working software asap
3. Estimation is hard, make it easier by breaking it
down
4. Respect and trust is very necessary
5. Daily standup works, please do it Mon to Fri
6. Short to-do list works, use it
7. Write tests
8. Quality is easy, or easier if you build quality in
9. Retrospective to learn and improve more
10. CANI -- Continuous And Never ending Improvement