Just don't write bugs, bro
#Developer, #Bug, #Software Engineer

Just don't write bugs, bro

We Do Dev Work
We Do Dev Work
28 Apr 2025 06:49 AM

Every Software Engineer, Project Manager and QA has been there: a tight deadline is coming up and there are still issues with the software. A page doesn’t load, an API always throws an error or a user can read messages that are not supposed to meet their eyes. These issues are called “bugs”, named after a small bug that crawls into a computer, touches the motherboards and thereby fries itself along with the pc. Nobody intentionally writes bugs.

And yet... bugs happen.

Every day. Everywhere.

Even in the best teams.

The question is:

Why do they happen? And what can we do to seriously reduce them?

Let’s break it down.

A bug in a computer

Why do bugs happen?
1. Someone didn’t fully develop a feature

Writing software is a form of art: it requires careful consideration between thousands of components working together and creativity to add, remove or modify those components to provide a better solution to a software problem.

If a painter uses the wrong paint on a dry canvas, the painting will fade after a while. Just like that, if a developer doesn’t correctly implement a component, the software will behave unreasonably.

Sometimes the root cause is simple: bad habits.

  • Rushing deadlines without thinking things through
  • Ignoring structure and best practices
  • Copy-pasting code snippets without understanding
  • Temporary fixes becoming permanent hacks

When code is rushed, not reviewed by senior team members or improperly tested, it is only a matter of time before a bug will pop up. Keep in mind: bad code is rarely about bad developers, it’s often about bad environments: pressure, unclear expectations, or lack of support. Ultimately, the developer didn’t have the resources to fully develop a feature.

2. No (or poor) integration testing

Each module might pass its individual test.

But connecting modules without integration testing is where chaos happens.

Testing individual bricks doesn’t mean the house won’t collapse.

Testing the structure, how parts work together, is where real quality control happens.

3. Third-Party packages that break

External libraries and frameworks speed up development, until they backfire.

  • Updates introduce breaking changes
  • Dependencies become deprecated
  • Security vulnerabilities sneak in

If you don't manage versions carefully and monitor dependencies, you build your project on sand.

A bug in a computer

Developers aren’t the only ones responsible

Avoiding bugs is a team effort.

And managers have a bigger role than most realize.

Here’s what you - as a (project) manager - can do to help your team write better, cleaner code:

1. Give clear instructions

Unclear tickets are a recipe for bugs.

Vague objectives lead to vague solutions.

Be specific.

Define what needs to happen, why it matters and what the stakeholders expect. Write down all the steps that are necessary to accomplish the goal. Define what was before, and what should be after. Explain how you came to the conclusion that something has to be done. Additionally, if you notice a ticket wasn’t fully implemented due to missing requirements, clearly outline what needs to be added or changed to the ticket to meet stakeholder expectations.

2. Verify the ticket

Before moving a task between phases, verify that it is completed.

It’s incredibly frustrating for a QA Engineer to receive a ticket to be tested, only for them to not even have a feature to be tested at all. It’s their job to come up with different testing scenarios, look at a solution with varying perspectives and test the outcome of possible actions. It’s not their job to move tickets back and forth to developers and tell them to do a better job.

Don’t just ask the developer “Does this work?” before moving a ticket. Instead, ask the developer to show that it works. Similarly, when a QA approves a ticket ready for production, quickly ask them to run their test flow once more while you are looking at it.

You’d be surprised how much time - and conflict - will be saved with a simple verification that the ticket you are moving is actually ready to be moved.

3. Create a culture of team efforts

Writing software requires an incredible amount of mental focus to successfully combine components into a fully worked out feature. It’s no surprise that especially lesser experienced developers will miss things often, but even senior developers can drop the ball every once so often.

Having a team surrounding you that can help out when things get difficult will not only save time, but also improve the quality of the output. Code is meant to be maintained by other developers, so it’s important to verify that it is maintainable before being shipped to production.

Peer reviews enforce following best practices and team practices. On top of that, they boost learning across the team. Create a culture where developers are comfortable to discuss their code and solutions.

Teamwork makes the dream work.

4. Keep developers (temporarily) in a box

Context switching is the enemy of deep work.

When developers stay focused on the same feature from start to finish,

  • They understand edge cases better
  • They notice inconsistencies earlier
  • They build more stable code

Jumping developers between tasks and projects kills productivity and increases mistakes.

Let them focus.

5. Motivate your developers

Bugs increase when people feel stressed, micromanaged, or constantly interrupted.

Give developers space to focus deeply.

Trust them to manage their workflow.

Encourage pride in clean, thoughtful code.

Happy, focused developers build better products. It's that plain simple.

6. Blameless postmortem philosophy

Mistakes will happen. At least if you’re actually developing something.

An essential tool to deal with these issues are postmortems. A well known concept to record an incident and how it was dealt with, to prevent it from happening again and to have knowledge on how to deal with similar issues in the future.

When a bug surfaces, focus on the issue instead of the people involved. You can’t “fix” people, but you can fix systems and processes to better support people making the right choices when designing and maintaining complex systems.

Ask the following questions:

  • What went wrong in the process?
  • How can we fix it?
  • What can we learn?

Once the issue is resolved, document everything in a postmortem, but don’t point fingers! Treat the incident as if anyone in the team could have made this mistake. Keep the postmortem constructive by focusing on the actions. Once you’ve learned from it, share what’s learned with the engineering team or through an internal mailing list. Review postmortems just like you’d review code.

Bugs will happen.

But you can choose how to deal with it.

You can't eliminate all bugs.

But you can build processes that catch them early and cultures that reduce their frequency.

At We Do Dev Work, we believe writing clean, reliable code isn't just about technical skill.

It's about communication, clarity, focus, and ownership.

Because good development isn’t magic.

It’s a habit, built brick by brick.

Company Logo

We Do Dev Work co. LTD

Home

Over ons

Jobs

Blog

Contacteer ons

Kantoor adres

Private Office 4, True Space Asoke, 235/3-5 Sukhumvit 21 Klongtoey Nuer Wattana Bangkok 10110