This quote is attributed to Voltaire.
Le mieux est l'ennemi du bien.
Voltaire, Dictionnaire Philosophique
Literally: TheBetterIsTheEnemyOfTheGood? No, the article title is the correct translation. -- Fastest Nitpick In The West
Probably the article title is not the correct translation (see: http://french.about.com/library/weekly/aa122200mm.htm
). So you have a choice to translate "mieux" either as "better" or as "best". "Best" doesn't make sense, because nobobody knows "the best", but you can always tell if a solution is better than an existing good one.
The Best is the Enemy of Good
means that close is sometimes GoodEnough
, and exact is far too costly.
During the ColdWar
, I heard that this statement was on the wall in Russian Admiral Gorshkov's office.
That was probably the reason the ColdWar
was called off, since exacting a winner would have been far too costly.
The Cold War wasn't called off as much as it petered out... the West spent the USSR into the ground. However, the USA is still paying for the excesses of the Reagan military buildup of the 1980s.
Someone seems a little sad the USSR is not around.
The meaning I've heard is that by exalting only the apex of achievement, we discourage effort from those who are less-skilled, thus stopping them from trying, and lowering the overall level of quality.
A little ditty I learned in grade school went like this, "Good, better, best, never let it rest, 'till your good is better, and your better's best."
This is fundamentally opposite to TheBestIsTheEnemyOfTheGood
because of perspective.
If the time taken to refactor makes a program better. Who is the judge who declares what the "best" is? The individual? The community? WardCunningham
The whole concept of TheBestIsTheEnemyOfTheGood
was created to help control the masses by supplanting the will of the individual with that of someone deemed smarter in some way. Though we may abdicate our choice to someone else, choices are the perview of the individual. TheBestIsTheEnemyOfTheGood
then becomes one more tool for subverting individual will. The alternative is a better goal, interdependence through better choices.'' -- TerryLeeMoore
So you never replaced some of your good code by some better solution because of some strange socio-political interpretation of the TheBetterIsTheEnemyOfTheGood?
I find it refreshing that some people believe this. A lot of people like to promote the idea that SecondPlaceLoses
, including JerrySeinfeld?
and the ActsOfGord?
]. I wonder if this is a candidate for AmericanCulturalAssumption
, as we seem to hold particular regard for the AlphaMale
position. -- NickBensema
In Brazil we have entrance exams (vestibular
) for all Universities. If you want to go to a good University you usually take special classes, a market usually dominated by 3 to 4 schools in the country. Since I was aiming for the best, I choose to attend the most successful of these schools. There TheBestIsTheEnemyOfTheGood
was one of the most important teachings. The meaning was much alike
. It was most used against
very intelligent students that tried to find elegant solutions to difficult problems before trying the simplest ones. No one was never talking about less-skilled
, but about spending your time (in the exam, or while studying) in a useful way and not aiming for OverOptimization?
. -- GeraldoXexeo
Remember that the reverse is true as well: universal acceptance of GoodEnough
will eliminate the better and the best.
But is this such a big deal,
as long as "good enough" continues to improve over time?
'Good enough' does not continue to improve over time all by itself. Somebody has to put in the effort; and he does it because he does not consider that what is 'good enough' and wants to do it better.
It shouldn't be, since the goal is (usually) to get everyone to improve, and that happens only when everyone tries.
There is a sweet spot in setting standards. Too low or too high can be disastrous.
By enemy you are implying those <= good will try to destroy the best? So mediocrity perpetuates itself.
does not promote mediocrity, it (paradoxically) promotes the best that can be done in a given situation. Sometimes we aim very high -- unrealistically high. When the dust settles, we find that we would have done better if we would have aimed lower!
For instance, let's say we have a JuniorProgrammer?
. This programmer is working on one of his first assignments. He is eager to please so he starts his project with enthusiasm. Being a generous person of high standards, this programmer decides to give the customer "extra" functionality and to really make the user interface spiffy. Unfortunately, before this poor programmer knows it, this CreepingFeaturitis
makes the schedule slip. It was really important to the customer to have this software on time, and the "cool" surprise features end up being not that valuable. TheBestIsTheEnemyOfTheGood
Lousy example. This is a management problem, not a "best" versus "good" issue. CreepingFeaturitis is not under discussion here.
"TheBestIsTheEnemyOfTheGood does not promote mediocrity, it (paradoxically) promotes the best that can be done in a given situation."
Not true, and there are many engineering examples to demonstrate this.
Both Windows and Unix/GNU-Linux are garbage, but both can be made to work well enough. To work with them is a pain in the tail, but they suffice for most practical purposes. There is hardly any incentive for anyone to create The Best, since the market would never accept a radical change in operating systems technology.
The original IBM PC was a horrible example of engineering -- fun for tinkerers, but never appropriate for mass adoption as a workplace tool. It is only in the past few years that PC derivatives have been able to discover and identify new hardware components without mystical incantation involving hexadecimal numbers by thickly-spectacled clerics. While it seemed good enough at the time, its mass adoption stifled major innovation in small computers.
Good Enough promotes mediocrity by reducing desire for The Best. These examples were not the best that could be done in a given situation. They were just bad designs that succeeded in a market vacuum.
Your definition of "works well enough" does not match mine. :-) And I think it doesn't match the intent of this page.
From what I can tell, "The Best is the enemy of the Good" is meant primarily to address practical application. The statement "Close is sometimes GoodEnough" implies that there's somewhere that you're trying to be close to. The idea is not to discourage high-flying
thinking, merely high-flying implementation of that thinking. Implement a good solution, without worrying about whether it's the apex of human achievement. -- BrentNewhall
The problem with "the Best" is that it is a highly subjective (and arrogant) determination.
How so? Usually, a professional constantly monitors his own work and tries to improve ist, that is: make it better, even if it is 'good' or 'good enough'.
A software program often has a multitude of characteristics. Being the best at any one characteristic does not necessarily improve the whole and may damage it. Does it matter if you have the best or most efficient algorithm if the machine is typically spinning idle loops waiting for user input? What if you also had to slip schedule to perfect this algorithm? What if the resulting algorithm cannot now be modified, just rewritten, if changes are needed?
"The best" also presupposes that no one will ever be able to do it better. All the effort to be the best is wasted if someone else comes along and finds a better way of doing it.
The whole problem arises from the shift of 'the better' or 'the best' from the work to be done to the subject that is doing the work.
In my experience, when I see two developers arguing over the best way of doing something, they are usually looking at two different aspects of the problem and each is ignoring the other. The better approach for the program often turns out to be something that is not the best for either of the two aspects being argued about.
Back in the early 90's, PacBell
's marketing slogan was "Good Enough Isn't." I worked at NETCOM at the time, and as a large PacBell
customer, and also one of the early consumer ISPs, it was abundantly clear to me that in reality, "Good Enough Is." -- PeterKaminski
Herbert A. Simon coined the (non-)word "satisfice" (combining "satisfy" and "suffice") in his 1957 book Models of Man
for the act of simplifying a decision by choosing a course of action which is good enough, rather than optimizing or maximizing by choosing the best or biggest. (This decision-making process was later observed in the field by Gary Klein, who wrote Sources of Power: How People Make Decisions
and a bunch of military generals are cited as saying "the best is the enemy of the good":
"Le mieux est l'ennemi du bien." -- MrVoltaire
, 1764 (apparently from an Italian proverb, "Il meglio � l'inimico del bene.")
"The greatest enemy of a good plan is the dream of a perfect plan." -- Prussian General Karl von Clausewitz, Vom Kriege
"Perfect is the enemy of good enough", -- Soviet Admiral Sergei Georgievich Gorshkov
"Don't delay. The best is the enemy of the good. By this I mean that a good plan violently executed now is better than a perfect plan next week. War is a very simple thing, and the determining characteristics are self-confidence, speed and audacity. None of these things can be done perfectly, but all can be done good." -- U.S. General George Patton
Jeff Cooper wrote about handguns and the custom gunsmithing that people wanted to have done to them. A typical gunsmithing request would be to smooth out and lighten the trigger, thus making it easier to get a good group in paper targets at the range. However, Cooper wrote, for handguns used in a self defense role it is better to have a gun that goes "bang" over a gun that goes "click."
Now: how does all this noise have anything to do with the quality of the software we develop? If the package meets the requirements then we are done -- it is GoodEnough
. If it doesn't meet the requirements then we aren't done, no matter how pretty or tight or modular or whatever else it may be.
So speaks the craftsman, but not the artist! Sure, if you earn a living 'good' often is 'good enough'. But almost everyone pursuing some hobby, say tuning his motor byke, is almost never
content and constantly tries to improve the performance of his machine even if an outsider tells him: Why, it's good enough already. If people want to buy really nice things for themselves they look for perfection (the better, the best they can afford) and go for Tiffany, Mercedes, Rolex, or Armani. -- ReinhardEngel?
Because: Many developers have tremendous leeway in how they meet their requirements, and can spend a lot of time in pursuit of the "best" solution. As such, it's important to point out that the pursuit of the "best" is at least worth questioning, which is what this page points out.
Okay, so if the development is being driven by tests and you hack out code until the test bar goes green then you're done?
I suspect it was on the wall in Gorshkov's office because he saw Western capitalism as beneficial only to the "excellent" (i.e. Capitalists), whereas the Soviet system was (theoretically) beneficial to the "good" (i.e. the proletariat). Not that either system works that way, just that it might have looked that way to a Soviet Admiral during the cold war. Trying to not start a political discussion here, ok?
While there are many possible interpretations of this, the one that resonates most with me is that "The Best" here is being used with irony. CreepingFeaturitis
is merely one manifestation of this principle. Is Photoshop "The Best" photo editor? Well, it is unless you want to do something simple (or quickly). Another manifestation is overly complex programs. Every attempt to reach that last little bit of perfection increases the complexity of the code. The EntropicLawOfComplexity
defines the result. Another manifestation is handling cases you're not sure you're going to need to handle (YouArentGonnaNeedIt
). Another manifestation is overly precise descriptive text in GUIs (UsersCantRead
). Another very common manifestation is project failure due to perfectionism (DeathFromPerfection
If you use a less ironic meaning for "The Best", this principle would be false. Perfection would reduce complexity to the minimal amount needed.
Perhaps a more useful way of looking at this would be:
If you are aiming to beat everyone, you will fail to do as well as if you had concentrated on doing a good job. This makes sense if you measure Time used productively: Spending time trying to check if you are 'winning' and subsequently worrying about it is less productive than focusing on the problem at hand.
Law of diminishing returns, people. Stop saying that "it encourages mediocrity because you never improve anything." Nowhere is said that you don't improve "anything", you just have to stop somewhere, and that is, when it is Good. Good <> Mediocre. Memorize the FUDGE scale: Terrible < Poor < Mediocre < Fair < Good < Great < Superb < Sideways < Peppermint < Sex Appeal ;-)
Stunning ignorance and foolishness on this page. Voltaire's statement refers to an irrational
pursuit of perfection that leaves one with nothing
, when one could have had something good. Like voting for Nader because Gore or Kerry are flawed, and ending up with Bush instead. It's a failure to be pragmatic.
Great examples right on this page - people striving for complex literal explanations of a simple idea. The radical activist willing to sacrifice ordinary human kindness and common-sense justice in his drive to achieve utopia. I pass a very pleasant-looking girl in the street, who gives me a friendly, open look; I pull up, but then think to myself "sure, she's OK, but the night is young; I'll probably land a **real** knockout later on". I spend endless hours trying to make my cool new program a paragon of elegant code, while my three-year-old sits drooling in front of the boob tube instead of spending time with Daddy.
That's all, simple idea; dealing with life's challenges on a "higher level" usually just makes things complicated, rarely actually better. The true "best" we can do is to focus on what we can do to quickly and incrementally improve what's right here in front of our face, make sure we actually keep moving in the direction we want to go, rather than chasing a more distant if not simply abstract ideal. Many of us use "high ideals" as excuses for just not getting done the things that really need doing; perfectionism is a killer of genuine productivity.