101
votes

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.

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

61 Answers 61

19
votes

That learning the syntax is the hard part.

15
votes

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.)

11
  • 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
    Commented Sep 9, 2010 at 22:01
  • I didn't work with that manager long enough, but I don't doubt it would have come to that! Commented Sep 9, 2010 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. Commented Sep 10, 2010 at 14:24
  • You might as well classify them as top, tippy-top, and critical. Commented Sep 10, 2010 at 15:43
  • 13
    "If everything is important, then nothing is important" Commented Oct 8, 2010 at 2:39
15
votes

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.

5
  • 14
    I love this quote: "Java is to JavaScript as Car is to Carpet." I've read this attributed to Chris Heilmann (wait-till-i.com/2005/11/08/…) Commented Sep 10, 2010 at 6:53
  • 2
    Java doesn't contain JavaScript, but hopefully your car has carpets. Commented Sep 19, 2010 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. Commented Dec 24, 2010 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."
    – ocodo
    Commented Jan 17, 2011 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. Commented May 3, 2011 at 19:59
13
votes

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. :-(

1
  • And who cares if your code looks like Spaghetti?
    – Zaz
    Commented Sep 12, 2010 at 16:34
12
votes

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."

11
  • 9
    +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
    Commented Sep 9, 2010 at 14:50
  • 25
    You can't code quickly if you're a hunt-and-peck typist. Commented Sep 9, 2010 at 15:42
  • 14
    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
    Commented Sep 9, 2010 at 15:47
  • 7
    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. Commented Sep 12, 2010 at 3:24
  • 3
    Being able to type reasonably accurately without thinking about it is good. Speed doesn't matter nearly as much. Commented Nov 29, 2010 at 21:30
12
votes

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
19
  • 23
    It's a stereotype for a reason... Commented Sep 9, 2010 at 18:14
  • 7
    @Kelly - every bit of this is true.
    – orokusaki
    Commented Sep 9, 2010 at 18:15
  • 12
    Not true. I hate sushi. Commented Sep 9, 2010 at 20:37
  • 10
    A score of less than 3 means you're not a real programmer. Commented Sep 10, 2010 at 0:59
  • 6
    Well, he (or she) lives alone by lack of choice :-D
    – Maniero
    Commented Sep 11, 2010 at 8:10
10
votes

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

8
  • 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
    Commented Sep 9, 2010 at 16:27
  • @JohnFx - that is if you don't mind giving IT managers heart problems.
    – orokusaki
    Commented Sep 9, 2010 at 18:08
  • 7
    I'm pretty sure I can write a bug-free hello world. Commented Sep 10, 2010 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
    – MetaGuru
    Commented Sep 10, 2010 at 3:20
  • 4
    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. Commented Sep 22, 2010 at 19:34
10
votes

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
  • 5
    both are still an abomination in a strongly typed language
    – jk.
    Commented Jan 12, 2011 at 9:47
9
votes

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

9
votes

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.

2
  • 8
    "We need 5 nines!!!" No...no, 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. Commented Oct 26, 2010 at 12:58
  • 2
    @Alex Feinman you'd be amazed how many people don't know how to hit refresh. Commented Feb 3, 2011 at 21:19
7
votes

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

7
votes

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

0
7
votes

The biggest myth is that it's easy.

6
votes

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

3
  • 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. Commented Sep 19, 2010 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. Commented Sep 19, 2010 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).
    – user3792
    Commented Sep 29, 2010 at 0:00
6
votes

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

3
  • 6
    But I do know how to fix the copier! Commented Sep 19, 2010 at 3:02
  • 3
    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. Commented Sep 22, 2010 at 19:36
  • To me every copier looks like a nail and I'm the hammer. Commented Jun 24, 2011 at 20:18
6
votes

Programmers who became managers saying:

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

4
votes

Computers and software improve working process by itself.

4
votes

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.

5
  • 4
    Nice subject for an answer. I'm feeling pedantic: I say you are still measuring, it's just a rough measurement.
    – MarkJ
    Commented Nov 2, 2010 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. Commented Nov 3, 2010 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
    Commented Jan 12, 2011 at 2:12
  • Also, an infinite loop is not a "performance problem", it's a straight-up bug.
    – Blorgbeard
    Commented Jan 12, 2011 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. Commented Jan 12, 2011 at 2:36
4
votes

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.

1
  • Haha, so right +1 my friend! Commented Jun 24, 2011 at 20:23
3
votes

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

2
  • 8
    This may be a myth in your office, it's reality in mine.
    – AShelly
    Commented Sep 11, 2010 at 19:44
  • 1
    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. Commented Jun 24, 2011 at 20:22
3
votes

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

4
  • That's very sweet of you ;-) Commented Oct 1, 2010 at 19:51
  • 2
    Do you guys use Delphi? Commented Oct 1, 2010 at 19:55
  • Is good old Delphi still breathing? Now nice.... Commented Nov 29, 2010 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. Commented Dec 12, 2010 at 15:27
3
votes

There is a language called C/C++

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

2
  • 2
    +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.
    Commented Jan 12, 2011 at 9:56
  • 2
    @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. Commented Jan 12, 2011 at 17:28
2
votes

That writing software is actually about writing code.

1
  • +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. Commented Jan 17, 2011 at 6:50
1
vote

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

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

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.

3
  • the DISTANT past... like pre-1970...
    – Spudd86
    Commented Sep 9, 2010 at 18:00
  • 3
    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
    Commented Sep 9, 2010 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
    Commented Sep 19, 2010 at 17:45
0
votes

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

0
votes

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.

0
votes
  • 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.
0
votes

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.

-1
votes

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.