How to be proud when you are done

Post on 22-Nov-2014

11.791 views 0 download

description

Although all of us speak the same language, each of us uses different meaning of words "soon”, "fine” and "done”. That’s why for one developer "I’m done” means that just a moment ago the part of the code with implemented functionality has been successfully executed, while for another developer it means that code has been committed to repository but without checking if build is green or not on continuous integration server. At the same time "done" of developer-perfectionist means totally refactored and optimized code. And only for "black swan”-developer phrase "I'm done“ means that all tests were passed, new functionality was documented on wiki and a new feature was verified by customer on the demo server.So if you want to decrease a risk of misunderstanding inside a team or between team and customer you should make agreement about common vision of “definition of done“ and then start using it on a daily basis. In order to prevent losing your time and stepping on the hidden rake during discussion of your done criteria we will share our knowledge about creating compact and most effective “definition of done“. We will talk about lifecycle of this document and about approaches that help you to add important items to it. We will discuss doneness on different levels (preplanning, user story and task development, sprint). And of course we won’t forget to tell you how to create “Definition of Done“ which will satisfy not only your team but your customer as well.

Transcript of How to be proud when you are done

HOW TO BE PROUD WHEN YOU ARE DONE

Java Technical Lead/Scrum Master at Zoral Labs 6+ years in software development 4+ years of working by Agile methodologies Expert in Agile engineering practices Agile coach at XP Injection

Mikalai Alimenkou

Architect at Infopulse Ukraine Agile volunteer Certified Scrum Practitioner Coordinator of translation of the book "Scrum and

XP from the Trenches" and “Kanban and Scrum – making the most of both” into Russian

Agile coach at XP Injection

Aleksey Solntsev

Everybody has own “dreams”

Latest frameworks No overtimes No bug fixing Clean code

Team

More features In time delivery No defects!

Customer

Goal achievement Predictable plans On budget

Manager

What all of them have in common?

And good quality

With fast delivery

At low price

Done product

Why in real life it is not so simple?

Whhhyyyy?!!!

“Uncommitted stuff”Can I start testing this new feature?

But I can’t even build the product…

Yes, it is done!

Ops, I forgot to commit some files...

“Useless build”

Well done! Let’s deploy new build on production server.

Not so fast. We need to do integration testing, prepare DB migration scripts, etc. I hope it

will be finished in a week.

???

“Unstable velocity”Well done! Our velocity

in the last iteration increased up to 32 SP.

Let’s use it as base line.

How will it change our velocity?

Let’s say 20.

Agree, but we have to make some small fixes, finish testing and update

documentation.

“Unverified tasks”WTF! A new order form is

nightmare. It looks like random set of fields and

doesn’t accept basic values.

Have somebody tried to use it before assign to me?

Don’t panic! I just made a quick fix…

“Forgotten requirements”

John, have you made load and

performance testing?

Guys, as we discussed on the planning meeting, we’ve

just started pre-orders program for iPad2. And now our site is extremely slow.

Well, but …

Why this happens?

Whhhyyyy?!!!

Hidden conflicts in goals• Developers like always implementing interesting features,

but customers want working software• Team want to show productivity, but customers want

predictability• Developers believe they are perfect, but customers want

software without defects• Management want to deliver in time, but customers want

ready to use software• Developers see technical side of the project, but

customers see it from end users perspective

And the main reason is …

Everybody has his own definition of words ‘done’, ‘fast’, ‘low price’,

‘good quality’!

“Definition of Done” is a "contract" between all parties on subject when … a checklist of valuable activities for … gates your product has to go through before …

… you can label the product “Done“

Let’s start from definition

4 mainquestions

How to start?

Take from previous project

From business problems and wishes

From code quality in mind

Start from flow visualization

Image from Henrik Kniberg book “Scrum and Kanban - making the most of both”

Who should define?

Team

Customer

Retro

When to define?

Start

Where to store?

Morecommon

More personal

Electronic

Paper

main formats3

Plain list

Different levels of granularity

Release

Pre-planning

Iteration

Iteration planning

FeatureUser Story 1 User Story 2

User Story 1

Task 1 Task 2

User Story 2

Task 1 Task 2

List categorized by level

Pre-planning• Criteria 1 • …• Criteria N

Iteration• Criteria 1• …• Criteria N

Feature

• Criteria 1• …• Criteria N

User Story• Criteria 1 • …• Criteria N

Task• Criteria 1• …• Criteria N

Release

• Criteria 1• …• Criteria N

Complex structure

Pre-planning• Criteria 1 • …• Criteria N

Iteration• Criteria 1• …• Criteria N

Feature• Criteria 1• …• Criteria N

User Story• Criteria 1 • …• Criteria N

Task• Criteria 1• …• Criteria N

Release• Criteria 1• …• Criteria N

User experience

Test Has QA been part of preplanning?

User experience

Documentation Has the end-user documentation been updated?

Working software

Has the implementation been reviewed be a peer?

Test

User experience

Test Is the scalability testing done?

Documentation

User experience

Test

Documentation

User experience

Test

Documentation

main control principles3

Automation

Use SVN hook for verify comments in commits

Add static analyzer to build

Fixed workflow

Review

Fix and documentworkflow

Task tracking system can help

Responsible persons

ManagerTeam Lead

How does it work in real world

Binary state

Not done

Done

Will be done

In progress

Nearly done

week 1 week 2 week 3 week 4 week 5 week 6 week 7 week 8

End of iteration 1 Start of stabilization End of project

Traditional approaches

Depends on context

Scrumweek 1 week 2 week 3 week 4 week 5 week 6 week 7 week 8

End of sprint 1 End of sprint 2 End of sprint 3 End of project

week 1 week 2 week 3 week 4 week 5 week 6 week 7 week 8

End of project

Kanban

PM: Are tasks done?Devs: No.PM: OK, go on. But don’t forget about new features.

PM: Done?Devs: We hope so.

PM: Done?Devs: No yet.

PM: Done?Devs: Yes.

PM: Done?Devs: Of course!

PM: Done?Devs: Of course!

main problems7

No common understanding

No commitment

Unrealistic

Too ideal

Partially done tasks are accepted

Done?

"Broken windows" principle

“Development” only

Let’s try to build Definition of Done!

Conclusions

Common vocabulary helps us to avoid hidden conflicts …

… and work together as a team to archive our goals!

• Introduce “Definition of Done” ASAP to avoid broken expectations

• All parties must take part in definition process• Automate as much as possible• Don't lie yourself, DONE means DONE• Learn from your mistakes• Inspect and adapt continuously

Q&A

Email us:• mikalai.alimenkou@xpinjection.com• aleksey.solntsev@xpinjection.com