Innovation in Iteration: A Developer’s View on Quality & Legacy Code
- March 04
- 4 min
It’s Not a Bug, It’s a Feature
Unfortunately, in software development, the phrase ‘It’s not a bug, it’s a feature’ is still common. This phrase, often used to justify unexpected software behaviors, is not a good practice as it can lead to overlooking genuine issues. It’s important to understand that every unexpected behavior should be thoroughly investigated, whether it’s a bug or a potential new feature.
Understanding the crucial difference between bugs and features is not just a technicality but a key to creating better products and avoiding costly mistakes. This knowledge empowers developers, project managers, and tech enthusiasts, giving them a sense of control and confidence in handling them effectively. Bugs require immediate attention, while features demand careful planning and implementation. Sometimes, a bug report gives us a great idea for adding something new.
But before we dive into technical stuff…
This question has no clear answer, so we will probably never know. We can find the reference to this phrase in The Jargon File – the most famous glossary of hacker slang from 1975 – where we can read:
[common] A bug that has been documented. To call something a feature sometimes means the author of the program did not consider the particular case, and that the program responded in a way that was unexpected but not strictly incorrect. A standard joke is that a bug can be turned into a feature simply by documenting it (then theoretically no one can complain about it because it’s in the manual), or even by simply declaring it to be good. “That’s not a bug, that’s a feature!” is a common catchphrase.
While different, the line between a bug and a feature request can be blurry. At their core, both often highlight a gap in the software’s functionality – something missing or not working as expected. However, sometimes, a reported bug can unexpectedly reveal a need for a new feature or an improvement to an existing one. By recognizing these hidden opportunities within bug reports, developers can turn a negative into a positive.
As we can read in The Jargon File, features may arise by finding a bug in the software, but this is not a good way to create them. When using best practices, a feature is a functionality intentionally designed and implemented in a software program. Features are typically designed to meet a specific user need or requirement and enhance the software, adding value and improving the user experience.
Features can be small and straightforward, such as a button that allows users to save a file, or they can be large and complex, such as a search engine that allows users to find information on the web.
For instance, a bug could be a button that doesn’t respond when clicked, while a feature could be a button that saves a file when clicked. These examples can clearly illustrate the concept of bugs and features. A bug is a software defect that causes a program to behave unintendedly. Various factors can cause bugs, including coding errors, design flaws, and inadequate testing.
It’s essential to know that bugs can have a wide range of impacts, from minor problems to significant security vulnerabilities. In some cases, bugs can cause systems to crash or lose data, underscoring the need for caution and thorough testing.
The difference between a bug and a feature is problematic only when the software or application documentation is not extensive enough to include all possible guidelines and cases.
For instance, misidentifying a bug as a feature could delay fixing a critical issue. Misidentifying a feature as a bug could lead to unnecessary work and confusion. In general, however, there are a few key factors that can help to distinguish between bugs and features. It’s important to remember that these misidentifications are common and part of the learning process.
Bug |
Feature |
Unintentional |
Intentional |
Negative effect |
Positive effect |
Problematic |
Beneficial |
Specific conditions |
Broad applicability |
Bugs, while frustrating, can act as unexpected reasons for innovation. They can highlight user needs and pain points not initially considered, successfully laying the groundwork for new feature ideas. Recognizing and taking advantage of these opportunities can be a game-changer for product development. Instead of simply fixing the bug, developers can use the insights gained to create features that truly resonate with users. This approach enhances the software and optimizes resource allocation by focusing development efforts on areas that directly address user needs and improve their experience.
This phenomenon of bugs’ inspiring features is not a rare occurrence. Take, for instance, the now-commonplace ‘pull-to-refresh’ gesture, a staple in countless mobile applications. This intuitive action, allowing users to refresh content with a simple swipe, was born from an accidental implementation in Tweetie, an early Twitter client. Developer Loren Brichter, while experimenting with different user interface ideas, unintentionally introduced a scrolling mechanism that triggered a refresh action. What started as a happy accident became popular among users, who valued the simplicity and effectiveness of the gesture. Recognizing its potential, Brichter refined and integrated the ‘pull-to-refresh’ action into Tweetie, and it soon spread to other applications, becoming a standard design pattern in the mobile world. This exemplifies how an unexpected behavior, even from a bug or an unintended implementation, can spark innovation and enhance user experience.
It might seem surprising, but sometimes, users report a feature as a bug. This can happen for several reasons:
If reporting a feature as a bug was surprising, what about the opposite situation? Is it even a good practice to turn bugs into feature reports? As always, the answer is not that simple, and it depends on several factors. As we already discussed, the differences between both are clear. Still, the bug report can be upgraded to a feature report under some fortunate circumstances.
Check the root cause of the issue. If the bug occurs due to insufficient software, consider upgrading it to a feature. It’s important to make sure no function elements are missing. If the reported bug is a missing piece of the function (like missing file format), consider upgrading it to a feature. Check the descriptions of existing or planned feature requests connected to the bug report. If the descriptions lack a point that suits the bug, consider upgrading it to a feature.
There are a few key best practices that can help to ensure that bugs are fixed and features are implemented effectively:
A common dilemma in software development is deciding between fixing bugs and building new features. Should you focus on perfecting existing functionality or pushing forward with new, innovative features? There’s no one-size-fits-all answer, as the best approach depends on the specific context. However, to resolve this “fix or build” problem effectively, it’s crucial to consider a few key factors.
In the complex world of software development, the difference between bugs and features can often become unclear. Understanding these differences is essential to creating high-quality software that truly meets user needs. Bugs need immediate attention and quick resolution, while features require careful planning and thoughtful implementation. Occasionally, what appears to be a bug may inspire the development of innovative new features, resulting in unexpected enhancements and a better user experience.
By acknowledging the importance of fixing bugs, developing new features, and prioritizing them effectively, development teams can deliver functional and enjoyable software.