Boost Your Developer Productivity With Effective Debugging Techniques
As a company that offers developer productivity tools, we know the important of efficient debugging techniques. Michael Bolton once shared this great tip on Twitter about how minor changes in the way we ask questions can impact the answers we receive:
This got me thinking about how frequently engineers and their managers underestimate the time and effort spent on debugging (or chatting up their rubber ducks!).
Status Meetings And Developer Productivity
Every engineering organization has status meetings, but how much of your time is being spent in those meetings? They might be daily stand-up meetings with tech leads and product managers going through Jira. They might be held in more official settings, such as meeting rooms with PowerPoint presentations and managers.
In each and every one of those meetings, the most common task is explaining why we are behind schedule. For full transparency, I myself have personally missed more delivery deadlines than I could count.
So what do we say? Well, pick your poison:
- “The feature was developed. It’s just not working as expected.”
- “Getting the environment up and running was trickier than expected.”
- “I had to get CI green.”
- “I had to fix a couple of bugs, so work on the feature was delayed.”
All of those answers/excuses share a common trait – writing code is much easier than getting it to do EXACTLY what you want. Debugging takes effort, time, and mental energy. And that effort of taking code and making it perfect – well, that’s debugging.
By improving our debugging skills and techniques, we can improve developer productivity and reduce the time spent fixing bugs.
Unstable CI and Developer Productivity
How stable is your CI? How stable are your unit tests? We can hardly blame the infrastructure for slow and finicky tests with modern cloud computing and orchestration.
However, if you have to run your tests multiple times just to get them to pass, then whether you admit it or not, bugs are lurking within your tests and the code they’re testing. This is the point when we ask ourselves: “Why doesn’t anybody just go ahead and fix those bugs?”
Well, getting tests, especially complex E2E tests, to be 100% predictable is quite a challenge. Understanding (i.e., debugging) exactly what’s happening in remote CI environments is no fun. Some teams spend weeks getting their tests stable and their CI reliable. Many developers find it easier to grind their teeth and run the CI yet again.
Waiting for Deployments and Developer Productivity
How often do your developers wait for deployments? Even in elite DevOps teams that deploy multiple times a day, the wait time can be anywhere from hours to days. In some companies, they often wait for weeks or more. This waiting time can hurt developer productivity, as they may lack the data they need to understand and solve bugs.
It’s possible that your developer is missing a piece of data to understand a bug, so he’s waiting on that new log line he deployed. Maybe he’s even braver and decided just to go ahead and deploy a potential fix to try to see if this will solve the issue, as data collection is just too hard.
If your developers knew what was happening in remote environments, they wouldn’t have to continuously wait on deployments just to learn more. Improving communication and visibility around deployments can help reduce waiting times and increase developer productivity.
Unplanned Work and Developer Productivity
Once your application moves from an innovation project to a service that provides business value to your customers, that’s when the real work begins. You get the fun task of supporting them as they grope blindly through your product, failing to grasp its very meaning. And they love nothing more than reporting those pesky little bugs and sending their account executives to hunt you down until they are fixed.
Even in a high-performance dev team, unplanned work can account for up to 20-30% of total work, reducing developer productivity. This is particularly true after a big new release or product launch.
Debugging Is A Core Capability For Developer Productivity
In all of the cases mentioned above, effective debugging is critical for developer productivity. Your developers are hurting as they spend time, effort and mental energy fighting through the bugs in their codebase. In others, debugging feels so impossible, they barely even try.
Debugging can feel impossible, but by providing your team with the skills and tools to tackle debugging challenges head-on, you can boost developer productivity and reduce the time spent fixing bugs.