Competition for jobs is intense in the recession, so how can computer science graduates increase their chances of getting hired? This was a topic of discussion at the recent Supercomputing Conference, where there was a specific focus on the gap between what HPC employers need and what skills graduates have.
Abi Sundaram is an intern at Intel and recent computer science graduate, and she was daunted by the industry’s wish-list of skills, which included specific language skills (ideally in two languages), an ability to reason about parallelism, experience writing a shared memory program, an understanding of how to predict performance, and experience writing parallel programs. There’s much more detail in Sundaram’s blog post about the whole session.
The gap between industry and education has come up several times before, including at IDF. Parallel programming is hard, and the view seems to be that there isn’t enough time in an undergraduate programme to teach it. And yet, parallel processors are the default for the desktop now, and massively multicore systems are in common use in industrial applications. The result? Today’s computer science graduates are unprepared to create programs that fully exploit the hardware available, even on a simple run-of-the-mill office computer. Normally you would expect the most recent graduates to have a competitive advantage in the marketplace, because they will have been taught the latest systems. It doesn’t seem to be the case here, though.
There is hope, as ever. Firstly, Sundaram said parallel programming was part of her course, which suggests the opportunities might be there for those who want to specialise at university. If you’re offered that option, it might be a good investment of your time. Secondly, there are so many tools available for free online now. You can get yourself a free (and legal) copy of Visual Studio Express, and experiment with the tools and paradigms I report on in this blog. Nowadays, you can create and distribute your own software relatively easily, or can at least create a portfolio of software to take into your interviews with large programming shops.
If you’re job hunting and find you have any spare time, then arming yourself with some parallel programming skills and a portfolio to demonstrate them could be the smartest investment you make. There aren’t that many parallel programming jobs out there, but good parallel programmers are hard to come by. Show willing, and maybe someone will give you the break you need.