101

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.

Whatever
  • 101
  • 1
  • 4
Maniero
  • 10,826
  • 14
  • 80
  • 133

61 Answers61

272

That because you're a programmer, you know how to fix [person]'s virus ridden machine.

Wizard79
  • 7,327
  • 2
  • 41
  • 76
Neth
  • 421
  • 1
  • 3
  • 7
266

A common HR thing that drives me nuts when I'm job hunting: the implicit assumption that all coding skills are language-specific, that there is no software engineering expertise that transcends command sets. That ten years experience in Java and another five in Perl mean you'd be completely useless on a project that uses, say, C#.

"Yes, there's a learning curve. But I've made harder transitions than this. I'll make you a deal, pay me 80% for the first month and at the end of that time if I'm not ... oh, wait, we're not actually having this conversation, because your HR monkey simply deleted my application."

BlairHippo
  • 8,663
  • 5
  • 41
  • 46
  • 91
    +INF for HR monkey. – Rusty Sep 09 '10 at 19:12
  • 67
    I have had an HR guy turn me down for a role because I knew how C#, but he was looking for someone who could code in dotNet. – Dan Sep 14 '10 at 07:51
  • 11
    @burnt_hand: Yeah, I know dotNet. I also know Excel and Internet Explorer. I can haz contract now? – Alan Plum Sep 19 '10 at 17:00
  • While I agree that there are huge overlaps with syntax, structure, SDLC, etc, between Java and C#, if they give you any reasonably tricky C# test in your interview, how will you fare? – JBRWilkinson Oct 16 '10 at 17:45
  • Excellent point, and encountered by many here I suppose. +1. – Jas Oct 24 '10 at 15:51
  • +1 Joel says it's the [worst possible way to hire](http://www.joelonsoftware.com/articles/SortingResumes.html) – MarkJ Nov 02 '10 at 22:32
  • A lot of places just aren't hiring someone for ten or twenty years, though. They're hiring someone for *this project today*. That's why they're so skill-specific. And in a sense, they're right; if all they want is someone to do *this project today*, they really do need someone who won't have to make all the first-year mistakes in a new language. – Kyralessa Dec 18 '10 at 22:28
  • 2
    @Kyralessa - I think that I now know enough about the underlying theory of computing and functions of computers to not make basic errors in any programming language. I can read the documentation. However, something that a language specific hire with limited engineering skills /will/ do is make basic errors in the structure, design, correctness, scalability, reliability and maintainability of the program that will potentially cost large amounts to fix. If you don't lose all your customers due to the low quality of the software in the meantime (assuming your project actually gets anywhere). – flamingpenguin Dec 24 '10 at 09:57
  • I'm not saying their overall approach is right. If you hire for *today* and not for *ten or twenty years*, you may get people who may have the technical skills today, but you'll also get high turnover and a complete lack of institutional knowledge (that is, knowledge about your workplace). – Kyralessa Dec 24 '10 at 21:34
  • @Kyralessa I changed technologies and programming languages from job to job and sometimes within the same company from project to project. If it's not something completely different and you know at least one or two languages fairly well it is totally possible in less than half a year - probably less than three months. There are transitions that may be harder, but even if you just stay in a job for two years a change in language can be handled by a well-versed programmer. – Anne Schuessler Jan 17 '11 at 18:33
260

If you're not typing, you're not working.

I believe zombie blank stares and coffee walks are essential to programmers organising things in their heads.

Dan
  • 487
  • 1
  • 4
  • 6
  • 1
    @burnt_hand - way under-voted. This is one of the things that drives me nuts, when working for somebody else. Non-programmers tend to think that the most valuable time is spent typing, rather than thinking. – orokusaki Sep 09 '10 at 18:05
  • 9
    Page up, page down...page up, page down... – adolf garlic Sep 09 '10 at 18:12
  • 139
    I'm not paid to type, I'm paid to think. I provide typing as a bonus. – Kevin Laity Sep 10 '10 at 00:08
  • 11
    ["code's compiling"](http://xkcd.com/303/) – Tobias Kienzler Sep 10 '10 at 08:38
  • 11
    This is why I don't think very highly of online freelancing markets that offer recording "working time" with a screengrabber and a webcam. WTF? If you think my quote is good, why do you care what it is _exactly_ that I do in the time I'm charging for? – Alan Plum Sep 19 '10 at 16:59
  • 1
    @Alan - didn't even know these existed. That would be truly awful – Dan Sep 23 '10 at 07:08
  • 10
    "If I had more time to code, I'd write fewer lines." - take off on Abe Lincoln quote. – JeffO Sep 27 '10 at 19:53
  • 1
    It's especially bad when working for sales-type people in industries like construction or retail. – DarenW Oct 08 '10 at 00:22
  • 2
    If you pay me to type you're wasting your money. You can hire a typist that's three times faster at typing for half the cost. – Christopher Mahan Jan 11 '11 at 23:40
  • @Tobias .. I used to say that I had big batch of automated tests running and let the console window running full screen. It worked fine until they banned the practice of unit testing altogether... sight... I need a new job. – Newtopian Mar 12 '11 at 11:09
158

that you can speed up a late project, simply by throwing more people at it.

Robert Harvey
  • 198,589
  • 55
  • 464
  • 673
chrmue
  • 681
  • 3
  • 7
  • 8
  • 28
    Ah, from The Mythical Man Month. http://en.wikipedia.org/wiki/The_Mythical_Man-Month – spong Sep 09 '10 at 17:49
  • 2
    Actually, uh, you can. -1 (yeah, behold a myth carrier!) – P Shved Sep 09 '10 at 18:46
  • 63
    We use a colorful saying "You can't put 9 women into a room and make a baby in a month". – Walter Sep 09 '10 at 23:09
  • 10
    Last week we added 4 people with no project experience to "help" meet an unrealistic schedule. This week's report from the project lead to upper management lists: "Schedule slippage Cause: Reduced efficiency due to learning curve of new team members" and "Recovery Plan: Continuing to add more people where opportunity exists." Unbelieveable. – AShelly Sep 10 '10 at 16:23
  • It is STILL true... Sigh. –  Sep 11 '10 at 07:34
  • I wish all PMs knew this on a mandatory basis. – Jonn Sep 14 '10 at 04:40
  • This is not a myth, since no one actually believes it. It is now a part of common sense that you can't do this. – Vetle Oct 08 '10 at 20:02
  • 1
    @vetler, you'd be surprised. This still happens at a lot of software companies. – GSto Oct 13 '10 at 20:57
  • 7
    @Walter, but you can have 9 babies in 9 months and a little-league baseball team in 7 years. – Huperniketes Oct 19 '10 at 09:27
  • 2
    I think I agree with Pavel here. This quote was way over-abused. There is some truth to it but you're quoting out of context. -1 – n1ckp Oct 24 '10 at 15:45
  • 2
    If you're nearly done, then it's true. If you're only just started, then it's not true. Steve McConnell [wrote some good stuff about this](http://www.stevemcconnell.com/ieeesoftware/eic08.htm) – MarkJ Nov 02 '10 at 22:34
132

That writing software is easy.

How else do you explain all these projects that run over time and over budget and people (politicians, the media etc.) are still surprised, and customers complain when you tell them that their "small website" (or whatever) will actually take 6 months to develop and cost several thousand dollars (pounds, Euros, [insert currency of choice])

With fuzzy and ever changing requirements I sometimes think that it's amazing that any software ever gets finished!

I know it's a bit more complicated than that ;)

ChrisF
  • 38,878
  • 11
  • 125
  • 168
  • 11
    And this is when they attempt to take the development to cheaper off-shore alternatives. Only to find out much later that it turned out to be even more expensive. And less of what they really needed, because of the physical separation and communication challenges between the development team and customer. – 7wp Sep 09 '10 at 18:19
  • 1
    This isn't just a problem amongst managers, but also programmers themselves. The real problem tends to be that time that isn't spent actively writing code is often missed (possibly due to the widespread LOC = productivity quantification myth). – Alan Plum Sep 19 '10 at 17:02
  • 3
    It's not that the requirements changed, it's just not what they thought they wanted. – JeffO Sep 27 '10 at 19:55
  • 1
    I had someone dismiss programming as "just a bunch of 'if' statements". OK, maybe it is... in that case, poetry is "just a bunch of words"... movie production is "just a bunch of scenes", etc. – JoelFan Dec 13 '10 at 01:45
  • 2
    I've worked for the type of manager who thought the programming bit was the easy part of the job. And no, he didn't have any programming experience himself. – Captain Sensible Jun 24 '11 at 20:01
114

The complexity of the app is directly proportional to the complexity of the UI. By this reasoning, you should be able to build Google or Twitter over a weekend.

JohnFx
  • 19,052
  • 8
  • 65
  • 112
  • 2
    this is true, I could build Twitter and Google over a single weekend. It isn't their software that is complex; for Google, it is their search algorithm (which is more comparable to a code library, or database driver), and Twitter (up until the last 1.5 years) was extraordinarily simple, with only scalability and database issues being complex. Now that it is more complex (requiring more employees), it also has a much more complex UI, and many more UIs. – orokusaki Sep 09 '10 at 18:11
  • 3
    I think I read it on Joel Spolsky's blog but the article mentioned only showing as GUI progress in relation to the back-end progress. That way you can give a realistic estimate of progress to the pointy haired guys who are too dumb to understand that most programs consist of a lot more than eye candy. – Evan Plaice Sep 11 '10 at 08:45
  • 3
    1+ There was a time when I demo'd a SharePoint related project (a multi-lingual addon) to my former boss, having spent hours working on the complex backend code. The end result was not much was done on the UI, which led my boss to believe that not much has been done on the project. That pissed me off. He wasn't the one sitting at the keyboard for hours trying to get around SharePoint's oddities, as well as the text replacement logic. – Jason Evans Sep 26 '10 at 17:29
  • 1
    Don't you hate when some huge, almost-impossible, request is phrased as "can you add a button to do..." – JoelFan Dec 13 '10 at 01:42
  • I wonder what I have been doing the last few years. All those projects I worked full-time on should have been finished in no time, because they did not have any UI at all. :-) – Bart van Ingen Schenau Jan 17 '11 at 11:25
95

All programmers are good at math. :-)

David Cary
  • 1,402
  • 13
  • 20
  • **Commenters:** comments are meant for seeking clarification, not for extended discussion. If you have a solution, leave an answer. If your solution is already posted, please upvote it. If you'd like to discuss this question with others, please use [chat](http://chat.stackexchange.com/rooms/21/programmers). See [the FAQ](http://programmers.stackexchange.com/faq) for more information. –  Apr 29 '11 at 18:48
  • I think the capabilities in math are somehow related with programming skills. – Diego Aug 03 '11 at 14:27
  • @Diego: Although such doesn't necessarily mean all programmers are good at math nonetheless. – Saturn Jan 24 '12 at 16:21
95

Any teenage kid who hacks with computers is equivalent (or superior) in skill to a veteran working programmer.

My 14 year old nephew is good with computers and I'm paying him $10/hr to mow my lawn. Why should I pay you six figures to write the next FaceBook?

JohnFx
  • 19,052
  • 8
  • 65
  • 112
  • 5
    They probably are in their own environment i.e. working on their own to their own standards. Put them in a team where they have to communicate and that's where they suffer. – adolf garlic Sep 09 '10 at 18:11
  • 2
    @JohnFx - very true indeed. I have a friend who's son made an iPhone app at 13 using some tool kit, and it's absolutely terrible, hardly works, and is one screen with a list of pictures. He thinks his son is a prodigy. – orokusaki Sep 09 '10 at 18:14
  • 36
    Counter question could be: "What would you pay him to build your house?" –  Sep 11 '10 at 07:38
  • 7
    A kid with no qualifications but writes neat code can beat Mr. Spaghetti any day. – Zaz Sep 12 '10 at 15:31
  • 13
    I blame hollywood for that – MAK Sep 12 '10 at 22:26
  • 6
    When I started out, I expected that what I'd been teaching myself and picked up at uni would be only the beginning, and I'd be working with more experienced people that were better programmers and more knowledgeable developers, and I'd learn lots from them. Experience taught me otherwise. It's absolutely important, but **without skill and passion, experience is just wasted time.** – Peter Boughton Sep 13 '10 at 12:10
  • @MAK Wonderful insight. – Hila Oct 04 '10 at 12:43
69

That real-time means fast.

Stating "The packets need to be processed in real-time." is worthless and the evil twin...answering "How fast does X need to happen ?" with "Real-time" is possibly less than worthless...bordering on stupid rather than ignorant.

Real-time means that, simply put, that function Y will always take X amount of time and that any deviation indicates a serious error. The duration of X does not define "real-time" it could be six microseconds or six days. That you can determine function Y will take X time defines "real-time". Real-time systems are deterministic by this definition.

So knock it off..

Rusty
  • 1,026
  • 1
  • 10
  • 15
  • real-time=near-time – brian chandley Sep 09 '10 at 13:40
  • 4
    I always thought real-time meant whatever was happening was happening as you require it, not a reference to time taken. – Dan Sep 09 '10 at 16:18
  • A good example of a real-time program: iTunes. When you're playing music, the length of time it takes to play a song is deterministic. – Richard Gadsden Sep 09 '10 at 16:50
  • @burnt_hand The trick is you must specify "as you require it" in units a computer can understand...if you don't then "whatever was happening as you require it" is at whatever rate it happens to be. And that would happen to be unknown. In the context of computers and software "real-time" needs a value. – Rusty Sep 09 '10 at 17:45
  • Well on real systems fully deterministic execution times are nearly impossible (if it has a CPU cache you're pretty much hosed for totally deterministic, and desktop class CPU's worst case for stuff that's IN MEMORY is an order of magnitude longer than if it's in cache, since we're talking real time I'll assume swap isn't an issue and not even bring up the worst case for that...) – Spudd86 Sep 09 '10 at 17:53
  • @spudd86 Uncertainty is required by physics so it will exist and must be accounted for. It is in "hard" real-time systems designed for reliability..like fly-by-wire..where failure impacts life safety. Everything is accounted for cache, memory,etc. in these systems. But this has little to do with my post. My post only concerns the misconception that saying something is "real-time" somehow means that it is fast...it does not. It needs to be quantified. Real-time on W7? Sure. If 4ms of jitter, random >50ms skips meet your spec..then your real-time. Before you say it: real-time doesn't mean safe. – Rusty Sep 09 '10 at 19:02
  • 14
    This is probably just one of those cases where a badly named concept contributes to confusion. – JohnFx Sep 10 '10 at 14:30
  • 2
    @JohnFx Well put. Concepts need Context. – Rusty Sep 10 '10 at 22:02
  • real time is only necessary in systems that require extremely low latency feedback. Ex, motion controls for hydraulic systems and/or mechanical systems, industrial automation, etc. Most of which will be gained using custom hardware, PLC, or industrial specific hardware. The applications of real-time in a PC computing environment are extremely few and far between (which is probably why nobody really understands what it means) and usually require a platform with multiple cores/CPUs to support simultaneous multiprocessing. – Evan Plaice Sep 11 '10 at 08:43
  • 2
    @Richard: Indeed, iTunes always takes a few minutes before playing anything. Oh, that's not what you meant? – configurator Sep 19 '10 at 02:32
  • I was raised thinking that soft real-time meant fast enough by guarantee, and hard real-time meant deterministic time slices. By this definition, the first app I worked on, a reporting system for railroads based on punch cards, was soft real-time because all processing could be done before the train got anywhere else. That doesn't mean it was fast by modern standards. – David Thornley Sep 22 '10 at 17:30
69

Why don't you guys simply write it right the first time, rather than spending so much time typing in buggy code and then later reading the code trying to find the bugs?

:-) :-) :-) :-)

David Cary
  • 1,402
  • 13
  • 20
  • 34
    Frankly, that's a good question. The easiest time to make code good is when it is being written for the first time. – DJClayworth Sep 09 '10 at 14:55
  • 10
    We have a setting in the app config: – Dan Sep 23 '10 at 07:09
  • 1
    @DJClayworth - that doesn't always work. In some cases, the problem is so large, ill-defined or just plain hard that getting even close to "right" the first time is too much to expect. In such a case, it is better to write a "first cut" that is not totally wrong, than it is to spend days / weeks / months endlessly designing and redesigning in an attempt to get it right first time. – Stephen C Sep 30 '10 at 05:24
  • This could be the layman's version of "Why aren't you guys doing TDD?" Which, to be fair, is a darn good question, if over-simple for real world development. – Dan Ray Sep 30 '10 at 12:44
  • 1
    @Stephen C: yes, but there is a difference in getting it mostly right (instead of perfectly right) vs doing mostly anything left and right to just make it work. I know this is not what you said but I still think it need to be said. – n1ckp Oct 24 '10 at 15:49
  • @burnt_hand very enterprisey. I prefer to localise all my bugs into a single `BuggyCode` class using AOP, and instantiate it in my Spring IoC config. –  Oct 24 '10 at 18:15
  • @Stephen C I agree that writing perfect code the first time in every case is impossible. However most code has bugs in that COULD have been written right the first time. Thinking about why that didn't happen is extremely helpful to improving your software process. – DJClayworth Nov 03 '10 at 19:32
  • @Stephen C: Or, you could put some more work into figuring out, and DOCUMENTING, the Requirements for the system you're about to start hacking up. – John R. Strohm Dec 24 '10 at 11:40
  • All right @John R Strohm - how would documenting the requirement that (say) the compiler you are writing needs to implement type inference over generic types help you get the implementation right first time? Some systems are TOO DIFFICULT to figure out before you start. Well, at least for real human beings to figure out. – Stephen C Dec 26 '10 at 06:55
64

If you havent gone to university, you are not suitable for the job

  • 27
    Also: a programmer with a degree is better than a programmer without and should be paid accordingly. The same probably goes with ageism and sexism. This kind of nonsense infuriates me -- if you don't know how to write good code, I couldn't care less about where you went and what you did. This may be another case of programmer/nerd culture (skill == authority) clashing with corporate culture (rank == authority). – Alan Plum Sep 19 '10 at 17:37
  • 1
    And yet the people teaching at University also seem to think that they can generalize the behavior of programmers and projects by observing how students operate when teamed up. Communications of the ACM is good for 4-6 such articles a year. – MIA Sep 30 '10 at 03:20
  • Hmm.... not entirely sure I think this is a myth. It's not because you learn too much about "real programming" in a university -- it's more about the kind of person who goes to a university versus one who does not. The degree doesn't tell you they learned too much, but it does increase the chances of the person you picked giving a shit. Of course that matters less the more experience the individual you are working with has. – Billy ONeal Sep 30 '10 at 04:29
  • 1
    @Billy How about around here, where a college diploma means jack, but a university diploma will grant you everything? Both go to school, both are arguably better than the other, but there's a sociological difference – Tarka Oct 01 '10 at 17:01
  • @Slokun: What's the difference between "college" and "university" in the above context? As far as I knew they were the same... – Billy ONeal Oct 01 '10 at 17:19
  • 4
    @Billy: in Canada, university awards you a degree and colleges give you diplomas. Colleges are more like "schools where you learn practical stuff". Think community college in the US vs normal college/university. Here they typically have two-year specialized applied programs. You can't get a bachelor's (masters, etc.) from a college. Basically, you'd go to college to study how to write software and to university to study computer science. University degrees are given much stronger preference in hiring. – Adam Lear Oct 01 '10 at 18:33
  • @Anna Some are three years, like the one I took (and the extra year was where we learned most of the useful, high-level, information). And actually, some colleges can give out bachelor degrees--or can in Ontario, I can't speak for other provinces--but it's very specific, and quite regulated. – Tarka Oct 01 '10 at 18:59
  • @Anna + @Solkun: Ah -- I see. I can't comment on the difference between those two, but I do think when looking at new programmers there's significant value in seeing that they at least took some effort to better themselves, whether that's college/university/whatever. It's not so much that I think they'd be inferior programmers -- more so that going to any school is a sign of giving a f*** about your career. If you don't go to school, you know that is not going to bode well for you in the job market. A "I don't care" attitude toward that is a red flag no matter what profession you're in. – Billy ONeal Oct 01 '10 at 23:58
  • I purposely didnt say post secondary because some private schools are awful. Theres a 18month program that gives you nothing and charge 12k to attend (classes are 5 days a week). I purposely didnt say college because they are typically 2-3years (here) and the people hiring think you MUST have university and college is to start getting into programming. But my answer really was if you dont go to university (as oppose to learn it at home daily for 3+years with proven skill and profolio) you are not suitable for the job. I seen good programmers turned out. It was sad. –  Oct 02 '10 at 03:33
  • 1
    I agree that this is a myth. I know some very clever people who never went to university. But I agree with Joel that [a good way to sort resumes](http://www.joelonsoftware.com/articles/SortingResumes.html) is to look for *evidence that someone has gone through some highly selective process in the past*. Could be getting into a selective university, a selective company, difficult branch of the military. It doesn't *prove* anything one way or another, but it's a good indicator when you have too many resumes and you need to select some for interview/phone screen. – MarkJ Nov 02 '10 at 22:44
  • I have a degree in chemistry. Practically everything I know about code I learned on the job. – TRiG Nov 28 '10 at 00:33
  • 4
    Universities teach at least one important thing: the _mindset_. This is very important, but those who don't know that... well, don't know that. –  Dec 02 '10 at 12:00
  • @Billy In my opinion a university degree doesn't really tell you anything about the motivation of a person, especially not whether they care about their career or not. It might be different in Germany, but if someone without a university degree has been able to teach themselves how to write code I would probably be more impressed than if they went to university. I've known people with a university degree in computer science who didn't have a clue and those who didn't have a degree at all and were extremely good at it. In my experience a degree is no indicator at all. – Anne Schuessler Jan 17 '11 at 17:57
  • The person who posted this answer is having difficulty getting employed. I'm not sure how well I'd trust his advice. – Andrew Grimm Mar 28 '11 at 11:22
  • Or the opposite: if you _have_ gone to university, then you are not qualified for the job because you're not a _real_ programmer somehow. Real programmers dropped out of uni and learned everything they know from coding in their basement, didn't ya know? – thomasrutter Apr 18 '11 at 06:01
  • @thomasrutter: I never heard that myth ;) –  Apr 18 '11 at 16:37
  • @Alan, I hope, that doesn't make you think that a programmer can't learn anything in the university. They (we) can. A lot of stuff. A lot of stuff I see people have troubles formulate and comprehend, let alone to resolve. And *that's* why the programmers with a degree (we) should be paid better. – P Shved Jun 11 '11 at 19:53
  • 1
    @Pavel: Thats not WHY you have a degree. People who can do that dont need to go to university to gain that ability. In fact someone made me laugh by telling me a highschool kid (who were were talking to) can easily embarrass a few guys he went to university with (who has a degree). –  Jun 11 '11 at 22:26
  • @Pavel, Oh, I absolutely agree that given two programmers with the same CV, the one with a degree is probably the better one. But the actual benefit for a university education is only apparent in a handful of situations. _Most_ of it can be learned without spending three years writing research papers. The obvious exceptions to this are things like insurance software or physical simulations, although those also require some decent domain knowledge in addition. – Alan Plum Jun 17 '11 at 19:10
  • @Alan: Why insurance software? i am sure your not talking about the encryption portion (usually thats done by a library written by a specialist). Why might it be apparent when writing insurance software? –  Jun 17 '11 at 23:33
  • 1
    @acidzombie24 That was really just a random example for the kind of job that would require some solid maths/compsci knowledge. A more realistic one would be working as a performance specialist at Google, but you get the idea. However, the vast majority of programming jobs are more about knowing the right frameworks and libraries and being able to write clean glue code. Heck, the majority of such jobs don't even require any serious optimization. As for your jab: I've met quite a few know-nothings with degrees, so I can back that one up. – Alan Plum Jun 21 '11 at 01:32
61

That premature optimization means you shouldn't optimize at all. I've seen more horrendously bad databases because no one wanted to consider performance (critical to any database system) in design as that was premature optimization than any other database design issue . Rubbish, there are known performance killers, stop using them as your first choice.

Another myth, it's too hard to refactor the database. No but you have to consider how to do refactoring in the design phase to do it effectively. And BTW, the longer you wait to fix that annoying design-based performance issue, the harder it's going to be to fix.

Another bad myth, database design should reflect OOP principles. No, databases are designed to work with sets not OOP principles. Some OOP things will cause horrible performance problems and others are just pain silly in database terms.

Finally, you should enforce data integrity in the application. Databases are going to last past the application and would lose the rules when the application is replaced, mulitple applications are going to access them and there will often be the need to run direct queries to fix things that do not go through the application. I have never seen a database that refuses to enforce data integrity in the datbase that has good data.

HLGEM
  • 28,709
  • 4
  • 67
  • 116
53

That there is some mythical source of absolute best practices.

No deviation can ever be justified.

No document claiming to define something as a best-practice can ever be questioned.

Bill
  • 8,330
  • 24
  • 52
51

The fact that marketing seems to think that adding a ton of small features is less work than adding a single, but rather heavy, feature. Which probably is a more specific case of the misconception that "task-switching has no overhead".

Giel
  • 259
  • 2
  • 4
  • 12
    And the even more fun thing of marketing not having any idea which features are easy and which are damned near impossible. – derobert Sep 10 '10 at 17:41
  • 4
    @derobert Exactly, I have often had the experience that some of the more considerate marketing folks are in fact afraid to even ask about some simple/easy feature which they thought was very difficult to implement. Though I experience the opposite much more oftenly: here's a batch of X "easy" features we've already sold to the customer, please get it done by yesterday.... – Giel Sep 11 '10 at 11:29
50

If we use something other than Java, C# and C++ in our project, we won't find any programmers to support it.

Rook
  • 101
  • 5
P Shved
  • 7,427
  • 35
  • 50
  • I never had heard about that, but it's valid. Of course if you use a an obscure language it would happen. – Maniero Sep 09 '10 at 12:06
  • 5
    @bigown, "obscure"? How obscure? Is TCL obscure? Haskell? Pascal (Delphi)? Python? I think they're not obscure. Many people think they are, and only a very narrow set of languages (C++, C# and Java) are allowed in "serious" development. – P Shved Sep 09 '10 at 14:12
  • No, I mean very obscure. It's not that case. You're right. – Maniero Sep 09 '10 at 14:19
  • 5
    @bigown: oh, you mean obscure like COBOL? :p – AnonJr Sep 10 '10 at 11:09
  • 2
    I once worked for a small company doing Objective-C code on Linux. The CEO - who wasn't an engineer but had some technical knowledge - couldn't believe that there were ObjC programmers around or that anyone else used it. In fact they never had any problems hiring good developers. –  Oct 24 '10 at 18:17
  • 4
    I've read an argument that exactly the opposite is true: for languages which are obscure (or at least commercially insignificant) but cool, fun, and interesting (which in that context meant Python and Ruby), there are more programmers than jobs. Plus, they're all people who are into cool, fun, and interesting languages, so they must be smart. So actually, working in Python means you'll find it easier to hire smart programmers than if you're working in Java. Don't know if i believe it, but it's at least as plausible as the orthodox idea! – Tom Anderson Nov 26 '10 at 20:11
50

That commenting code is unnecessary, or that "good code doesn't need comments". Sometimes you need to explain what a complex bit of code is doing. Furthermore, commenting sections of code helps you skim read much more effectively.

DisgruntledGoat
  • 497
  • 6
  • 14
  • 14
    @DisgruntledGoad - It's true though. The misunderstanding in this "myth" comes from the fact that too many programmers consider their monolithic confusing code to be "good". `if user.is_logged_in: print('Welcome')` doesn't need a comment. – orokusaki Sep 09 '10 at 18:13
  • 3
    @orokusaki Not every algorithm is that simple. – Jouke van der Maas Sep 09 '10 at 20:19
  • 25
    @orokusaki you are mistaking "good code doesn't need comments" with "simple code doesn't need comments". Good code isn't always simple. – DisgruntledGoat Sep 10 '10 at 13:48
  • 3
    @Jouke van der Mass: of course. But it does not matter how complex the algorithm, the goal is to express the algorithm simply. i.e. good code expresses complex algorithms, rules, optimisations, in a simple and unambigiously understandable way. Expressing simple things simply is comparatively easy. Expressing complex things simply is where the skill lies. – flamingpenguin Dec 24 '10 at 11:13
  • 2
    @orokuskai: good code is simple. The things it is doing may be complex but the simplicity (elegance) of the code is what makes it good in my opinion! Of course, code does lots of other things, and rubbish code can make you lots of money. But my goal is to write simple code even in complex situations. – flamingpenguin Dec 24 '10 at 11:15
  • @flamingpenguib - well said! – kirk.burleson Dec 30 '10 at 23:10
  • 2
    Comments only help you skim read if they're necessary. If they're not, they're wasted space. – Jason Baker Jan 08 '11 at 15:12
  • "sometimes you need to explain what a complex bit of code is doing" - A hint from an experienced programmer: Your time is better spent simplifying that code. – vidstige Feb 27 '12 at 14:33
50

The worst myth: If you are programming for a long time then you can be a Project Manager easily.

And that you should become a project manager if you have been programming for a long time.

Sergio Acosta
  • 9,568
  • 3
  • 25
  • 36
  • 3
    Or even worse, if you've never programmed or managed a programming project, reading a few books and will magically make software happen. Been down that road with a previous PM and don't care to repeat it as long as I live. – Evan Plaice Sep 11 '10 at 09:06
  • 4
    Even worse: Since all the great programmers on the team prefer writing code over writing reports, we should promote the mediocre programmer to Project Manager. The thought is he'll be "tecnical enough". The fact is he ends up being a disinformation filter between the team and upper managment. – AShelly Sep 11 '10 at 19:42
  • 2
    Also: if you're the best programmer, you should obviously become the project manager and from that point on stop doing any actual programming yourself! No, thank you very much, but I'll still take the raise. Note: I'm not talking about becoming a _lead_ programmer or any such thing, I'm talking about the managers who think it's a clever idea to promote everyone to their level of sufficient incompetence. – Alan Plum Sep 19 '10 at 17:22
  • 1
    Also known as Peter Principle. http://en.wikipedia.org/wiki/Peter_Principle – Spoike Nov 22 '10 at 18:24
  • well said indeed – Michael Easter Mar 24 '11 at 17:33
  • I would propose the converse, though: If you don't have any programming experience, you're not qualified to be a project manager for a programming project. – Mason Wheeler Jul 01 '11 at 20:34
42

Java is just C++ with different classes.

Gordon
  • 4,124
  • 26
  • 45
33

Java is slow.

TheLQ
  • 13,478
  • 7
  • 55
  • 87
  • 18
    But, to be fair, it did used to be... – Dan Diplo Sep 09 '10 at 11:43
  • 70
    It still is.... – Fosco Sep 09 '10 at 12:21
  • 16
    How can coffee be slow ? – Rusty Sep 09 '10 at 13:04
  • 6
    @Rusty Decaf? . – Joe Phillips Sep 09 '10 at 15:59
  • 5
    Thing is it still is sometimes, and it's memory model is inherently bloated (in several ways, GC has an overhead in memory usage, real resident set size too not just address space, and jars/dynamic compilation mean code is in memory once for every process that is running it) So yes Java can sometimes be very fast, it isn't always, and that's not counting the times that the lack of Plain Old Data types wastes both time and space. And when it's slow, it's REALLY slow. – Spudd86 Sep 09 '10 at 17:50
  • @Joe Thanks dude. I knew there had to be something...or why post about it ? – Rusty Sep 09 '10 at 19:15
  • 3
    That's just trash-talk because C++ programmers are envious for the Java coders for getting all the girls (...I wish). – Carlos Sep 09 '10 at 21:07
  • 29
    “Knock, knock.” — “Who’s there?” — *very long pause…* “Java.” (Courtesy of http://stackoverflow.com/questions/234075/what-is-your-best-programmer-joke/234138#234138) – RegDwight Sep 09 '10 at 21:44
  • 3
    Java is just a slow starter. We'll catch up in a day or two. –  Sep 11 '10 at 07:39
  • See http://blip.tv/file/319044/. It takes a generation to change people's perceptions. Java is will always be considered slow as long as it's called Java. – Evan Plaice Sep 11 '10 at 09:02
  • I used to think that "Java is not slow anymore" until I saw the same pricing algorithm implemented in C++, running orders of magnitude quicker. – quant_dev Jul 01 '11 at 20:30
  • All the JVM implementations that I know of *are* slow to start up, and for that reason I refuse to use any JVM language (for application development). Working in an environment which imposes a human-perceptable pause before even *beginning* to execute your code is painfully constrictive. Yes, I know about nailgun, and Project Jigsaw, but it is unreasonable to expect that an end user would be running either a non-standard background Java server or an unreleased version of Java. Of course, slow startup might be OK for a server, and nailgun might be OK for in-house scripting. – Mankarse Oct 26 '11 at 11:41
33

Probably the most dangerous one I've seen, because it gets accepted so readily, is that being able to write code quickly is good, and therefore the more quickly you can code [insert feature here] in a given language, the better the language is.

This is a serious example of premature optimization, since far more work goes into maintaining code than creating it. This means that it's much more important to write code that's easy to read, comprehend and debug than code that's easy to write quickly, and facilitating easy-to-read code is a much more useful measurement of language quality.

Mason Wheeler
  • 82,151
  • 24
  • 234
  • 309
  • 14
    this is precisely what happened to one of the products the company I work for; rushed development was seen as brilliant. The product LOOKED ok and the developer was highly praised by upper management. Another junior developer was then tasked with fixing a "small" bug, and after a week of trying to understand the code, gave up and sought guidance from a senior.. who couldn't believe how rubbish the code was. Upper management refused to accept is as a major issue for two years, after which the eventually agreed it was a pile of junk and needed to be coded again from scratch - and right this time – Sk93 Sep 10 '10 at 08:06
  • 4
    There's a well-established myth among technical managers that your skilled developers are ten times more productive than unskilled developers. The direct result of this myth is that any developer who can produce code *quickly* -- regardless how buggy or hard to maintain -- gets praise and promotion. – rtperson Sep 10 '10 at 18:17
  • @rtperson: http://www.giantitp.com/comics/oots0725.html Second panel. – Mason Wheeler Sep 10 '10 at 18:42
  • 3
    You _NEED_ a powerful language. See Paul Grahams discussion of languages and what ti enables you to do: http://www.paulgraham.com/power.html –  Sep 11 '10 at 07:43
  • 4
    @Thorbjørn: I've read that article, and Paul Graham has it wrong. He's a Lisp advocate, so he twists the facts into self-serving arguments to make Lisp look good. Maybe not even conciously, since it really doesn't take much twisting. There's a lot of overlap between readability and succinctness, as he points out towards the end of the article. But the conclusions he draws are completely out of sync with the state of software development in the real world. Yes, you need a powerful language, but he's measuring power by the wrong criteria, and it's harmful to believe what he says. – Mason Wheeler Sep 11 '10 at 11:42
  • @Mason - I agree with Paul Graham that languages have different levels of power (I have not decided on the Lisp conclusion yet). Just try doing in BASIC what Perl can do with a regexp oneliner to a textfile... –  Sep 14 '10 at 06:57
  • 3
    @rtperson: That productivity can vary by a factor of ten is no myth. That people who finish fast are necessarily more productive is. – David Thornley Sep 22 '10 at 17:35
  • 1
    The correct version of this myth would be that being able to write *good* code quickly is good. A minimum of [syntactic noise](http://martinfowler.com/bliki/SyntacticNoise.html) helps to achieve that end. – Aaronaught Oct 01 '10 at 16:19
  • @Mason, if the metric was "how fast you can write PRODUCTION code" it is actually quite reasonable. –  Dec 02 '10 at 12:01
  • 1
    The major thing wrong with PG's "Beating the Averages" argument is he undermines the role his Harvard Engineering PhD might have played in the success of his company. Instead, it was all the magic of Lisp. It's as if an Olympic weightlifter responded to the question "How do you clean lift 500 lbs?" with the answer, "Wear this shirt!" – rtperson Dec 03 '10 at 02:38
  • Fast development is has no correlation to sloppy code. And slow development does not imply it is good. You can be fast/good. fast/bad. slow/good. slow/bad. – Lord Tydus Dec 17 '11 at 20:10
31

Manufacturing lessons can be applied to the software development process.

Mike King
  • 111
  • 1
  • 3
  • 6
    Depends on the lessons. When I worked at a mattress factory, we learned that task-switching was harmful to our production. Kinda important since we were paid by the number of mattresses made and not by the hour... and a lesson that applies here too for a lot of the same reasons. – AnonJr Sep 10 '10 at 11:12
  • This is such a persistent myth when you work in a place that mostly makes hardware. The hoops we jump through to fit our software 'build' into the same model as a hardware 'part' are amazing... – AShelly Sep 11 '10 at 19:32
  • 5
    Thing is, manufacturing software is trivial. It's easy to make copies, and doesn't cost all that much to make millions of copies. This leads people to ignore the manufacturing part altogether, and try to apply manufacturing to the design process. – David Thornley Sep 22 '10 at 17:33
  • +100 for this, especially people that studied economics think this – Kugel Oct 11 '10 at 17:22
  • 1
    Everyone should read Jack Reeves: http://www.developerdotstar.com/mag/articles/reeves_design_main.html - this is the origin (or at least an early and powerful statement) of the idea that source code is a *design* not a *product*. Programmers are like the designers in the drafting room, not the machinists on the factory floor, and the management of programming must be like the management of other kinds of engineering design, not manufacturing. – Tom Anderson Nov 26 '10 at 20:25
  • +1 for that.... a software and a film studio should never be a factory – Prasham Jan 04 '11 at 12:18
  • Best analogy I've come across is that software development is design, and the compiler is manufacturing. – Mike King Jan 10 '11 at 21:54
  • The one manufacturing lesson I think is good for software is that quality can't be an afterthought, but must be designed into the system. – Christopher Mahan Jan 11 '11 at 23:49
31

that as a programmer you know everything about latest hardware trends, overclocking, case mod, etc. friends and relatives consult you when they buy their gears.

setzamora
  • 916
  • 1
  • 10
  • 15
  • 5
    I used to keep on top of some of these things back in highschool, but nowadays I find that they are generally irrelevant to what I do and while some are neat, I'd much rather pay someone who knows their stuff and use the time I save doing what I like (i.e. writing code). Maybe another "good with computers" misunderstanding. – Alan Plum Sep 19 '10 at 17:40
  • 2
    +1, or a slightly one off tangent - Because your a programmer, you have a super duper water cooled 300 LED fan spinning flashing top of the range brand new shipped from the manufacturing plant before its been released case. Erm not really! Its a decently fast machine, its in a black very cheap case. Dont really care beyond that! – Surgical Coder Sep 22 '10 at 09:16
  • Laugh, there's a PM assistant at work who has some god-almighty gaming rig at home, always rolls over to the Dev area to ask if he should buy (Product A) or (Product B) ... in an unrelated note, he also assumes the dev team all hang out on 4Chan, (which he actually does.) - *sigh* – ocodo Jan 17 '11 at 06:02
  • +1 Word. This is spot on. I'm a software developer and I've been asked to configure someone's internet for so many times and basically all I do is trial and error plus Google searches. I like it best when something completely unrelated breaks after you've done someone a favour and then it's your fault. – Anne Schuessler Jan 17 '11 at 18:03
30

That when programmers say it's very hard to do/simply impossible, HR thinks they're lazy and unmotivated

  • 2
    Include management too – Prasham Jan 04 '11 at 12:21
  • When you say no they think you're simply a difficult person to work with. – Captain Sensible Jun 24 '11 at 20:15
  • +100, and that with enough "motivation", they can change your answer. Or go to another [less experienced] developer and purposefully leave out half the details to get him to say yes, only to end up halfway thru development and bump into the exact problem you warned them about. – wildpeaks Jul 02 '11 at 00:08
28

There must be an open source program for my business. Can't you just download it and tweak to my requirements.

Tim Murphy
  • 578
  • 3
  • 9
  • 2
    +1. Oh, yes, whatever we need to do must already be in open source. – sharptooth Sep 10 '10 at 05:58
  • 7
    a lot of the time there is... at least thats true for web development. – WalterJ89 Sep 10 '10 at 06:37
  • @WalterJ89: It may be there, but that doesn't mean it's a good idea to use it. Open source doesn't automatically mean good code. – Alan Plum Sep 19 '10 at 17:14
  • true.. but in the case of Wordpress, Drupal, jQuery, ... there may be areas where free is not great, like e-Commerce but more often than not the web is very open, and I find I enjoy working with an open source community far more than a propietory help desk. – WalterJ89 Sep 19 '10 at 19:24
  • 7
    The opposite is a myth too. That you cannot use FOSS to satisfy your business needs. – terminus Dec 18 '10 at 16:07
27

I've had more than one person ask me about what it is like to program only to realize midway through the conversation that they actually think we program directly in binary or using mathematical symbols.

I don't know if I want to dispel that myth, it makes me look really smart!

JohnFx
  • 19,052
  • 8
  • 65
  • 112
  • 6
    It doesn't help that most people don't even know what programming really is... they have this vague idea that it's creating software... but they don't really have a clear idea what software is... – Spudd86 Sep 09 '10 at 18:01
  • 7
    "We write knitting recipes". Grandmothers tend to understand that. –  Sep 11 '10 at 07:41
  • I know people who will write a program in C, then redo the most performance-critical parts in Assembly. – Zaz Sep 12 '10 at 15:37
  • 1
    @Josh - unless there is a performance problem, that seems like a waste of time. – JohnFx Sep 12 '10 at 20:08
  • @JohnFx: When coding for uControllers it's often necessary to recode some things in assembly, either to deal with idiosyncracies of the hardware or because the compiler optimizes necessary elements out of the executable. – oosterwal Mar 12 '11 at 15:43
  • 1
    @oosterwal - Assembly is not binary, nor does it use mathematical symbols. – JohnFx Mar 12 '11 at 20:48
  • @JohnFx: Here's an example of what I'm talking about: `// if (A2D_UNCALIBRATED) // If not calibrated` `_asm("ld a,_A2D_UNCALIBRATED"); // Must write the if/else in assembly otherwise` `_asm("jreq A2D_CALIBRATED"); // the compiler will optimize out the code (due to ROM Constant).` `{` – oosterwal Mar 22 '11 at 18:30
  • @oosterwal - There wasn't a single 1 or 0 in your example. Still not getting your point. You do know that Assembly code is higher level than machine code (binary) right? – JohnFx Mar 22 '11 at 23:18
  • @JohnFx: My first comment was reflecting back on @Josh's comment about recoding parts of C in Assembly. You had mentioned that, unless there were serious performance issues that it seemed like a waste of time. I only wanted to point out that there are times, like when a compiler optimizes critical C statements out of the code, that you have to rewrite parts of the C source in Assembly. I didn't think I had mentioned anything about machine language or binary, but if I did, please accept my apologies for causing confusion. – oosterwal Mar 22 '11 at 23:30
26

I think the biggest misconception is that it's more important being able to write the code down easily than being able to read and understand the code.

LennyProgrammers
  • 5,649
  • 24
  • 37
24

Programming is just like assembly line work. You are working on a product for a certain time (maybe with coworkers) and finally you ship it. Just like building a house of bricks.

Contra: Programming contains a lot creativity and planning. It is art. Like the mason, also a programmer knows the difference between shaping a brick and planning a whole cathedral.

  • 6
    Agree about difference from assembly line work -- but in many ways I don't think it's much different from building a house. – Billy ONeal Oct 02 '10 at 00:00
24

Porting a program to C++ will automatically make it run faster.

JohnFx
  • 19,052
  • 8
  • 65
  • 112
  • I would extend to another low level languages. It's possible get the opposite when the programmer doesn't know what it is doing. – Maniero Sep 10 '10 at 13:16
  • 2
    Another common variant is switching to a client-server architecture. "Upgrading to SQL will make my app much faster!" Not necessarily. – JohnFx Sep 10 '10 at 14:29
  • Yes, it's quite the opposite many times. SQL kind databases are good to be ACID or almost that, it comes with price. And could be worst, the wrong thinking about SQL techniques could be harmful about performance. – Maniero Sep 11 '10 at 08:06
  • 6
    Porting to C++/C for those written in Python/Perl/Ruby/etc. Porting to asm for those written in C/C++ :P. I wonder what you'd port asm to? designing it into the hardware? – MAK Sep 12 '10 at 22:30
  • I love that one! ;-) – Khelben Sep 13 '10 at 20:01
  • +1 -- true. That said, porting to **ideomatic** C++ probably will make it run faster (but is by no means automatic) – Billy ONeal Sep 30 '10 at 04:31
  • especially bad when your boss thinks this – Kugel Oct 11 '10 at 17:29
  • 1
    @MAK - check out http://en.wikipedia.org/wiki/Handel-C – flamingpenguin Dec 24 '10 at 14:03
21

Any programming environment with a visual designer of some sort will make it so that business users can "write" the program and actual programmers aren't needed.

Jesse C. Slicer
  • 6,002
  • 2
  • 32
  • 44
  • 9
    Ah, yes. It's always fun when some company creates a new authoring tool to make programmers redundant and then everybody who adopts it goes ahead and hires highly-paid specialists to actually use it. Case in point: Joomla! and all that non-sense. – Alan Plum Sep 19 '10 at 17:26
  • HA HA HA HA HA HAAA HA +1 :) – Billy ONeal Oct 02 '10 at 00:00
  • Cobol already tried that :) – Carra Mar 12 '11 at 11:17
20

OOP reuse. It's the biggest fallacy marketed in programming.

clrod
  • 472
  • 5
  • 8
  • 1
    Well. The HP XL WESM is roughly 85% the same as the Symbol WS5100 (there's OEMming going on). Would you have me copy-and-paste that percentage of my monitoring and configuration code so that there's twice as many bugs, or would you prefer that I rewrite it from scratch and take forty times as long and there are five times as many? Or are you just pressured by foolish management which thinks that it's one of several magical panaceas to make $project faster? –  Oct 02 '10 at 02:58
  • 1
    Reuse in the small was solved 40 years ago and more. Reuse in the large is difficult and hasn't been solved yet IMHO. Just like Robert Glass says in [Facts and fallacies of software engineering](http://www.amazon.co.uk/Facts-Fallacies-Software-Engineering-Development/dp/0321117425) – MarkJ Nov 02 '10 at 22:52
19

That learning the syntax is the hard part.

15

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

Bill Karwin
  • 1,511
  • 13
  • 22
15

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.

  • 14
    I love this quote: "Java is to JavaScript as Car is to Carpet." I've read this attributed to Chris Heilmann (http://www.wait-till-i.com/2005/11/08/do-hr-people-even-read-their-job-ads-when-they-get-published/) – Bill Karwin Sep 10 '10 at 06:53
  • 2
    Java doesn't contain JavaScript, but hopefully your car has carpets. – configurator Sep 19 '10 at 02: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." – ocodo Jan 17 '11 at 05:59
  • @configurator: Actually, [Sun's implementation of Java 6 is co-bundled with the Mozilla Rhino JavaScript engine](http://download.oracle.com/javase/6/docs/technotes/guides/scripting/programmer_guide/index.html#jsengine). So modern Java does come with JavaScript, but just like the Carpets in your Car, it's an often-overlooked detail. – Daniel Pryden May 03 '11 at 19:59
13

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

David Cary
  • 1,402
  • 13
  • 20
12

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

quanticle
  • 955
  • 7
  • 14
  • 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 Sep 09 '10 at 14:50
  • 25
    You can't code quickly if you're a hunt-and-peck typist. – George Marian Sep 09 '10 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. –  Sep 09 '10 at 15:47
  • @quanticle - This is true though. Make a Venn diagram; draw a circle for "fast typing", and then put a tiny circle inside that one labeled, "good programming". – orokusaki Sep 09 '10 at 18:07
  • As with anything, this has been covered by Scott Adams: http://thedilbertstore.com/images/periodic_content/dilbert/dt940608dhc0.jpg?1252609186 – JohnFx Sep 09 '10 at 18:38
  • Hunt-and-peck typing a 100'000 line program? It _IS_ hampering your programming ability. Learn touch typing. –  Sep 11 '10 at 07:40
  • 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. – Matthew Scharley Sep 12 '10 at 03:24
  • I learnt to touch type, but actually prefer to type with four fingers. – Zaz Sep 12 '10 at 16:02
  • 2
    As any other basic ability, I want to be able to type so comfortably I don't have to think on what I'm doing... If typing gets on your way to program, you've got a problem... – Khelben Sep 13 '10 at 20:00
  • 1
    Covered by Steve Yegge too: http://steve-yegge.blogspot.com/2008/09/programmings-dirtiest-little-secret.html – barrowc Sep 30 '10 at 11:59
  • 3
    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
12

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
Kelly S. French
  • 200
  • 3
  • 9
10

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

Sk93
  • 372
  • 2
  • 10
Gopi
  • 3,113
  • 1
  • 24
  • 30
  • 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 09 '10 at 16:27
  • @JohnFx - that is if you don't mind giving IT managers heart problems. – orokusaki Sep 09 '10 at 18:08
  • 7
    I'm pretty sure I can write a bug-free hello world. – alternative Sep 10 '10 at 00: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 Sep 10 '10 at 03:20
  • This is definitely true. The problem is that most managers think bugs == sloppy craftsmanship and expect you to be able to say that the software is _guaranteed_ to be bug-free if you did your job properly. This may be a manager/programmer jargon problem though: in manager speak "this program works" is usually equivalent to programmer speak "I'm confident that this program works". Programmers tend to avoid absolutes like that for a reason. – Alan Plum Sep 19 '10 at 17:33
  • 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. – David Thornley Sep 22 '10 at 19:34
  • @David Any evidence for the expense and the slowness? I'm sure I've read they have industry-average productivity, but ten times fewer bugs than average. They win awards too. – MarkJ Nov 02 '10 at 23:04
  • From what I've read about NASA, they don't have industry-average productivity. Everything I've read has noted slowness and cost. Where have you encountered anything to the contrary? – David Thornley Nov 03 '10 at 17:45
10

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"

Zaz
  • 221
  • 1
  • 6
9

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

Jonn
  • 2,038
  • 4
  • 18
  • 24
9

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.

bmb
  • 141
  • 5
  • 11
  • 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. – Alex Feinman Oct 26 '10 at 12:58
  • 2
    @Alex Feinman you'd be amazed how many people *don't* know how to hit refresh. – Glen Solsberry Feb 03 '11 at 21:19
7

The biggest myth is that it's easy.

0xHenry
  • 289
  • 2
  • 8
Fortyrunner
  • 331
  • 2
  • 3
7

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

Murph
  • 7,813
  • 1
  • 28
  • 41
7

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

6

Programmers who became managers saying:

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

Arcturus
  • 1,597
  • 12
  • 17
6

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

FeatureCreep
  • 1,334
  • 1
  • 12
  • 14
  • 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 02: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 05: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 00:00
6

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

Jeff Siver
  • 1,721
  • 1
  • 11
  • 16
  • 6
    But I *do* know how to fix the copier! – configurator Sep 19 '10 at 03: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. – David Thornley Sep 22 '10 at 19:36
  • To me every copier looks like a nail and I'm the hammer. – Captain Sensible Jun 24 '11 at 20:18
4

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.

zhenka
  • 1,688
  • 10
  • 22
4

Computers and software improve working process by itself.

aasc
  • 614
  • 4
  • 7
4

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.

Mike Dunlavey
  • 12,815
  • 2
  • 35
  • 58
  • 4
    Nice subject for an answer. I'm feeling pedantic: I say you are still measuring, it's just a rough measurement. – MarkJ Nov 02 '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 03 '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 02:12
  • Also, an infinite loop is not a "performance problem", it's a straight-up bug. – Blorgbeard Jan 12 '11 at 02: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](http://stackoverflow.com/questions/4387895/if-profiler-is-not-the-answer-what-other-choices-do-we-have/4390868#4390868). – Mike Dunlavey Jan 12 '11 at 02:36
3

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

Mike Mooney
  • 186
  • 1
  • 4
  • 8
    This may be a myth in your office, it's reality in mine. – AShelly Sep 11 '10 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. – Captain Sensible Jun 24 '11 at 20:22
3

There is a language called C/C++

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

Martin York
  • 11,150
  • 2
  • 42
  • 70
  • 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. Jan 12 '11 at 09: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. – Martin York Jan 12 '11 at 17:28
3

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

Maniero
  • 10,826
  • 14
  • 80
  • 133
Peter Turner
  • 6,897
  • 1
  • 33
  • 57
2

That writing software is actually about writing code.

Craig Norton
  • 101
  • 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. – Anne Schuessler Jan 17 '11 at 06:50
1

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

diadem
  • 101
  • 2
1

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.

Tamara Wijsman
  • 8,259
  • 14
  • 58
  • 94
  • the DISTANT past... like pre-1970... – Spudd86 Sep 09 '10 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 Sep 09 '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
0

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

0

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.

Martin York
  • 11,150
  • 2
  • 42
  • 70
0
  • 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.
Fredy
  • 11
  • 2
0

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.

Andreas Johansson
  • 1,763
  • 13
  • 18
-1

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

Siva
  • 121
  • 2
-6

That comments are actually useful

Mike Mooney
  • 186
  • 1
  • 4
  • 5
    I think you meant the opposite ... – HoLyVieR Sep 13 '10 at 02:52
  • 6
    Let's rephrase that as "That comments are inherently useful", because that is obviously blatantly wrong. Comments can even be misleading or disruptive. Ideally code should be self-explanatory. Comments should only be used to add non-obvious details or explain complex code that can't be refactored into a more readable version (e.g. because doing so would be seriously inefficient or impossible). – Alan Plum Sep 19 '10 at 17:49
  • Totally agree. In fact overuse/incorrect of comments I would consider harmful. – Martin York Jan 17 '11 at 05:35