Author’s Note: There’s been a lot of discussion on the value of open-source contributions as a hiring methodology recently and whether or not it unfairly discriminates against already marginalised and under-represented groups in tech. I won’t be throwing my two cents into that debate but Ashe Dryden’s response to David Heinemeier Hansson’s piece is worth a read if you’re interested.
Regardless of the merits of it, companies highly value open-source contributions. Especially the type of company that ambitious CS/CE grads want to work for. But students rarely have any under their belt. None, bar some exceptional top students, have the time or the guidance necessary to get involved in OSS. Writing OSS would give them an opportunity to be competitive with their Stanford/Berkeley/MIT counterparts. It would improve their skills, get them experiencing real-world engineering problems and teach them to work as team.
But OSS is completely absent from the vast majority of university curricula. Students are given grave warnings about plagiarism, and taught to hide their code. Assignments and grading rubrics aren’t structured in such a way to encourage maintainable, deployable or documented code. Thus code written for classes is never released, never made public. Students could go an entire 4 year degree programme without writing any code that was even seen by more than 5-6 other people. How can we expect top companies to hire our grads over ones from the MITs of this world when all they have from their 4 years is a piece of paper and possibly an internship?
My own university’s answer to this problem is to have a class taken by both 2nd and 3rd year CS students (you take the class twice). The class is split into groups, where the 3rd years take the role of project managers and the 2nd years take the role of developers. Groups are given external ‘clients’ to work for (read: companies). They work on a project for the client for a semester, and are graded how well they and their group performed at their job. Students get some valuable real-world experience. Great, right?
Nope. Here’s why:
The vast majority of the clients are disinterested. Understandably so, they’re busy people I’m sure and these projects are, again understandably, miles away from the critical path. Standards are low, everybody is aware that what you’re building will probably never get used or maintained.
Why the hell are we providing free labour? Why are students paying a university ever increasing fees to attend a course, only to be told to go work for someone for free?
The students have nothing to show for the work in the end. They’ve just written a load of code, only for it to be completely proprietary and thus unavailable to be released to the world to show off their skills.
There’s definitely a better way. I think the idea of a class where you write code for the real world is a good one. So let’s actually do it. Let’s write code for people who could actually use the skills we’ve learned. Enter charities. There are thousands of charities that need help technologically. They need websites, they need applications to manage clients, volunteers, campaigns and way more. We could build services on top of their databases to provide incredible value to the public and other developers. Why don’t we build them?
As clients, they’d definitely be interested. They work for their cause because they believe in it. The work you’d be doing for them could make a real, tangible in people’s lives and they know it. They’re not going to let you forget it.
They’d have no interest in keeping code proprietary, it doesn’t matter a single bit to them. Students can let the world see what they built and the difference they made.
Students would still be getting great real-world experience. I’d even argue that because the projects would actually be used that the programming, engineering and management experience they’d get would be orders of magnitude more valuable to them than what they get currently.
We wouldn’t lack for charities either. So many need help on this front and struggle to find the volunteers to help them. And as we build APIs on top of charities platforms we only increase the opportunity to take those and build really helpful services and products for people.
Having attending a hackathon in Facebook’s Dublin HQ for SpunOut recently, I’ve seen the incredible value that developers can add in just a day working on stuff that matters. I’ve also seen the great services that can be built on-top of a charity’s API.
People want to write open-source software. They want to volunteer and do some real good. Doing so would be of huge educational worth to them and make them more competitive and more employable. Why don’t we cut the ‘industry’ crap and do what’s best for everybody?