44

A "bug" is essentially when a program fails to function as expected/desired.

What I'm looking for is a word for the opposite of that - a function that is desired but isn't supposed to be working yet unexpectedly starts working. As an example, I'm developing an iOS app at the moment. It includes notifications upon certain events. We didn't think anyone had deployed our push notification server yet and notifications hadn't been tested at all, but in the course of testing other things, notifications somehow started showing up.

I feel like this is a feeling familiar to all programmers. Is there a word?

anongoodnurse
  • 55,278
ChrisV
  • 574

17 Answers17

121

To my mind the behaviour you describe is still a bug. A bug is what you have when Actual Results differ from Expected Results - and this is exactly what you have here.

AakashM
  • 2,216
  • 58
    Ladybug perhaps – cellik Apr 10 '15 at 09:04
  • 6
    I agree. Technically this is still a bug, albeit a pleasant one. – starsplusplus Apr 10 '15 at 09:05
  • 20
    Yes. If you don't know why it works now, you won't be able to fix it when it stops working. – JeffSahol Apr 10 '15 at 16:42
  • 3
    Let's say I am new python programmer, and I want to iterate over keys of a dictionary, so I intend to do [k for k in my_dict.keys()] but I accidentally forget .keys() of course the code would still work, but I would not expect it too, and I would be surprised that it works. Would you say that I have a bug? – Akavall Apr 11 '15 at 03:57
  • 1
    Still a bug. A beneficial bug, perhaps, but a bug. – GEdgar Apr 11 '15 at 21:14
  • 2
    @cellik I like your suggestion but I'd have to call it a ladybird in my dialect! It's still a bug but a pretty one and it's considered special when one lands on you! – CJ Dennis Apr 12 '15 at 02:50
  • While it's accurate that it's still a bug, I think that's missing the point. A heisenbug is also "just a bug" but the word was coined to describe some more specific common experience. In fact, a bug is itself "just a malfunction" if you want to get ever more general.

    I like ladybug/ladybird, that's along the same lines as butterfly.

    – ChrisV Apr 13 '15 at 23:04
  • @Akavall Yes, until you realize how it works. – Scimonster Apr 14 '15 at 09:38
  • 2
    @Akavall: As you expect to be iterating over the keys, your code is doing something different than you expect and hence it is a bug. The mere fact that it does not visibly fail (e.g. due to a compiler error or runtime exception) does not mean it "works". – O. R. Mapper Apr 14 '15 at 13:49
  • @O.R.Mapper, in my example iterating over dictionary object in the pythonic way of iterating over keys, so not having .keys() is actually better. That's why I am reluctant calling this a bug. – Akavall Apr 14 '15 at 14:09
88

Feature. There is a programming joke, 'It's not a bug, it's a feature' and 'If you can not fix a bug, try to prove it's a feature'

But grammatically, 'bug' is a slang for 'error', and the opposite for 'error' in programming code is 'validity', and debugging software naming is 'debugger' or 'validation software'.

The error messages may state 'Invalid code', 'Invalid operation', 'Invalid usage'

What you described is 'undocumented features' or 'undocumented behavior', which is still a bug.

Note Mathijs Segers' comment, a very good suggestion, software developers often announce 'bug fixes' in every new version or subversion. A 'fix' is a valid opposite for 'bug'

Oleksii
  • 2,952
  • 3
    And being undocumented, it may change at any moment so shouldn't be relied upon... unless you can convince the developers to make it official. This isn't really an English question, though. – keshlam Apr 10 '15 at 02:50
  • 33
    They are not the jokes at all. The joke is "It's not a bug, it's a feature!". – aaa90210 Apr 10 '15 at 04:02
  • The way tech writers see it, the only features or functions that need to be explained to users are the ones that do not behave the way you expect. This includes bugs as well as other counter-intuitive program behavior. And we document what the humans must avoid because the program does not prevent them from doing it. There are always gaps in the input edits. These are neither bugs nor features; I call them infelicities. – Brian Hitchcock Apr 10 '15 at 10:38
  • 2
    "Undocumented feature" is a joking euphemism for a bug... which is what this is. Unexpected behavior (if it's unexpected to the program's designers/developers, at least) is always a bug, regardless of whether any given result of said bug may be desirable or not. – reirab Apr 11 '15 at 19:26
  • reirab, yes, 'undocumented feature' is joke, but it exactly matches what the question describes, '... a function that is desired but isn't supposed to be working yet unexpectedly starts working'. Everything undocumented but existent is a bug, but some bugs behave like features, they look like features. – Oleksii Apr 11 '15 at 20:47
  • 4
  • WernerCD, right, edited. The VW is funny, but I am not sure it is proper in language usage discussion – Oleksii Apr 11 '15 at 23:43
  • "... the only features or functions that need to be explained to users are the ones that do not behave the way you expect". So, basically, explain everything, then. – Agi Hammerthief Apr 12 '15 at 20:54
  • 1
    "bug" is not "slang for error", "bug" is a historical term derived from the process of fixing old vacuum tube based computers from yesteryear, where a moth or similar would find its way into the computer causing a short (and an error in programming). Thus the term "debugging" was born, and still, today, we refer to programming errors as "bugs". Often users refer to things as bugs which are not, such as feature changes, or unexpected behaviors which are not bugs (but were otherwise unintended.) This is also why we have a running joke about certain bugs being features. – Shaun Wilson Apr 14 '15 at 17:31
  • Shaun Wilson, a great point about the history of the term. Still I am not sure if it is a term or a slang word for this reason: the term is something that is singular, singularity is a property of a term. Something other than a term may be slang. In case of a live bug in vacuum tube it was the term describing the object literally. In case of computer bug, error is implied. – Oleksii Apr 14 '15 at 17:41
  • i see. the difference between this and slang is that "bug" has a formal definition, one that it is taught to students in higher education, based on that definition the closest antonyms of "software bug" would be a "software fix" (or simply a "fix") and a "software feature" (or simply a "feature") -- i.e. rather than an undesired behavior, a desired one. synonyms for "bug" include: fault, error, defect, flaw; it's worth noting that no educational resource seems to list any antonyms for "bug" as the term relates to software – Shaun Wilson Apr 14 '15 at 19:14
  • @ShaunWilson: the exact historical origin of "bug" isn't certain, but it probably comes from "bugbear" or "bugaboo", and was in usage by the 1870s, well before vacuum tubes or inanimate computers. Literal bugs in a machine were far too uncommon to inspire terminology; when a moth was found in a relay, it was noteworthy enough to be logged and then talked about in computing folklore. – outis Jul 04 '19 at 06:13
  • "Bug" is usually classified as "jargon", which is in the realm of "technical/trade slang" (there isn't a hard taxonomy for these things). – outis Jul 04 '19 at 06:16
24

Most appropriate expression seems to be "unintended feature".

A bug is unintended, and is bad for users.
A feature is good for users, but, in this case, it was unintended.

Web Search also throws a lot of results for this expression, so it seems to be widely accepted.

After some more thoughts on this, I have this grid:

|      -        | unintended | intended    |
| bad for user  |     bug    | restriction |
| good for user |      ?     | feature     |

While looking row-wise (viewpoint : "It is a feature"), we can fill in with "unintended feature".
While looking column-wise (viewpoint : "It is a bug"), we can fill in with "beneficial bug".

Completing the analysis of the grid : It is partially a feature and partially a bug, so I might add the answers by @Nanne , featurebug & bugfeature.

A comment about the restriction : When software has intentionally disabled features (User : "I can draw pictures, but can not save them"; Developer : "You have to buy a license for the software, and this restriction will be removed") and makes it bad for the user.

Prem
  • 4,736
  • 8
    Although in actual use, beware that "unintended feature" is also a joking euphemism for "bug". Less so than "undocumented feature", but still could be misinterpreted. – Steve Jessop Apr 10 '15 at 10:17
  • 1
    Very closely related, we've used "accidental feature" a few times when talking to our product owner – Izkata Apr 10 '15 at 14:03
  • @Izkata, I like "accidental feature" too. Some more variations are "fortuitous feature" & "inadvertent feature" & "unintentional feature". – Prem Apr 10 '15 at 14:15
  • 1
    This should be the accepted answer. Also, some people are saying it's still a bug, but I think that's if and only if the requirements particularly held that it should not have been in there. The OP's description makes it sound like a grey area in this case. – Panzercrisis Apr 12 '15 at 03:28
16

The discovery is a serendipity - meaning the fact of finding pleasant or useful things by chance.

9

Glitch: the exploitable kind (hacks), not the incorrectly written kind (bugs). From my GAMING experience, a programing bug doesn't let me do something I should be able to. A glitch lets me do something I want, that I shouldn't be able to.

Bug, bad; glitch, good.

An inexplicable problem or condition happening in a system. A glitch in the code gave Bob twenty-six free months of AOL. -urbandictionary.com

Generally, a bug is upsetting to both parties, while a glitch is good for the unscrupulous player (me), it is not good for the programer (you), whose job it is to fix it.

To Bob, it's a glitch; to AOL, it's a bug. 'Features' are in the eye of the beholder.

There is a bug inexplicable condition in your code; it just happens to be "desirable" and you should have "expected" that there would be some errors.

A bug becomes a glitch once someone can repeatedly exploit the vulnerability: GTA Money Glitch. Your glitch will revert to a bug when you discover that it had broken functionality, elsewhere.

Mazura
  • 8,868
  • 3
  • 29
  • 50
  • 13
    To me a glitch means something unintended but that doesn't prevent the program functioning (as a bug does). Glitch doesn't carry positive connotations for me. – ChrisV Apr 10 '15 at 07:36
  • 2
    I think a glitch is a one-off unexplainable event (positive or negative). From the description, this is reproducible. – starsplusplus Apr 10 '15 at 09:06
  • 1
  • 4
    Dictionary meaning of "glitch" : A fault or defect in a computer program, system, or machine. Does not seem appropriate here. – Prem Apr 10 '15 at 09:55
  • 4
    I think, "glitch" generally has negative implications, while the Urban Dictionary Example is an exception. Even if we change that Example to "A bug in the code gave Bob . . . " , the meaning is still the same. Many Examples of glitches are available here {{ http://en.wikipedia.org/wiki/Glitch }} , where most of the cases have negative implications. – Prem Apr 10 '15 at 12:35
  • 2
    TFD's definition of glitch is lacking. Anyone who doesn't think that at least some glitches are useful, isn't a user; they're an employee. – Mazura Apr 11 '15 at 20:16
  • 1
    As @starsplusplus, I use bug for the reproducible ones, and glitch for the others. – Blacklight Shining Apr 12 '15 at 03:55
  • 1
    Mazura's definition is indeed one fairly common (at least in-community) use of the term "glitch", though perhaps a newer usage of the term. As a programmer the term would be negative and mean "bug" to me, but as a user I would interpret the term "glitch" as either an undocumented (and positive) feature or as a system flaw depending on context (the situation and who is speaking). To younger gamers this term nearly always has the positive connotation, to business software authors/users it is nearly always negative. – zxq9 Apr 13 '15 at 21:25
  • I also agree with @ChrisV - A glitch is an unintended hiccup that does not cause the program to stop functioning. I once had a laptop that when removed from an external display, would flash it's screen (go blank for a moment then come back) once every 10 minutes or so until I rebooted it. It only occurred when I had plugged in an external screen, and subsequently removed it at a later point. Was this a positive glitch? No. Did it stop the laptop from functioning? No. Was it annoying? A little. – Robotnik Apr 14 '15 at 03:50
9

We call this "working by accident". Also applies to any untested code--sure, it happens to work now, but there's no guarantee that it will work in the future.

6

The jargon term misbug describes "[a]n unintended property of a program that turns out to be useful; something that should have been a bug but turns out to be a feature."

A program, feature or code path that simply works without hassle wins. If the win is sufficiently significant or serendipitous it might even be a big win.

6

To add to the answers calling it a bug, we call this a "featurebug". Technically it shouldn't do what it does, but currently it is doing what it does obvioulsy, and people use it.

Examples would be closer to things like: if you click here it not only does "action x" but it also redirects you to this other page. Even thoug it was not intended to dot his, it's seen as a feature by the user, as we need to go there anyway. So that's a featurebug.

(If you make a feature that nobody wanted and that actually makes things worse, but does work as you intended, that would be a "bugfeature" obviously, but that's a whole different beast)

Nanne
  • 162
  • a great name; not a well-known nor widely used one, bordering on neologism - but a brilliantly spot-on, with a definite +1 in my book! –  Apr 14 '15 at 18:03
5

We call these latent bugs. If it works when it should not, it will transition to not working at the most inconvenient time.

Joshua
  • 286
4

I really like CrisV's suggestion butterfly. I think I will incorporate it to my day-to-day speech :)

Looks like there is not a short word for this lucky feature. The closest I have seen in the comments and answers is unintended feature.

But words are created by constant use. And in this case, I think we need something nice to show this concept.

4

They're usually called "easter eggs"; they're peculiar "treats" that programmers add intentionally or otherwise. Usually they're intentional but "neat" features are sometimes accidental.

3

Notifications started showing up automagically.

tchrist
  • 134,759
3

I'm developing an iOS app at the moment. It includes notifications upon certain events. We didn't think anyone had deployed our push notification server yet and notifications hadn't been tested at all, but in the course of testing other things, notifications somehow started showing up.

I feel like this is a feeling familiar to all programmers.

The word you want is magic or magical. The key part is that you got some desirable functionality but you don't understand why or how it works. So in that situation you might say "I didn't think we implemented this feature, but somehow it magically started working!"

Some other people pointed out that this is still a "bug" in terms of software development and that part is correct. You do not actually want "magical" functionality in your product. That's because there's no guarantee that the "magic" will continue to the next release, for example. And a "magic" feature probably is not testable either. You also said you didn't test it.

Notice that this phrase is distinct from saying "It works as if by magic." When you use this formulation, you know that it is not, in fact, magical, but that the feature you are pointing to is impressive enough to be touted as magical even though it isn't.

Another commonly used but distinct phrase in software is "automagically". However, automagically in software refers to a deliberate feature that automates a task "as if by magic". In other words, it automates a task in a way that is impressive enough to seem like magic, but it is nonetheless a well understood functionality by its implementors and is therefore not true magic.

Brandin
  • 436
3

I would call this a happy accident.

a pleasant situation or event that is not planned or intended (Idiom Dictionary)

when something unexpectedly good comes from what would otherwise be considered a mishap (Urban Dictionary)

The latter is not a perfect fit, but it could have been a mishap if someone had turned on the feature before you expected and it didn't work.

It doesn't sound like a "bug", because it was working as intended; you just didn't realize someone had turned it on. That would be like saying: "I developed this really great website but I didn't think anyone had turned the web server on yet. Then I discovered someone had!" Would you call the website a bug? I think not.

And "undocumented feature" would only fit if it were, in fact, undocumented. If the notification feature was fully documented and you just didn't realize anyone had turned it on, that's not really the same thing.

Lynn
  • 17,801
  • "Happy accident" is accurate, but so is "malfunction" instead of "bug". "Happy accident" seems a bit too general. – ChrisV Apr 13 '15 at 23:02
2

It's a stretch, but you might consider inadvertent Easter Egg. Ordinarily, an Easter Egg is a feature that is not obvious, but can be stumbled upon if you know where to look. In the case you describe, the notification process started working even though, to the best of your knowledge, it should not have been. These Easter Eggs (the notifications) were inadvertently caused by the app programmers - hence the name.

2

The Jargon File” lists a few possibilities:

black magic: n.:
A technique that works, though nobody really understands why.

 

feature: n. (definition #3):
A surprising property or behavior…

 

misbug: n.:
An unintended property of a program that turns out to be useful; something that should have been a bug but turns out to be a feature.

1

I'm not sure this is really a thing at all, in that the feature doesn't unexpectedly fall out of the software's design.

It's like building a radio to receive certain bands, and on one of them it picks up a station that you didn't know was there.