Developer Productivity Report 2013 – How Engineering Tools & Practices Impact Software Quality & Delivery
“Who is involved in the time estimation for the tasks?”
When it comes to estimating the type and timeline of development tasks, we discovered a direct relationship between quality & predictability and the job role of the individual or people assigning the tasks. The results for ‘job role’ were pretty evenly distributed, so we decided to relate each job role with our metrics for predictability and quality. Check this out:
Put simply, when the estimating person or group creating the task is less-technical, there is a decrease in the predictability and quality of the software release. Interestingly, team leads or architects have a null effect on both, whereas estimating with the team as a whole, along with the healthy discussion, generates the most gains in the key metrics. If 6% and 4% gains in predictability and quality respectively are powerful enough drivers to involve the team as a whole, then here is the data to back your move.
“How do you branch?”
The different styles of branching can always generate a discussion both in-house and in public forums. We asked to check off the different styles, and surprisingly, they were pretty evenly represented. Looking at the relations to key metrics we see little strong association either way.
The only clear trend is a slightly negative one for the single trunk and a positive one for feature branches. Go figure.
“Who tests your code?”
Are developers or team leads testing your code? If you have a QA/testing department, they are most likely doing it, but perhaps you should consider automating your tests based on these results.
If there was even a good case for automation, it would be this. Automated tests showed the largest overall improvements both in the predictability and quality of software deliveries. Quality goes up most when Developers are testing the code (also discussed in Sven Peter’s talk “How to do Kickass Software Development” at GeekOut 2013), which means that you shouldn’t just leave testing to QA team, but bake it into the development process as well. The rest of the measurements were more or less insignificant, although we don’t recommend letting your customers/users test your software for you.