Why most programmers are lousy

Thursday 8 Mar 2007

I’ve been in the IT field long enough to get to know many pro­gram­mers, both expe­ri­enced and just wanna­bies. Dur­ing this time, I’ve real­ized that most of them are just bad pro­gram­mers, sim­ply said. I find myself agree­ing with a bril­liant post by Jeff Atwood, which alleges that pro­gram­mers can’t pro­gram. What are the rea­sons for this? Many. Prob­a­bly, IMHO, the main fault has to be addressed to the lousy edu­ca­tion that peo­ple receive. But then again, the abil­ity of giv­ing edu­ca­tion remains directly pro­por­tional to the abil­ity of get­ting it, and where I see peo­ple com­plain­ing about low qual­ity of edu­ca­tion in Uni­ver­sity, I also see stu­dents with no inter­est in learn­ing. Let’s see some of the rea­sons why pro­gram­mers can’t really program.

  1. Young peo­ple study Com­puter Sci­ence just because it’s a trend. It sounds almost unbe­liev­able to me, but I must admit it’s mostly true. The vast major­ity of my old Uni­ver­sity mates just applied to the Com­puter Sci­ence depart­ment because... well: every­body was doing so. They fol­lowed the rest of the sheep.
  2. Young peo­ple study Com­puter Sci­ence because they wouldn’t know what else to do. That’s really another strong source of appli­ca­tions to Com­puter Sci­ence. A lot of young peo­ple in their teenage years just don’t know what they want to do as grownups. Com­puter Sci­ence still seems to be a good career oppor­tu­nity, so they just go for it.
  3. Young peo­ple study Com­puter Sci­ence because they think it’s a sure way of get­ting a job. 10-something years ago there was a big boom, and if you just knew some HTML, were thought to be a com­puter guru. These types of belief mark a deep foot­print on pop­u­lar say­ings, hence the wave of peo­ple apply­ing to Com­puter Sci­ence just because they can work, is still there.
  4. Many of today’s pro­gram­mers, were doing noth­ing else than surf­ing the net or using Word till last year. Espe­cially in small and ver­ti­cal based mar­kets, impro­vi­sa­tion just rules. Peo­ple learn some­thing, and lit­er­ally throw them­selves on the field. Draw­backs for qual­ity of their work are sim­ply inevitable. This is not only a group of illit­er­ate peo­ple that just jumped in to catch the big wave (what big wave, nowa­days?), but peo­ple with no pas­sion what­so­ever. In other words, I don’t think it’s pos­si­ble, nowa­days, to become a great pro­gram­mer if you didn’t start get­ting some inter­est in the field when you were very young, say about 10 years old (with the due excep­tions, of course).
  5. Many of today’s Com­puter Sci­ence stu­dents have no inter­est what­so­ever in what they’re force­fully study­ing. Just put together the pre­vi­ous items in this list and what do you get? A bunch of peo­ple who just don’t care, who want to get their piece of paper (the degree) as soon as pos­si­ble, and have absolutely no pas­sion in what they learn. That’s the worst. I strongly believe that pro­gram­ming is not just a job like many oth­ers, but you need pas­sion to get best at it.
  6. A lot of pro­gram­mers just don’t like to pro­gram. This goes for 100% of my ex Uni­ver­sity mates! Think of that: 100%. Of course it’s not the whole world but it makes a small statistics.
  7. A lot of pro­gram­mers just don’t get it. Not even the easy things. I was asked, few weeks ago, by a friend of mine who’s been study­ing Com­puter Sci­ence for now 4 years, what the dif­fer­ence is between a private and protected method in Java. Appar­ently read­ing the books isn’t enough any­more, nowa­days. Another guy asked me: “I’ve stud­ied point­ers in C, and I think I under­stood them. Still I can’t find any use for them... are they really used at all?”.
  8. Basi­cally all of the pro­gram­mers, or wannabe pro­gram­mers, men­tioned above, are miles away from the tech­ni­cal com­mu­nity. These peo­ple will totally ignore the exis­tence of:

    Slash­dot and sim­i­lar
    RSS
    Usenet
    IRC (“Is that like MSN?”)
    SVN and similar

As you can see, a really strong point, in my opin­ion, is the lack of care and pas­sion for the sub­ject of pro­gram­ming itself. Lousy pro­gram­mers are bound to pro­gram to take a wage home; good ones are bound to pro­gram for the sake of pro­gram­ming itself. Or course you can do that but still miss to be a good pro­gram­mer, but all falls down to numbers.

Printed from: http://www.iovene.com/56 .
© Salvatore Iovene 2010.

56 Comments   »

  • Th3Du says:

    I have to agree with you. I’m a com­put­ing stu­dent and see what you mean. 100% of my class­mates dont want to pro­gram. They just want a degree. Plus our course is shit, peo­ple just use Visual stu­dio and net­beans to cre­ate gui and think their cool. None of them really under­stand pro­gram­ing. Every one just goes online can copies code.
    CS edu­ca­tion needs a HUGE update

  • Jon says:

    I’m defi­nately with you on this; I’m another CS stu­dent who actu­ally enjoys and under­stands what he’s doing, but so many of my peers are just able to “get it work­ing”, with the aid of what is essen­tially a tuto­r­ial, and get a degree.

    We’re now going to extend the Chess­Piece class for the rest of the pieces, you’ll need to make a method called can­MoveTo() in each of the classes or your pro­gram won’t com­pile.“
    What, no men­tion of why you HAVE to over-ride the method? Not even a hint at what abstrac­tion is?

    They can make it work, sure, and that gives them the marks — but what about when they have to thing inde­pen­dantly. How well do they cope when the safety net is taken away and they have to design the objects, and more impor­tantly the rela­tion­ships between them, securely and effi­ciently. Where’s the actual under­stand­ing of how things work together, when to do things (rather than just how). There’s no effort to teach what an abstract class is and when it’s use­ful, just to make the stu­dent do it.

    It deval­ues the efforts of those of us who under­stand the con­cepts and enjoy the sub­ject, just because the uni­ver­si­ties want to throw out a decent pass rate and they know a lot of teenage boys want to “make com­puter games and stuff”.

    In short, it makes me look bad because they don’t actu­ally have to learn.

  • Pradeep says:

    Very much agree to it.

  • Joe says:

    I agree. Trendy is the key. For the same rea­son that a few years back it was super cool to study foren­sics in col­lege because CSI was the hot show. PLEASE. I know that every gen­er­a­tion says this about their young peo­ple, but the 2030 years olds today truly do not have a clue; but that is no crime. Every young per­son has to find their own way and stum­ble around a bit at first. But this gen­er­a­tion is dif­fer­ent. Not only are they com­pletely clue­less, but they are also cocky, ego­tis­ti­cal and com­plelty in awe of them­selves. And is it any won­der? When you have peo­ple like that ‘Joel On Soft­ware’ dude say­ing that new pro­gram­mers should be picked up in limos from the air­port? Are you insane? If any­thing they should be picked up and dropped on their heads. Stop com­plain­ing about want­ing to use the lastest tech­nol­ogy. Stop com­plain­ing that your chair at work is not ergonom­i­cal. Stop com­plain­ing period. Shut your mouth, do you work and save for your retire­ment. In short, take a least a lit­tle break from think­ing about your­selves. Or didn’t they teach you that in college?

  • Greg says:

    And let me guess, you’re one of the “skilled” devel­op­ers? That’s alway how it turns out.

    As a vet­eran pro­gram­mer, let me tell you the peo­ple lament­ing other’s skills are often the very same peo­ple giv­ing me the odd­est code. When no one can under­stand your code, the first defense is “you’re not smart enough to fol­low it” and then fol­lows an hour-long argu­ment of com­par­ing “dick-sizes”.

    After cod­ing at work for too many hours I AM NOT pas­sion­ate enough to pick it up again at home. I want to do other things. The pas­sion is gone. This does not mean pas­sion­ate peo­ple are any bet­ter at cod­ing; they just have less going on in their life, I suppose.

  • Ian Kjos says:

    I’ve been on all three sides of this fence. I started at five or so learn­ing Apple­soft and 6502 machine code from books. At that time, there were very few pro­gram­ming books and they were all writ­ten by peo­ple of the utmost qual­i­fi­ca­tion in their fields. Today, you can teach your­self to be an idiot in 21 days and a thou­sand screen shots. But there were other dif­fer­ences. Peo­ple treated soft­ware like bak­ing or brew­ing instead of like fac­tory work. You could get disks full of exem­plary source code for lit­tle more than the cost of dupli­ca­tion. (These days, there’s plenty of free source on the inter­net, but there’s no fil­tra­tion for qual­ity.) Also, today peo­ple expect more from a pro­gram. It has to work with a GUI or over the net on a time-shared mul­ti­task­ing oper­at­ing sys­tem. Expec­ta­tions are higher. The legal frame­work for soft­ware has changed. And quite frankly, most of the impor­tant, use­ful pro­grams have already been writ­ten. So at this point, soft­ware devel­op­ment has forked into research (what com­puter sci­ence is sup­posed to be) and busi­ness sys­tems (which is really about putting a pretty and secure face on a data­base) and a hazy middle-ground where peo­ple are try­ing to do all kinds of weird stuff for money, like fee-based wire­less print ser­vice in pub­lic places. The weird stuff is sys­tems inte­gra­tion, and it ought to be script­able, but it’s often attempted with poor tools and ill-prepared people.

    I don’t know of any­one that really teaches a sys­tems inte­gra­tion cur­ricu­lum, or even a course on doing weird stuff with com­put­ers. The MIT media lab is prob­a­bly a great exam­ple of sys­tems inte­gra­tion, but I don’t know if there’s a course cen­ter­ing on it and its evolution.

    Nobody com­plains about research pro­gram­mers, because they’re all bril­liant. And nobody com­plains about busi­ness sys­tems devel­op­ers, because they just need to be con­sis­tent and work in a frame­work that lets graphic design­ers do their work with­out get­ting in the way. The big noise comes from the hazy mid­dle, and there’s nobody teach­ing in that area. If you fig­ure out how, you’ll prob­a­bly con­sider it a com­pet­i­tive advantage.

Trackbacks/Pingbacks

  1. This says it all « More Ramblings from a Los Angeles Programmer
  2. Trip Hop Clan » Blog Archive » Why most programmers are lousy
  3. Salvatore Iovene » How to improve the quality of programmers

RSS feed for comments on this post , TrackBack URI

Leave a Reply

 
  • Hello there!

    You have landed to my personal website, where I write about things that I find interesting. I am a software engineer, Open Source supporter and free thinker.   Read More →