Productivity vs deadlines
How can I address productivity issues in a Scrum Team missing deadlines?
How I can measure team productivity more accurately to avoid missing deadlines?
Productivity and meeting deadlines are two very different things, one does not singlehandedly map to the other.
To point out why these are different, consider that if your truck does not arrive at its scheduled destination when you expected it to, that does not prove that the truck must have driven slower. Maybe it got lost and is driving in the wrong direction. Maybe it's not lost, but it knowingly had to take a detour because of something it had no control over.
If you treat these as the same, and communicate this to the team, then you're effectively communicating that they are being judged on when they finish working on something rather than the quality of the work they put forward. This is going to lead to developers cutting corners when anything threatens their deadline, which is going to give you a short term win (meeting your deadline) at a steep long term cost (technical debt accruing).
Setting deadlines for specific tasks
prototyping, working on published games, and teams working on iterations
More commonly known as spikes (prototypes), greenfielding (iterations) and maintenance (working on published games). Just pointing this out because it'll help you in navigating documentation on the subject of scrum.
For us the speed is really important,
That's what everyone says. Not because it's not true, but because everyone would like the same things done faster if they could make it happen.
especially during iterations and prototyping,
Prototypes are spikes. Spikes cannot be estimated as they are the equivalent of uncharted territory, and therefore they should be rigorously timeboxed. If your team is struggling to manage their time for timeboxed tasks, then that's a team culture issue of not listening to what has been planned in the sprint.
A timeboxed task is very simple in terms of time management: you stop when the time is up. There is no official goal here, there's a time allotment to see what could be delivered during this time.
If a team member feels that a short extension of their allotted time could help them reach a meaningful milestone, then that is something that needs to be explicitly discussed during standup. It depends on your team culture whether you allow your devs to make that call themselves and retroactively let you know they used more time, or if you mandate them asking permission before spending more time on the task. In either case, when more time is added to the spike, you simply add it to the "estimate" for the task; which in turn means that it detracts from the available time in the sprint for other tasks.
In other words, if the question at the end of the sprint is "why did this one-day task not get done?", the justifiable answer is "because we added an extra day to the spike", and this settles the matter without it leaving any negative impression on the team's productivity.
Estimates
but lately I've noticed that the development might take more than twice the estimated time.
If the estimate is consistently around 50% of the actual time taken, then this shouldn't be a problem. Consistency is great. That means that you can just double whatever estimate you get and therefore end up with a consistently accurately planned sprint.
If the ratio between estimate and real time worked is highly volatile, you need to dig into what the consistency is. Some examples:
- Maybe specific developers are shown to be bad estimators, which indicates a mentoring opportunity.
- Maybe specific developers are shown to be bad implementors, which indicates a mentoring opportunity (on a different topic than the previous bullet point).
- Maybe the issues only occur when the estimator is different from the implementor, which suggests that you have an expertise gap between different team members. Such a gap is best minimized as much as possible.
- Maybe tasks that touch on certain technologies are badly estimated, which indicates a lack of expertise with these technologies.
- Maybe tasks involving specific games/components are badly estimated, which indicates a higher degree of technical debt (or lack of documentation) in these games, which suggests that you need to invest in engineering improvements for these games so that the source for the delays can be "fixed", rendering future estimates more accurate
- Maybe some tasks are defined too vaguely or ambiguously and it's leading the team to estimate something different from what actually needs to be done.
Distractions
Maybe it's not related to the estimate at all, the team is simply tracking their time inaccurately, failing to indicate that they spend significant amount of time on other things. Whether this is company communication, helping others, dealing with IT support issues, having to consistently respond to emergencies in unrelated topics, ... It possible that the team are considering these events as "part of the daily work" but are not accounting for this in their estimates nor are they tracking these distractions separately.
If the latter is the case, you need to create some consistency between what is estimates and how the real work is tracked. There's several solutions here:
- Your team could include daily distractions in their estimate, which makes sense if the daily distractions are consistent in size.
- Your team could omit daily distractions from their estimate, and track them separately. This is difficult one to get right because it requires a lot of active time-tracking and context switching.
- Your team could omit daily distractions from their estimate, but you could add an estimate of distraction amount to your sprint. A previous company I worked with assumed that 20% of time would be consumed by distractions, effectively assuming that a work week is only 4 days.
Generally, I would advocate for actively suppressing daily distraction as much as possible, but whether or not this is feasible depends on your workplace environment and business context, this is not universally answerable. If it can be avoided, it should, because context switching is a massive productivity killer.