Agile Android

12
DEFINITION OF DONE – THE HARDEST AND MOST THE IMPORTANT AGILE PRACTICE IN ANDROID DEVELOPMENT Boris Farber 08/29/2022 boris.farber@gmail .com

description

My talk at Practical Agile 2014, about definition of done.

Transcript of Agile Android

Page 1: Agile Android

DEFINITION OF DONE – THE HARDEST AND MOST THE IMPORTANT AGILE PRACTICE IN ANDROID DEVELOPMENT

Boris Farber04/12/[email protected]

Page 2: Agile Android

About Me

Android Lead at Varonis Blog – www.api-solutions.com Open Source

Profiterole – Map Reduce on Android Sherlock Hash – Persistent Hash

Page 3: Agile Android

Definition of Done

Definition of Done – the hardest and the most important agile practice in Android development

Without a consistent meaning of done, velocity cannot be estimated.

A common definition of done ensures that the increment produced at the end of sprint is of high quality, with minimal defects. 

Page 4: Agile Android

Definition Of Done

Am I finished with a feature? You are not finished with a feature until it

meets the benchmark defined by done. A very simple definition of done can be encapsulated as follows: Code Complete Test Complete Approved by Product Owner

Page 5: Agile Android

Real Life

Platform/API limitations Time pressure Code is not clean

Developed by external company Developed by person who left Technical Debts – unfinished features

Page 6: Agile Android

My feature

Make it work Refactor (Rinse and Repeat)

Page 7: Agile Android

Butter Churning

Roll over the churner There will be last round

Page 8: Agile Android

Problem

Very difficult to estimate Contagious

Page 9: Agile Android

What to do

Don’t look how good code can be Look how bad code can not be (Smells)

Page 10: Agile Android

Smells + Solutions

Code Duplication Extract method/class/Interface Move Common functionality …

Dependency Between UI and BL Context God Class Use Façade pattern (XXXPlayer)

Many ifs (specially with same condition) Use Design Patterns to reduce coupling …

Strategy State Template Method