Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

To put it another way... What is the most commonly held and frustrating misunderstanding about programming, you have encountered?

Which widespread and longstanding myths/misconceptions do you find hard for programmers to dispel/correct.

Please, explain why this is a myth.


locked by Yannis Mar 13 '12 at 20:47

This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed. More info: help center.

I'd like to see Mythbusters take on some of these. – spong Sep 9 '10 at 17:47
Anyone up for a Mythbuggers YouTube channel? :-) – Tom Wijsman Sep 9 '10 at 21:32
Ooooh, MythBusters and race conditions! Meesa like! – user1249 Oct 24 '10 at 14:59
@TomWij that would be great to have a website with such name! – Junior M Oct 24 '10 at 15:21

61 Answers 61

That learning the syntax is the hard part.


That assigning a priority other than "1" means the task will never be done.

I had a manager ask me to customize the bug-tracking tool with priorities 1a, 1b, 1c, 1d, and 1e so he could assign everything as some variation of priority 1, but we could still organize the work.

And yes, I did get through all the "priority 1" issues. But before I could proceed to the issues that were still in priority 2-5, the manager made me re-assign the priorities of those issues into the five priority 1 levels.

(I realize this myth isn't specific to programming, but that's true of several other answers on this thread.)

You mean you didn't subdivide the 1a priority level into 1a.0, 1a.1, 1a.2, and 1a.3 ... and then the 1a.0 into 1a.0.0 and 1a.0.1 and 1a.0.2 ... that's just crazy! ;-D – LBushkin Sep 9 '10 at 22:01
I didn't work with that manager long enough, but I don't doubt it would have come to that! – Bill Karwin Sep 9 '10 at 23:10
I like to keep things simple: high, medium, low. Imagine my (non-)surprise when the business user classified a bunch as medium-high. – Jesse C. Slicer Sep 10 '10 at 14:24
You might as well classify them as top, tippy-top, and critical. – Bill Karwin Sep 10 '10 at 15:43
"If everything is important, then nothing is important" – Sergio Acosta Oct 8 '10 at 2:39

2 myths I want to have revealed. A lot of my friends do not understand that Java and JavaScript are completely different, and a lot of non-programmers I know don't understand that there is more than one language. One of my friends was just getting into programming and needed some help from me, 'course he didn't even know what language he was working in.

Those both come up a lot for me.

I love this quote: "Java is to JavaScript as Car is to Carpet." I've read this attributed to Chris Heilmann (…) – Bill Karwin Sep 10 '10 at 6:53
Java doesn't contain JavaScript, but hopefully your car has carpets. – configurator Sep 19 '10 at 2:57
My computer science professor told us, at the very end of the semester, that since he taught us Java, he also taught us JavaScript. I cried myself to sleep. – Carson Myers Dec 24 '10 at 13:20
@Bill - I've heard a similar one... "Java is to JavaScript as Car is to Caravan, they both have wheels, but otherwise they're very different." – Slomojo Jan 17 '11 at 5:59
@configurator: Actually, Sun's implementation of Java 6 is co-bundled with the Mozilla Rhino JavaScript engine. So modern Java does come with JavaScript, but just like the Carpets in your Car, it's an often-overlooked detail. – Daniel Pryden May 3 '11 at 19:59

As long as the computer understands the code you type in, that's all that matters. Therefore typing in comments and using variable names that are more than two letters long is a waste of time. :-(

And who cares if your code looks like Spaghetti? – Zaz Sep 12 '10 at 16:34

That the prototypical programmer:

  • comes in to work after 11am
  • drinks nothing but Mountain Dew
  • loves indian food or sushi
  • lives alone by choice (with parents and/or in basement)
  • stays up until 3am playing video games
It's a stereotype for a reason... – Joe Philllips Sep 9 '10 at 18:14
@Kelly - every bit of this is true. – orokusaki Sep 9 '10 at 18:15
Not true. I hate sushi. – GrandmasterB Sep 9 '10 at 20:37
A score of less than 3 means you're not a real programmer. – Tom Hawtin - tackline Sep 10 '10 at 0:59
Well, he (or she) lives alone by lack of choice :-D – bigown Sep 11 '10 at 8:10

Keyboarding form is related to programming ability. Seriously, one of the teachers at my high school told me, "You can't code quickly if you can't type quickly." My response was, "That's like saying I can only write the Great American Novel if I do it in cursive."

+1 Being able to type quickly actually can help sometimes. But being able to think clearly HELPS A WHOLE HELL OF A LOT MORE. – BlairHippo Sep 9 '10 at 14:50
You can't code quickly if you're a hunt-and-peck typist. – George Marian Sep 9 '10 at 15:42
There is a good point in there: being proficient in typing means you don't interrupt your thoughts to hunt and peck. (You'll be more likely to use better variable names, too.) The only problem here is "quickly"; being able to type normal prose at 60wpm should be plenty, but isn't very fast. – Roger Pate Sep 9 '10 at 15:47
Why are people taking this to extremes? I don't touch type, but I don't hunt-and-peck either. I program just fine thankyou, even if I only manage about 50-60WPM. Much more than that will just be bottlenecked by your brain. We aren't taking dictation, we are creating. – Matthew Scharley Sep 12 '10 at 3:24
Being able to type reasonably accurately without thinking about it is good. Speed doesn't matter nearly as much. – David Thornley Nov 29 '10 at 21:30

That Hungarian notation only means that you prefix variable names with a type (like int iArraylength = 5; ) instead of what kind of data it holds (like int xcTextfield = getTextfield().coord.x; )

"Systems Hungarian notation" != "Apps Hungarian notation"

+1 for talking about a code related myth. – Sergio Acosta Oct 8 '10 at 2:43
both are still an abomination in a strongly typed language – jk. Jan 12 '11 at 9:47
+1 for abomination. – Slomojo Jan 17 '11 at 6:06

Bug free software. Later I came to know that every program would still run with Bugs and whole play was about accomplishing customer Requirements.

Very true. The goal isn't bug free software, it is software with the bugs removed that are worth the cost of finding/fixing. – JohnFx Sep 9 '10 at 16:27
@JohnFx - that is if you don't mind giving IT managers heart problems. – orokusaki Sep 9 '10 at 18:08
I'm pretty sure I can write a bug-free hello world. – alternative Sep 10 '10 at 0:22
the fact that it is possible to create a program that is only a few lines without any bugs means it is POSSIBLE to create bug free software, however John is right, we will only spend the time ($) doing it if it's necessary, not only for the sake of it's own value, but even more for the value of other things that need our attention, hence it is not a myth – ioSamurai Sep 10 '10 at 3:20
NASA goes for bug-free software, and comes surprisingly close. It's extremely expensive, of course, and takes an awful long time to write anything. – David Thornley Sep 22 '10 at 19:34

That any code written in an OOP (C#, C++, Java) language by anyone is automatically Object Oriented and "Reusable".

It wasn't just once where I was asked to reuse a thousand line code block or a class in an architecture that did not have any patterns except inheritance (which doesn't even count). Apparently, copy pasting also counts as good code-reuse for anyone who doesn't know the difference between an OO-language and OOP itself.

A favorite TDWTF that's happens every so often: Code-Refuse


That web apps can be up "7x24."

Ask any business person what downtime is allowed and they always insist on 100% uptime. Nevermind that 1 minute downtime per week is still 99.99% and is nearly unachievable for an organization smaller than a major utility.

"We need 5 nines!!!", you don't. People know how to hit 'refresh'. And if you're worried about lost sales...well, if your profit margin is 0.001%, rethink your business plan. – Alex Feinman Oct 26 '10 at 12:58
@Alex Feinman you'd be amazed how many people don't know how to hit refresh. – Glen Solsberry Feb 3 '11 at 21:19

That there is a single "best" tool/solution/answer to any problem/question


All programs written in C/C++ will execute faster than Java/C# equivalent programs.


The biggest myth is that it's easy.


That any M.Sc. with one programming course is enough to be hired as a software developer.

I've got a colleague with a degree in psychology. That seems to have been good enough, he's a very capable software developer. And I don't have a degree at all. – configurator Sep 19 '10 at 2:59
I think you are missing the point. I guess your colleague was hired because he knew how to program, not for his degree in psychology. A M.Sc. with one programming course that has been programming for ten years is not a problem either. When this programming course is the -only- programming they have done, then it is not enough. And math skills do not automatically make you produce good, fast, stable, maintainable code. Usually some other programmer has to fix the mess. – FeatureCreep Sep 19 '10 at 5:12
I have a degree in philosophy with 1 programming course. I taught myself the rest that I needed for the job and work as a software developer and I keep up with people who have CS degrees and have 10 years of experience. I'm no wiz and would probably be better if i had a CS degree, but I have been able to get by through practice and study. (of course, philosophy did prepare me with much more formal logic than most and that definitely contributed). – Morgan Herlocker Sep 29 '10 at 0:00

That because you are a programmer, you know how to fix the copier.

But I do know how to fix the copier! – configurator Sep 19 '10 at 3:02
Programmers are by nature problem-solving beings who can take in large amounts of information and reason about it. That makes them probably better at average at fixing things. It doesn't help my house plants, though. I now mostly ignore them, let my wife take care of them, and don't think too hard at them, just in case. – David Thornley Sep 22 '10 at 19:36
To me every copier looks like a nail and I'm the hammer. – Diego Deberdt Jun 24 '11 at 20:18

Programmers who became managers saying:

"Three weeks?! I've coded in the past, how hard can it be?"


Computers and software improve working process by itself.


Which wrong ideas are widespread for long time

There is a very widespread belief among programmers about how to find performance problems. It is that in order to find them, you have to measure them.

The simplest counter-example is an (undesired) infinite loop. It takes 100% of time, doing things that are completely unnecessary.

How do you find the problem? You get it under a debugger and pause, halt, or interrupt it. Then you look at the stack, because you know the loop is somewhere on it. You've caught it in the act. Did you measure it? or just find it?

Suppose it's not an infinite loop, it just takes longer than you think necessary. Suppose the unnecessary work is less than 100%, like 90%, 50%, or 20%. It's the same idea. If you pause it, that percent is the chance that you will catch it in the act. (You don't have to know what the percent is to catch it.)

Just to be sure, you can pause it several times. As soon as you see it doing something, on as few as two samples, that you can replace with something faster, you can fix it for a nice speedup. Not only that, you've just made any other problems easier to find, because the time is shorter and they take a bigger percent. This can "snowball" until the code is very close to optimal.

Of course, if you want to measure the problem, just take more samples, but that's not a prerequisite to finding it.

People tell me, wishfully, that this is what sampling profilers do but do it better. Many would rather debate the issue than see for themselves.

Nice subject for an answer. I'm feeling pedantic: I say you are still measuring, it's just a rough measurement. – MarkJ Nov 2 '10 at 23:06
@MarkJ: Well, OK, if you insist. I'm just trying to knock folks out of their rut where they believe rather than thinking. Another think I like to say is it doesn't matter where a program "spends its time", but why. – Mike Dunlavey Nov 3 '10 at 22:15
"this is what sampling profilers do but do it better" is 100% correct. Why don't you just run a profiler and optimize the slowest subroutine, then repeat? It's no more effort once you've installed the profiler. – Blorgbeard Jan 12 '11 at 2:12
Also, an infinite loop is not a "performance problem", it's a straight-up bug. – Blorgbeard Jan 12 '11 at 2:13
@Blorgbeard: 1) You could say there is a world of difference between something that takes 10^N times longer than it should, and something that never ends. In my world, they both take too long, and can be found by the same means. 2) The idea that performance problems consist of slow subroutines is not correct, in my experience. This could be a long discussion, but look here. – Mike Dunlavey Jan 12 '11 at 2:36

That being a manager is better then being a coder. Being a manager is BORING. Anybody who went into pure management has never loved programming to begin with.

Haha, so right +1 my friend! – Diego Deberdt Jun 24 '11 at 20:23

That a manager knows jack-squat about the code that his/her developers are writing.

This may be a myth in your office, it's reality in mine. – AShelly Sep 11 '10 at 19:44
+1 for reality. – Joshua Smith Apr 7 '11 at 15:57
Depends on what you mean by "manager". The project lead usually knows the code pretty well. Just one level higher and all knowledge about the details of the source code go out the door. – Diego Deberdt Jun 24 '11 at 20:22

Among programmers: That Delphi is dead, dying or on life support.

+1 When you post a good thing, you're rewarded. – bigown Oct 1 '10 at 19:50
That's very sweet of you ;-) – Peter Turner Oct 1 '10 at 19:51
Do you guys use Delphi? – Peter Turner Oct 1 '10 at 19:55
Is good old Delphi still breathing? Now nice.... – Bjarke Freund-Hansen Nov 29 '10 at 19:18
More wishful thinking than myth I'd say. I have worked a little on some legacy pieces of Delphi and I can't say that I wish for Delphi more than a quick death. Double declaration, brrr, implicit 'begin's, ugh. – aaaaaaaaaaaa Dec 12 '10 at 15:27

There is a language called C/C++

Or that the languages are so close that skills are interchangeable.

+1 but at the same time some seem to think that any use of C/C++ as a phrase is wrong. how are you meant to refer to their common subset? – jk. Jan 12 '11 at 9:56
@jk01: Yes syntactically they have a common subset. But knowing this is not enough. The style used by both languages is now so divergent that they don't translate. – Loki Astari Jan 12 '11 at 17:28

That writing software is actually about writing code.

+1 I would phrase it a little bit differently and say that there's a huge difference between developing (releasable) software and writing code. Some people might be good or even great at programming, but have little discipline to deliver releasable and maintanable code. It's when there's neither unit tests nor documentation nor an acceptable test script that you know something is wrong. – Anne Schuessler Jan 17 '11 at 6:50

Many people tend to think that JavaScript is similar to C++ and don't understand that it actually uses prototype inheritance.

It uses more than just prototype inheritance. – orokusaki Sep 9 '10 at 18:15
@orokusaki - That's true. It also uses the unpasteurized blood of newborn babies. ;) – rtperson Sep 10 '10 at 18:14
'' == '0' //false 0 == '' // true parseInt('010') // returns 8! (in FF3) – Jader Dias Jul 25 '11 at 2:39

That programming languages change all the time.

This might have been a long time ago in the past...
But nowadays the changes are mostly extra features which try not to break existing code.

the DISTANT past... like pre-1970... – Spudd86 Sep 9 '10 at 18:00
this is a myth only for static-type language programmers (i.e. Java, C, C++, etc) which are thousands of years old and require a doctorates degree to be taken seriously at. If you use Ruby or Python, you know that things to change quickly, to make programming easier so that software development can transcend obfuscation. – orokusaki Sep 9 '10 at 18:18
@orokusaki: True, but with Python et al. you'll often find that "new" versions are supported alongside "old" ones (e.g. Python 2 and 3, PHP 4 and 5) and often the underlying code will be forward-compatible (e.g. all of Python 2.x to 2.7). Many dynamic languages make sure only to break compatibility in major releases and are quite careful not to do so too frequently. – Alan Plum Sep 19 '10 at 17:45

Why do programmers insist on writing bugs? (Coming from a marketing+tester person that can never get a bug report done right).


Using English (or your native language) to describe a problem:

is more useful than providing a compilable example of the code the illustrates the problem.

  • That OO means quality.
  • That the OO approach is the right approach.
  • That the job of a programmer is to write code.
  • That language matters.

The whole hollywood mentality (for lack of a better name) that whenever a programmer in a movie/tv series speaks up he needs to articulate every technology he needs (I need a PHP front-end and a MySQL back-end!!!11)... And then some more that doesn't make any sense at all of course.

If I would talk like this I'd probably get kicked in the nuts.


Good Programmer if you spend more time on programming.Practice makes a person perfect but doesnt make him good.


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