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.
The courses available to most CS students teach important software development practices, but because they’re designed around the typical classroom model of education, there are many aspects of the profession that they can’t convey to students. Unlike in the classroom, real-world software development projects are larger (in timeline and size) than the ones students encounter in class. One must also gain an understanding of some pretty substantial pre-existing code bases in order to be productive. What’s more, in the real-world, project management and interpersonal relationships can have as much impact on software design as technical issues, and systems are ultimately evaluated by user satisfaction rather than technical merit.
The best solution to this problem is to combine the valuable foundation of university CS education with the practicality of real-world work by connecting students to the open-source community.
Working on open source puts CS students at the heart of the software industry. Open source enables everyone involved to work in development and create new infrastructure and designs without being forced to start from scratch. And unlike in school, where a project might just be theoretical, or relevant only in context of the class, an open-source contribution makes immediate impact on the ecosystem.
Making it easier for students to be active contributors to the open-source community is key to preparing them for professional work and helping them to realize sooner the impact they can have on the world.
The best way to incorporate open source into the classroom goes far beyond just encouraging students to hone their skills by participating in the community in some way. Rather, it is formalizing curricula that brings together teachers, students, and the seasoned veterans that maintain popular open source projects, such as MongoDB, Mozilla Open Badge, Ruby on Rails, SocketIO, and others. This approach, adopted by several universities today, has proven to have success with the following benefits:
- Access to experts: No CS professor can be an expert in every open-source project. As such, bringing project experts into the educational process ensures students receive the best instruction and feedback on their work. For example, fixing bugs in open source projects is difficult, as most of the ‘easy’ bugs are already fixed. Working to fix a “hard” bug under the instruction of an expert provides invaluable experience for a student that wouldn’t be taught in the classroom.
- Teamwork: students working on a project, like Ruby on Rails, do so as a team to tackle initiatives assigned by the expert. This type of teamwork is essential experience that is often left out of college curricula, as it can be hard to grade an individual’s performance.
- Making a difference: the open source curricula approach gives students real-world experience working on bug fixes and other initiatives that truly advance the state of the open-source project.
- Focus: perhaps the most important aspect to this is enabling students to focus on a particular project to build a skill set applicable to the real-world today. Just as a ‘residency’ for medical students requires them to apply what they have learned in the real world before becoming doctors, CS students working on a particular project are applying their skills and carving out invaluable expertise.
Beyond the educational benefits of bringing open source into college curricula, there is a spirit to open source that is addictive. We’re collaborative beings, and open source is collaboration without borders, at scale, and with focus on changing things. I believe the future of CS education is a classroom without walls to enable students to be better trained for the jobs of today.