I'm growing a little tired by how the "industry" complains about lack of skills.  Now, they're saying software graduates are lazy.

I think the "industry" has a few problems.  Frankly, it's boring.  And, well, it's wrong-headed.  Why does "the industry" always look for a quantity of software graduates?  I've seen job adverts for "10 Junior PHP programmers", for example.  It's not unusual for a large number of people with similar, low-end, skills being asked for.  At the same time, there's a massive gap between that low experience level and the early-career experience level.

My first job was great.  I was well-paid, well-treated, and was surrounded by intelligent people.  Three rather decent jobs after that, I wasn't even earning the inflation-adjusted amount I was earning in my first job.  And, yet, somehow, a few months after that meant a difference of 40% or so in the salaries of the types of positions I was being asked to apply for.

I can only imagine it's as irritating for other people, working their way up between the fifteen billion other graduates that compete for the sorts of jobs you're able to apply to with your experience.  You're at least 20 times more effective than the average of those fifteen billion people, and somehow you're being extortionate for asking for 10-30% more salary.  And you need that salary, since, being interested in the field, you want to buy books, be online, and so forth.

The reason there are fifteen billion other graduates is because the companies are asking for quantity of staff, not quality of them.  People see lots of jobs open, and so decide to go "into IT".  Those people who go "into IT" because of the available jobs are just not worth as much as those actually interested in the particular subject.  10 low-experience programmers earning R5k a month (take home) aren't nearly as valuable as 2 higher-experience programmers earning R25k a month (take home), and the 10 low-experience programmers also cost more because they use more desk space, more parking bays, and so forth.

That's bad enough, of course, but now they're calling IT graduates lazy, because the average IT graduate probably is lazy, because the average IT graduate is in the wrong field.  If you want someone who isn't lazy, don't ask for 10 graduates - ask for 2 higher-experience people.

The worst reason I see for hiring more junior people is that more senior people - people with more love for the field - tend to move jobs, which is a lot worse than if you only have one or two of the ten people churning at a time.  But, frankly, look at the way you treat the more senior people, and you'll quickly find why they leave - because they're not given the things they need to perform.

Unless you're grossly underpaying your senior staff, they're likely to stay if they're treated well.   Sure, that may mean forking out more so that the development area is properly lit.  Or that the environment has enough air flow.  That the temperature is managed.  That there are enough plug points.  That there are two LCD monitors on their desks.  Heck, offices for every, or every two or three, developers, so that they're not constantly surrounded by noisy colleagues who sing along to music playing on their earphones, or are making sales calls, or who just talk to themselves loudly or discuss the cricket or how to make money fast with property with other members of the staff.  But, you'll find, they're worth it.  They're worth more than five other people, and don't cost five times as much.  And they're there and if you treat them well, they'll stay there.  And they know what they're doing already!  Less time wasted on training!

Now, people will say that I'm being elitist - that I'm not thinking about ways for junior people to join the industry.  Well, firstly, boo hoo!  Why should we care about all of the artificially high number of people who go into an industry for the wrong reason and into an industry that doesn't actually need them?  We should care about those that are in it for the right reason, and those that would be in it if given the opportunity.

With less chaff, there will be less competition for those that are in it for the jobs available.  Those that would be in it if given the opportunity are not a problem that is solved by having tons of low-experience jobs.  That requires work before they even decide what job they want to go into - they need to know that they're interested and/or suitable in it by then.

Of course, this does leave a lot of people who've been through all these courses and so forth without something to do.  Maybe we can buy all of them a series of books by W. Richard Stevens, Frederick Brooks, and Donald Knuth, and see who floats.  It'll be cheaper than the fly-by-night or utterly useless "programming course" they've been on and will go on again when they're conned into thinking it'll get them a well-paying job.

7 Responses

  1. Oscar ReitsmaMarch 27, 2007 at 04:03 PM.

    Jeff Atwood wrote a pretty good article about programmers that can't program, here [codinghorror.com]
  2. Neil Blakey-MilnerMarch 27, 2007 at 04:14 PM.

    Hey Oscar,

    Yeah, I rather enjoyed reading it a while back. And, well, was rather scared at how accurate it is.

    I've been talking to a lot of people looking to hire programmers in South Africa, and they're just not getting the sort of people they want.

    My advice to them was simple - you're not advertising properly, and you're looking for the wrong sort of person.

    Neil
  3. Oscar ReitsmaMarch 27, 2007 at 04:22 PM.

    I've seen it first hand... wrote a short post [orb.iblog.co.za] a while ago when I came across Jeff's article
  4. wjvMarch 27, 2007 at 08:13 PM.

    Welcome to the ranks of the old & cynical. :-)
  5. wjvMarch 28, 2007 at 09:15 AM.

    Seriously, Neil, IT is dull, dull, dull, and it takes a few years to realise that. Even the stuff I see you post on here that you do in your spare time... writing plugin A that fits into slot B of framework X... componentware stuff, IT stuff.

    You need to find a job where you can do some real computer science again. Those are rare as hen's teeth in SA, but they do exist. :-)
  6. Neil Blakey-MilnerMarch 28, 2007 at 10:52 AM.

    Real Computer Science?! That sounds hard.

    The problem I find with real computer science is its abstractness - it's lack of applicability to the world, and thus the lack of motivation to do it and feeling of accomplishment. Oh well, at least I still only care about what important people think, rather than care about sheer number of users of the system...

    Maybe I can get turned away from the Dark Side, but I'm not sure. Last time I looked at Real Computer Science jobs, I got burned because of my lack of experience in Real Computer Science work (and with Real Computer Science Programming Languages).

    (Admittedly, as you know, I'm rather happy I didn't end up at a few of those places...)
  7. wjvMarch 29, 2007 at 05:56 PM.

    Yes, real computer science is hard. It's also not boring.

    Hard is what makes it fun. Hard is what makes success an accomplishment.

    Computer science abstract? Hardly. It's fundamental and very, very theoretical. Moreover, it provides you with the the model of computation to understand the theoretical framework which underlies the abstractions IT has come to see as being fundamental, but which are anything but. (OO, for example.) It allows you to understand how to layer consecutively more powerful abstractions (even ones of your own devising) upon each other, without ever asking that you understand only the abstraction.

    No application in the real world? No feeling of accomplishment. Oh come on, those are just things you're telling yourself to feel better, and you know it. ;-)

    No experience in Real Computer Science Programming Languages? I'd argue that anyone who has spent some time pondering why Python is such a "good language" (as I'm sure you've done) is well on his way to reaching some important insights. (Decades-old insights, but ones we're forced to reach on our own since – as Spolsky and others have pointed out – hardly anyone teaches computer science anymore.) In fact, Python is almost accidentally a fairly good language (busily evolving into a better one): It was built by one person who has a fairly consistent vision underpinned by a decent (but not infallible) "gut feeling" for what "the right thing" is, even if he can't always articulate it himself.

    Wouldn't you like to be able to express why Python feels so consistent and "right"? Wouldn't you like to be able to a logically constructed argument – and not just a vague feeling – why those elements of the language that don't "feel right" are, in fact, not right? Wouldn't you like to hit me when I sound like a condescending infomercial? :-)

Have your say

The text area above accepts Post Markup, a BBCode work-alike.

[b]foo[/b]: foo
[i]foo[/i]: foo
[link]http://nxsy.org/[/link]: http://nxsy.org/ [nxsy.org]
[link http://nxsy.org/]Neil[/link]: Neil [nxsy.org]
        

You can also use:

[code python]
import foo
[/code]