How to diagnose development productivity issues (1)
Image credit: Rosenfeld Media.

How to diagnose development productivity issues (1)

Improving the productivity of development teams is a constant thorn at the sides of senior management at tech companies. When confronted, development teams usually offer one of these solutions to improve productivity: "our code base is hard to maintain, so we need a refactor", "our deployment process is too slow; we need to implement CI/CD", or "we need to move to this new framework/tool that reduces the amount of coding". There are more, but this is the gist.

All these problems are usually valid. However, they are very often not the primary, root cause of productivity issues. It is not possible to determine a root cause (let alone propose solutions) without running a diagnosis, any more than a physician can treat a serious illness without running tests ranging from the simple, like heart rate, blood pressure and blood tests, to more complicated tests such as MRI and biopsies.

The software engineering equivalent of these tests are the data in the task tracker (code and runtime metrics are important, but for diagnosing productivity issues, the primary source is the task tracker). Unfortunately, many teams, in their rush to get products out the door, consider the task tracker an afterthought at best, and at worst, dismiss it outright as unnecessary bureaucracy. In doing so, they create a vicious cycle: they do not have the observability needed to figure out why they are constantly in a rush; and the reason they do not have the time to create observability is because they are constantly in a rush. The only way out is to break the cycle.

This cartoon represents a common misconception: that if developers spend all their time writing code, there will be no productivity issues. In reality, productivity issues rarely stem from the code.

The first step in breaking the cycle is to address the very commonly and strongly held belief among developers that updating task trackers (such as Jira) is an unnecessary distraction from the only thing that is important: writing code. The reality is that maintaining work records is an integral part of any professional's job responsibilities (consider what would happen to a physician who doesn't maintain patient records or a cashier who doesn't maintain receipts). It is impossible to work in a large team environment if progress remains in the heads of individuals. But this is a topic for another article.

Assuming you now have the buy-in of your developers, you need to make record keeping a frictionless process. Complex project management tools such as Jira, unfortunately do not make this easy, but there are ways to minimise the complexity. Primary among these are: keeping the number of fields to a minimum (e.g. summary, description, type, assignee, estimate, due date), maintaining a simple hierarchy (e.g. epics -> stories -> subtasks) and training and empowering everyone (not just the project managers) to represent their work in the task tracker. Details on this too, will have to be a subject matter for a future article.

Once you get to a place where your task tracker accurately represents all work being done, you are in a position to do two things: a) during the planning phase itself, you can use the task estimates to determine where the bulk of your team's time is going; b) at the end of the project, you can determine which tasks tend to deviate from the original estimate the most. These two are your primary diagnostic inputs. You are now in a position to objectively decide whether the problem is in fact code complexity (if coding estimates are high across the board), deployments (deployments take long enough that they have their own subtasks), skills (only some developers' estimates are high) quality (much of the time goes to tasks of type "bug") or something else altogether.

Serge Nikolaev

Product Engineering and Delivery | Team Leadership

8 个月

Good article, absolutely agree. I just want to share some personal experience here. If a product owners give you Figma and call it specification, then this becomes even a bigger challenge for the engineering team even before the Jira thing.

回复
Deegha Galkissa

Helping teams go live

8 个月

One Important thing I learned from you is this. Planning ahead and get your developers to record them in your tool which ever it is (we used click up).This made the sprint more obvious and the more you prepare the easier it gets in delivering the perfect sprint. And this helped me a lot in many places including my own work. Cheers!

Osada Lakmal Paranaliyanage

Software Engineering Team Lead at BBC

8 个月

Spot on and illuminating as always! Just one thing that I would add though is the need for standardising and automated enforcement of those standards. This is specially useful at EM level and above where you are dealing with multiple teams. Trying to compare jira metrics from teams that do not even agree on states of scrum board is a pointless task. You can always use backend reporting to standardize on uniform reports while maintaining frontend differences ( eg: you can have waiting states on the scrum lanes on front end but in reporting combine them with respective actual lane ) And as much as you can, make sure the tools themselves enforce whatever criterion you want. Policing these details is often a thankless antoganistic task that will not result in a good relationship with the team. "Computer says NO" is very effect and cannot be argued with.

Isuru N.

iOS Mobile App Developer | UI/UX Enthusiast

8 个月

I've used tools far worse than JIRA and had people literally say "I miss JIRA" ??

要查看或添加评论,请登录

Hasitha Liyanage的更多文章

社区洞察

其他会员也浏览了