Bug or change request: why the distinction helps
The question sounds like laying blame and is really a question about expectation: should it have been different, or should it become different? The answer determines urgency, order and cost.
What you will learn
The difference in one sentence
A bug is a deviation from what was agreed or from what can usually be expected of software of this kind, such as crashes, data loss or security vulnerabilities. A change request is a deviation from what you wish for today. Both are legitimate; only the handling differs.
Why the classification helps both sides
For you: A bug is fixed with priority and, within the warranty period or under a maintenance contract, is generally not charged separately; the exact terms are set out in the contract. A change request is scheduled, estimated and decided on deliberately — you determine whether it takes priority over other work.
For us: Bugs are a quality signal. If several occur repeatedly in one area, we look at that area instead of fixing the symptoms one by one. If the two are mixed, this signal is lost — and a long list then says nothing about how the application is doing.
An example from practice
The frequent in-between case
The third case above is everyday reality: nothing was ever agreed, and now it turns out that the software behaves differently from what was expected in one situation. Neither a bug nor a wish, but a gap in the original description.
We handle it like this: the gap is named, the desired rule is defined, and the implementation is scheduled like a change — without a discussion about who should have foreseen it. That dispute regularly costs more than the implementation.
If the gap acutely affects someone, it is moved forward. The classification determines the order, not the urgency.
What belongs in a useful report
“Saving doesn't work” costs two follow-up questions. “Yesterday around 2 pm, as Ms Meier, I saved an order with three line items; I expected the overview, I got an empty page — it worked on the second attempt” is a troubleshooting job that starts the same day.
Common misconceptions
About the author
Fabian Lücker is managing partner of PHP-Schmiede KG in Rheine and has worked in software development since 2007. He is responsible for development and design, and writes here about decisions that arise in real projects.