To fix bugs or add new features?

This is a constant problem we developers face. How do you deal with the increasing number of bugs while also adding new features on a constant basis in an environment where the time is very limited? This article solves this decade-old question.
There are two main perspectives on that dilemma:
- Fix all bugs and add new features once everything works properly: You may have tests that check if things are working after all the changes to guarantee that the bugs stay fixed. This approach will slow you down because you’ll spend more time fixing at the expense of new functionality.
- Ignore the bugs and work on new features unless they are blocking your progress: This other approach focuses on adding new features while ignoring bugs for as long as possible to spend the majority of your time making progress towards the goal. Eventually you’ll have to go back and fix all the bugs you’ve created during the development
So which one is better? Which one should you choose?
It depends on the way you work. If you feel comfortable building features on top of a broken mountain, you may focus on developing first and fixing later.
This will be useful for Minimum Viable Products where you need to show something as soon as possible without being polished.
But if you get stressed by the increasing number of bugs, you should focus on fixing things first and then develop the new features.
This will be the right approach when building long-term products like banking applications and products where an entire team is expected to work for several years.
If you’re reading this article is probably because you’re stressed by the increasing number of bugs your product is facing, in fact, that’s the reason why I’m writing it in the first place, because I’ve been in the same situation many times.
In any case, you’ll be stressed by closing deadlines that are so common nowadays. Things need to be developed fast and improved as much as possible without spending too much time on tasks that don’t add value at first sight.
That puts us in a position where we are forced to work in a stressful programming environment while managing complexity and staying productive.
You can’t escape stress. When you are trying to build something from scratch, you’ll be constantly pushed and the demands to your mind will be omnipresent. That’s why I recommend you to learn how to deal with stress better.
It’s easy to lose your focus and go down the spiral of frustration when a bug comes: “But this feature was working just a minute ago!”, “Where is this bug coming from?”, “Now I have to spend an extra 10 hours fixing all these pointless bugs for no reason!”.
Because life is stressful, why not make it easier to deal with the problems we will inevitably face. Here’s how you can improve your patience and performance:
- When a bug or an unexpected issue comes up, stand up, take a break and walk for a short while. You want to get that negative energy out as soon as possible so you can think clearly about how to solve it. Drinking water will be a great tool to distract you in those situations.
- Train your body: whether that’s lifting weights, practicing martial arts, dancing or simply walking you want to have a strong, disciplined body that’s resistant to problems. A strong body is a strong mind. In fact, studies say that doing any sort of physical stimulation is great for your brain because it improves the blood flow to your brain. Don’t neglect this aspect.
- Write: when a problem comes, write what’s happening, where you think it’s coming from and what you can do about it. That way you’ll clear your mind from the sudden chaos while being able to bring the order back to your mind.
That’s it. Now every time a bug comes up, you’ll see what’s the best way to fix it. In summary:
- Choose one approach when developing a product depending on how you deal with stress. If you feel comfortable in chaos, build features first and fix bugs last. If you get stressed by the breaking application you’re creating, fix the issues first and continue with new features later on.
- Practice the 3 tools I gave you to improve your ability of dealing with stressful situations so you’re able to be a better programmer when facing problems:
- Take a break when a problem appears.
- Train your body.
- Write to come up with a solution in those key moments.
Hope you enjoyed this article and make sure to share it with that particular person that always seems worried or stressed out. It will help them.