(Re)inventing software development productivity

Embed Size (px)

DESCRIPTION

For many software development teams, productivity is still often a big mystery. When is it done? What does it mean to be "done"? Is it more valuable to be "fast", or to be "efficient"? And how would you improve your "productivity" or "predictability"? This talk will give you some food for thought on how you can assess and measure productivity in your team. It also provides some tips on how to optimize for productivity: the team, the tools and the software design.

Citation preview

  • 1. (Re)inventing Software Development PPrroodduuccttiivviittyyppeetteerr@@2222fflloowwss..nnll @@PPeetteerrHHeennddrriikkss8800

2. What is Productivity Productivity is an average measure of the efficiency ofproduction. It can be expressed as the ratio of output to inputsused in the production process, i.e. output per unit of input. Useful for: improvement, prediction, comparison 3. Common productivity measurements Story points/velocity Function points Requirement Lines of Code What about value? 4. Measuring successTimeFeaturesMoneyQuality 5. Value perception mismatchProject Business 6. A different way: Valve productivity example12 people1 garage2 mln units sold2500 peopleGlobal offices0,5 mln units sold No projects Developers measuredon business results Lot of freedom, butalso high discipline 7. Why the iron trangle used to be ok Building software used to be hard Mostly known what was needed Business value usually obvious 8. Agile productivity model 9. Tip 1: measure in business resultsGo to production, during the project!New Search Web Service Number of searches % of successful searches Performance, error rate % of total searches, includingold serviceHR recruitment mobile game Number of visits Number of applications in total Number of applications throughgame % of useful applications Game rating on store 10. Video 11. Tip 2: humans need focus Limit the number of items in progress Limit the amount of work per item Strive for focus in your software design E.g. separate concerns as security, concurrency, error handling, ui,data storage feature logic. 12. Tip 3: let everyone developClassic hand-oversAnalyst/Designer Requirement DeveloperSystemwrites reads developsLet others play with the systemAnalyst/DesignerDeveloperSystemUI layoutBusiness rulesInteresting technicalstuff 13. Programming is easy!** As you long as you avoid hard stuff likeconcurrency, memory management,large scale codebases, security etc. 14. Examples of shared development Analyst/designer UI layout, business rules Database expert Tables, queries Users Table export to Excel Customization of layout/color Developers Overall infrastructure Integration, concurrency, security, clustering, etc.AnalystUserDeveloper SystemDBA 15. Some closing references / Q & AGabe Newell on productivityhttps://www.youtube.com/watch?v=Td_PGkfIdIQBret Victor on direct manipulationhttps://vimeo.com/36579366Anthony Ulwick:What customers [email protected] @PeterHendriks80