Most people, especially in Silicon Valley, are aware that there aren’t enough engineers graduating from college today. By 2020, the U.S. Department of Labor projects that there will be 1.4 million computer science (CS) jobs available, but only enough graduates to fill 30 percent of these jobs. What’s perhaps even more troubling, but frequently overlooked, is that the engineers who are graduating today often don’t have the level of real-world skills in CS they need to meet the requirements of open positions. Why? Put simply, being a CS student is very different from being a real-life software engineer.
This is just US (the estimates are from US Department of Labor). What is the situation in other countries like India and China where the gap between academic institutions and industry are wider? Some possible solutions:
- The Education system may be revamped to bring out better and more skill focused training (as some optional courses or as free training after graduation). This will be taught by very different people, mostly practitioners of the software craft.
- Several institutions may spring up to fill these skill gaps (MOOCs are the first iteration). Hopefully MOOC content can be used by others free or for a modest fee to create blended learning programs
- As the article suggests students participating in Open Source Communities. This is a great idea. However, open source participation is for people with a lot of initiative and there are knowledge gaps between what they are and how to make students aware of them.
- This is kind of meta, but we need to help people learn by doing. We need to teach them not only how to learn but also how to “Learn to Learn”.
- This is just not a problem for graduating students. It applies to practitioners who need to continuously reskill themselves in new areas in software domain.
CS is just one field, facing this problem. There will be others. Not all the training can be done at undergraduate or graduate level in educational institutions.