Skills shortage: it's mind over matter
Aptitude beats experience
The IT skills shortage is like global warming - you either believe it exists or you don't. Either way, one thing's for certain - the debate refuses to lay down and die.
For those who believe there is a shortage, there is plenty of evidence to support their argument. And for those who believe the shortage is a myth that's perpetrated by businesses to justify sending skilled jobs to less-expensive regions or hire in inexpensive immigrant labour, then there appears to be plenty of supporting evidence, too.
The reality is somewhat more complex especially in software development. The software skills required by the IT industry and in user departments at any one time constantly change so there is always going to be a shortage of some skills some of the time.
The demand for SAP skills, for example, is expected to be high in 2008. Demand for skills in new areas such as open source, Linux, Web 2.0 and AJAX are almost certainly bound to be high next year too. And surprisingly, there is a growing demand for good, old-fashioned mainframe skills as the Baby Boomer generation retires and leaves a gap in supporting legacy systems.
Constant change has always been a problem in regard to skills for our sector, and is often the cause of perceived shortages. It has made it hard to define exactly what fundamental skills are important to developers. The scramble is always for this month's fashionable programming notation, operating system or database technology rather than on the underlying skills that define a properly qualified programmer, as SlickEdit's Scott Westfall points out.
Good programmers can learn fast and adapt to changes in technology relatively easily - provided they have good basic skills. Hiring teams would do best to pay attention to the late, great Edsger Dijkstra who wrote: "A competent programmer's most important assets are - perhaps in this order - an excellent mastery of his native tongue and a considerable mathematical maturity."
The worry should therefore, not be that there is skills shortage - but that the next generation of workers is either not interested in IT as a career or simply does not have the basic skills to train for the job.
We sealed our own doom when...
...we developed point-and-drool Web/database systems that any MBA with a third-grade intellect could use to call themselves a "recruiter". What profession would tolerate dealing (on either end) with people who don't know how to use English ("but I am being from America my life all of it!"), don't know anything about the technology (just a bunch of keywords next to checkboxes on a form/Web page), don't know anything about the business side of IT (the guy talking about SOX and other regulatory stuff was spot on)... along with being some of the least intellectually curious people I've ever met - 90% of those who've started in their line of work in the last ten years seem to be in it for the money, full stop...and the older ones who are any good don't do find-a-coder anymore; they're either working in-house for the Fortune 50 or specializing in 'senior management opportunity matching').
Of course there's ageism in IT - between offshoring to countries that have 2- and 3-year "BS" degrees with an optional 1-year MBA on top of that ("are you wanting chapati with that?") - AND - the people "working" the "recruiting agencies" weren't even born yet when I got my first job after college, yet think "3 years experience" qualifies someone for a "senior/lead developer" position, we're going to continue to go down this death spiral. Commercial and in-house projects are failing more expensively and spectacularly than ever before, and most "IT disasters" seem to be caused by people who couldn't spell IT if you spotted them the first two letters. I think the current trend towards open source development is as much a realization that successful FOSS projects remain the last true meritocracy in our line of work, where you're less likely to run into people who don't know their orifice from a hole in the ground, but who remember Back Orifice.
The funny thing is -- if you go to Bangalore or Chennai or Shenzen or St Petersburg and look at the offshoring companies, they're having the devil of a time to find - and paying ever-higher wages to keep - people who are reasonably competent in English and the computer language flavor-of-the-moment. Too bad nobody ever offshored the recruiting agencies.
Yes, there is a skill shortage but it is in management. As the other replies state current management is in disarray, they should get educated. How you can require a person to have skills in SOX, SOA, ITIL, xxxML, UTMS, SaaS, security, agile, etc when you only know the buzzwords but not how and why?
My current experience is horrible, after 10+ years designing (government, NIST standards) level systems with AAA and security and talking to managers is frustrating. They (may) know about CC, FIPS, ISO, etc but their real knowledge is basically zero coming out from vendor brochures or "dog and pony" shows they have seen and written in job advertisements.
Now, I know many other developers in field who have problems to get work (or to accept work) because they know what, how and when much better than the people doing the hiring. And it is the same with AJAX, REST, SAML, SIP, etc, try and ask the hiring person to explain what those are! You would be amazed of the answers, I have been, they are so much way off that it isn't even funny. No wonder they can't find cheap workers and when they can, what are the results? A lot of bloated and "almost working" systems which will be fixed in next release 2010, maybe. My last experience was looking a contract job which was advertised as design and development.
First it did look good but when it came to questions as how would you do this they meant coding only, I did show a couple of problems in design and was told, no, it is perfect but how would you develop for that? I wouldn't because after a while the whole system would have problems going that way. OK, it didn't work and I was told that is the agile development, we just code a lot just now and think the systems / interoperability / maintainability / etc later, give me a break! Of course unit testing works, you can always make a small piece of system to work alone but try to match it later to your other products and systems, good luck! Haven't they seen the statistics how much an early correction in design saves compared to support and fixing basic design bugs when the system is in production? No, they haven't, so we are back in management eduction!
Same with shortage in mainframe developers, sorry, my 30+ years experience is that it has always been a management cry to hide their own problems. I have had and met development / software engineering managers who like to boast how they coded in Cobol, some even in in assembler, in mainframes in 80's and then "graduated" to PC's so they know everything of development! IMHO, they are the most dangerous types, they never learned whole systems, infrastructure, and they still think that threading, OO, metalanguages, etc are something new and difficult? Or, maybe it is, for them because they are still fighting to understand how PM tools work with SharePoint?
I agree with all the above about recruiters. As a contractor, the number of times I've had an argument with agents who played buzzword bingo with my CV and sent me job specs that were completely irrelevant to my experience just beggars belief. Having said that, there are some out there who do their job properly and either know what they're doing or don't hesitate to ask you when they're not sure. When you meet one of them, make sure you keep their details!
Another problem, even before recruitment consultants get involved, is that IT managers don't know how to write requirements so the specs they send to recruiters for staff often have little to do with what they actually need. And then those same specs get passed on to education establishments who infere that what you really require is people who are wizards on the new language 'du jour'. Hence a lot of young people who have some sort of qualification meaning that they know Java but have no idea what object oriented design mean, let alone how you do it. We work in an industry where the skills you have today will probably be irrelevant in 5 years so it doesn't matter whether you know Java, C#, PHP or Ruby, as long as you have a good grounding in language theory, maths and generic computing.
But it's not just managers and recruiters who are guilty of that. We all are at some point or other. I've just been told that a piece of work I have been doing for the past few weeks would not get approved because I shouldn't have been asked to do it, on the grounds that I am part of the application delivery side of the business, not the infrastructure delivery side of it. The fact that I could do it, had some spare time and there was nobody available from infrastructure to do it is irrelevant: it just wasn't my job so I should not have been asked, let alone have agreed to it.
So it's not so much a skill shortage as a bad use of available skills.