I cringed when I read posts talking about “functional bugs” and showing Visual Basic 5.0 forms screenshots.
It is 2021! We live in a de-normalized big data, IoT/real-time, AI-powered, cloud-hosted microservices / serverless applications world.
Today’s bugs are very different from the infamous ones listed in mass-media.
A bug is something unexpected… that will happen anyway
A bug is an unexpected result. If you were hoping for a sunny day and it is raining: the rain is a bug in your life.
A bug is annoying for both the users and the engineers, so it works at different levels.
Since you design the software to behave in a certain way or code the software to provide certain outputs, a bug can live either in the architecture, infrastructure, or code domains.
A silly bug that got an entire team fired
Because we live in a high-tech world, it doesn’t mean that bugs have to be fancy.
Circa 2000, I was a young software engineer working for a multi-national company.
I was part of the engineering team responsible for maintaining an HR platform—that platform where employees check their next paycheck, vacation policies, and such.
There was a feature in the application where you can see your current salary.
Some users who were familiar with how the URL params work noticed that they can change the employee’s ID and see any employee’s salary in the company, including the owners.
An entire HR engineering team got fired because of this bug.
In 2021, finding bugs is more expensive than fixing them
Debugging is the process of finding a bug. I’ve spent entire days trying to find why numbers didn’t match out in a microservices-based data pipeline.
The more complex is the infrastructure, the more expensive it is to find bugs.
Fortunately, there is a whole industry at work solving this problem. Because you have a complex platform doesn’t mean you should spend more money finding bugs, than fixing them.
My own debugging recipe
You will find many ways to categorize bugs by either impact or priority. If you have a bug, ask the team these two questions first:
- Is this really a bug?
- Do we need to fix it now?
If the answer to both is YES, then follow these questions, in the exact same order:
- Does it use to work?
- Is it a Front-end bug?
- Is it an API-level bug?
- Is it an Infrastructure configuration issue?
- Is it integration with a third-party?
- Is it a back-end code bug?
- Is it a data-level bug?
Next-gen Code Analysis Stack
Even if your team gets smarter at finding bugs: with thousands of lines of codes, services, and configurations, no debugging process will keep up with the increasing cost of microservices or serverless bugs.
You need to start building your Next-gen Code Analysis stack:
- Use logging tools like Logstash, Splunk, or Cloudwatch.
- Use Github code-quality related Actions.
- Create AWS budget alerts to spots bugs in the infrastructure configuration.
- Subscribe to Depedantbot to keep your code library dependencies up to date.
- Use AWS CodeGuru to get code recommendations like the one below: