Why Most North American CS Graduates are Unemployable
Information Week has an interesting article based on comments from HCL Technologies’ CEO, Vineet Nayar. HCL is a $2.5B company with over 3,000 staff across the US and was recently asked why he didn’t employ more US graduates with Computer Science degrees. His simple answer is that they’re unemployable. They feel that they’re entitled to a high salary straight out of college, have limited real world knowledge and ultimately are not just as valuable as they think they are. In the end, he chooses to employ graduates from other countries where their skills are more applicable, they’re willing to work and understand that it takes time to build up your employment value.
This is a subject that is close to my own heart as I often wonder where is the guy that’s going to replace going to come from. It probably won’t be a US, or Canadian graduate but is more likely to be somebody from a developing country and somebody that has probably educated themselves outside of the academic bubble.
My daughter is in Grade 4 and my son is in Grade 8, both at public schools in the Canadian system and their schools are well supported financial so have a good sprinkling of computers throughout the classrooms. However, there is a fundamental difference between what the schools, colleges and universities teach in computing and what industry actually needs.
For instance, many schools have a computing class where the content of the class is mostly based around how to use Microsoft Office. They’ll teach the kids how to use Word, how to use Excel and maybe let them play on PowerPoint. Firstly, I object to any educational establishment using any manufacturer’s software as it’s brain-washing just as much as Ronald McDonald is, the Happy Meal and other marketing tricks. Teaching kids how to use a word processor, spreadsheet and presentation system is a great idea but can be achieve in multiple ways today by using free software. Google has an online application suite which is probably even more suited to school use, but they need to teach the principles of the application, not the use of the application. Using a few different pieces of software and other operating systems would be the best education.
However, this curriculum is all about using computers and should really be part of normal education. Spreadsheet use should be built into the maths curriculum. Language classes should integrate word processor usage and maybe Art or Life Skills could adopt the presentaion software. We have a woodworking class that teaches tool usage and skill development. We also do the same in cooking, needlework and art class. We even introduce the calculator in the maths class so why do we feel the need to split computer usage from normal classes, we shouldn’t do it. Computers are ubiquitous in the workplace today and we need to integrate them into the school curriculum in the same way.
We can then deal with the real computer issues. Principles of programming, data storage, support, design etc. In most large enterprises the computer department is split into build and support roles. You could even take the ITIL framework as the basis of a real computing curriculum, one that takes the fundamental disciplines and teaches them to students.
Programming is not the be all and end all of computing careers. When I was at school I learned that I could be a programmer or a tape librarian. I actually ended up in support and then migrated into design, implementation, project management and finally as a consultant that specializes in infrastructure, strategic planning and operational aspects of technology. None of my skills are taught at school, college or university. My experience gave me my knowledge and I developed my own skills outside of the educational system.
I started programming at a very early age and had mastered Z80 assembly by the age of 16. At 16 I wrote an application that would analyze Z80 assembly by executing every instruction in a controlled manner and counting the number of T-states, time used. It would then give me a report at the end telling me how many T-states it took to execute the code and where all the time was spent, was it in the 8 bit arithmetic or the 16 bit stuff. I could then try the algorithm a different way and instantly know which option was faster and where I should focus my refactoring efforts. At 16 I knew nothing of profiling, I’d never read a single book on programming or computer design, I’d just gained my knowledge from reverse-engineering everybody else’s code and routines.
So when an employer refuses to give me an interview because I didn’t get my degree I find it somewhat abhorrent because I could do something at 16 that most computer graduates can’t do at 21.
This is the problem we face today in IT, our graduates are not an indicator of prowess or their applicability to the problems we face in business. The best IT staff are usually the ones that have taught themselves and have a passion for it because you’ll need to motivate yourself and keep yourself up-to-date. I have a range of certifications in Cisco, Microsoft, Netware and VMware technologies plus a couple of project management qualifications which were all attained through self-study. I even got my MCSE in 2½ weeks without using, or seeing the product — which is more of a damning indictment on Microsoft’s curriculum to be honest.
Therefore, I think if the universities are not going to tackle this problem that the industry will have to. We have to separate usage from design, build and support issues but we need to do this at the Elementary school level and then work up. We then need to introduce the ITIL disciplines at Middle and High school, builing on the knowledge in successive years and introduce programming at the same time. There are lots of roles and careers in computing today, universities only teach one — programming. And it’s probably at such a low level that it’s barely useful.
If anybody sits in front of me at an interview they better show some passion for their job and tell me about their outside interests because if you haven’t done something geekily crazy outside of your job you’re not for me. And I know I can find plenty of those passionate computer professionals in developing countries where people are happy to work a 40 hour week.
There’s nothing worse than getting a fresh college graduate at a desk that thinks he knows more than I do. Do you really think I learned nothing during my extra 20 years on the planet?