Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Despite the best intentions of programmers; oftentimes, in the real world, software systems contain "accidental features" that are accepted as part of a working system.

For example, there may be some process that runs out of memory and crashes before the process exceeds its quota for calls to an external system (which will cost the company money). Though the software team acknowledges that this is an issue, there is simply not enough perceived business value to fix the problem.

Advantageous accidental behavior like this is often lost in any type of significant technical migration.

My question: Is there a term for this type of "feature" that can serve to differentiate it from a run-of-the-mill bug?

share|improve this question

closed as primarily opinion-based by Robert Harvey, GlenH7, ChrisF Apr 23 at 22:01

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

4  
I call them "undocumented features", though I often use it sarcastically to refer to a bug. Not sure if that's standard though. –  tjameson Apr 7 '13 at 19:51
    
We call it a defect. It's something wrong with the system that wasn't caught before go live. –  Tyanna Apr 7 '13 at 22:18
    
I've heard the term "Bloombug" used to describe a bug which makes the developer some money, or generates sales. –  dodgy_coder Apr 8 '13 at 3:01
3  
Misbug. If misfeature refers to functionality that's part of the design but ultimately harmful or counterproductive, then misbug should indicate functionality that's useful by accident. –  William Shakespeare Apr 8 '13 at 4:16
2  
They are just "low priority issues". If you joke about them too much or with the wrong people, there's a danger that you appear to think that they don't matter. Not a good message to give to the customers or managers. –  MarkJ Apr 8 '13 at 10:46

5 Answers 5

up vote 18 down vote accepted

The Pragmatic Programmer calls these Accidents of Implementation. This term hopefully ensures that the situation will not be mistaken for anything but what it actually is.

"Accidents of implementation are things that happen simply because that’s the way the code is currently written. You end up relying on undocumented error or boundary conditions."

(I guess I should have consulted the developer canon before I asked this question)

share|improve this answer
1  
+1, this description sounds closest to how I read the question (although the currently-more-upvoted answers I'd also use, if they applied) –  Izkata Apr 8 '13 at 18:27

I call them "undocumented features".

It's a little tongue-in-cheek when such feature is obviously a bug, but it's broad enough that you can use it for experimental features or features included for backwards compatibility.

It's generally not a good idea to let your customers know that the feature was an accident. If customers like it, document it for the next release.

share|improve this answer
1  
@MasonWheeler some, especially non-technical clients, might take such a remark as a sign that you are incompetent as you do not fully understand what you did. They then underestimate the complexity of a large software system. –  Paul Hiemstra Apr 7 '13 at 20:16
1  
@MasonWheeler Citing a feature as "accidental" shows you don't have good quality control. An "undocumented feature", on the other hand, sounds planned, even if it was an accident. I write code for a lot of government clients, and they don't like surprises. –  tjameson Apr 7 '13 at 20:17
1  
@smp7d - you call intentional features that you didn't document the same thing. The idea is that the user won't know the difference between something you didn't mean to do, and something you decided (or forgot) to document. –  Michael Kohne Apr 7 '13 at 20:29
1  
Very good. But what if you were talking to another developer? –  smp7d Apr 7 '13 at 20:31
1  
@smp7d I'd say the same thing, but with a wink. –  tjameson Apr 7 '13 at 21:25

I'd call them "emergent features".

In philosophy, systems theory, science, and art, emergence is the way complex systems and patterns arise out of a multiplicity of relatively simple interactions. Emergence is central to the theories of integrative levels and of complex systems...

The term "emergent" was coined by philosopher G. H. Lewes, who wrote:

"Every resultant is either a sum or a difference of the co-operant forces; their sum, when their directions are the same -- their difference, when their directions are contrary. Further, every resultant is clearly traceable in its components, because these are homogeneous and commensurable. It is otherwise with emergents, when, instead of adding measurable motion to measurable motion, or things of one kind to other individuals of their kind, there is a co-operation of things of unlike kinds. The emergent is unlike its components insofar as these are incommensurable, and it cannot be reduced to their sum or their difference."

share|improve this answer
    
Though emergent features are often not really an accident - you plan for having them, you just don't know what they will be ;) –  Joris Timmermans Apr 8 '13 at 15:34
    
@MadKeithV: :-) –  Peter K. Apr 8 '13 at 18:20
    
Any feedback on the downvote? Just wondering. –  Peter K. Apr 23 at 16:32

I've heard this referred to as "Design by Coincidence".

Short example: One project I worked on managed MS Office documents on a network drive. It allowed users to open up the documents directly - a bug, it was supposed to copy the file to the local machine. but that meant users would be alerted if another user had the document already open. This was a basic feature of MS Office, and had nothing to do with our software, but our salesforce and CEO started referring to it as a feature. When I was asked to replicate this feature for the web version of the application, the managers were shocked to learn that the 'feature' didn't actually exist.

share|improve this answer

"Emergent properties" is a correct term. We went over this at university - example was a 4x4 car. Its main purpose is off-road. However, many families decide to buy such a car because it provides safety to their kids (passengers).

Another emergent property of that car is the fact is when you drop your kids off at school, they tend to open a door in a rush. This has caused separate problem where small kids on the pavement were hit by the car door as you couldn't really see them in a window.

The point is that the term applies to both good and not so good features. It's also used in a range of industries, not just the IT.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.