In this second article on career choices and job opportunities, we look at the advantages of starting a career by contributing to open source.
There are many boot camps and guides out there trying to sell you courses that will launch your career in technology. They promise to teach you valuable skills that are critical to marketing yourself as a great programmer. Interestingly, most of them focus on building your open source programming portfolio by means of hands-on projects. In this article, let’s explore what exactly it is that makes open source projects so important, and how you can launch your career by leveraging your OSS capabilities.
Evaluating technical expertise
There’s a famous story about Elon Musk selling a game he developed as a teenager for about US$ 500. There are stories claiming that Mark Zuckerberg started coding when he was 12 and created an internal network for his family called Zucknet; and that Bill Gates and Larry Ellison famously sold software they hadn’t even completed building, to their enterprise consumers. A common theme among these titans is a keen understanding of the technology they peddled to make their millions. Back then, it was enough for them to be able to speak authoritatively about the technicalities of their product offerings to be able to generate interest from the consumers and investors.
Today, with the learning curve for tech no longer being as steep, the game has changed. Working demos are now a prerequisite; and slides often don’t suffice. For individuals, demonstrating domain expertise is even more challenging today, given the need for concrete evidence of their talents. In a market where millions have ideas, with thousands actively pursuing them and hundreds having the networks that can get them an audience with the best agencies, it becomes incredibly difficult to tell the substance from the fluff without concrete proof-of-concept. The same analogy extends to recruitment, which seems to have undergone a massive paradigm shift into a structured process of elimination, especially for mass-recruitment of talent.
How has recruitment changed?
From being referred by a cousin’s friend to his uncle’s company, to actually being contacted by a recruiter on a messaging platform after a keyword search of your technical skills, we’ve come a long way with tech in recruitment. Over the years, the process has undergone a huge shift, currently producing extremely concrete reports of a candidate’s performance at each rung of the ladder. There are now tools and resources that allow you to not only practice the same problems that may have been posed to candidates earlier, but also be interviewed by the same people as part of mock sessions — for a fee of course! There are vast sets of problems with detailed solutions available that enable you to gather valuable insight into the interview process of specific companies. In fact, there is a popular book titled ‘Cracking the Coding Interview’ written by Gayle Laakmann McDowell, a former recruiter at top technology firms, who offers a detailed breakdown of this process.
The availability of all these resources has resulted in an interesting dynamic, which is the tech interview. More recently, there has been a push towards making the interview a more holistic evaluation through take-home problems and subjective discussions of problems as opposed to more objective patterns of questioning. But the aim of all of these processes is a recruiter being able to notice a particular candidate from among hundreds of thousands of applicants, and this remains a challenge. Enter open source, a one-stop solution for top-level decision-making on evaluating technical expertise.
How does open source relate to employment?
The demand for developers is high but fortunately (or unfortunately, for job seekers) so is the supply. This is particularly true for entry-level developer roles, because of the boot camps, online coursework and the access to resources that allow a non-technical user to gain technical expertise and turn into an active programmer. The problem for recruiters is to find candidates who can actually handle the scale, diversity and the speed at which teams operate, in order to successfully fill vacancies in both big companies and growing startups. The key for candidates is to demonstrate competence by successfully completing projects that are similar to what the hiring firm is looking for. This makes it much easier for their work to be evaluated and to check if they fit in a role, possibly at a larger project and in a bigger organisation. The candidate’s experience may not be too relevant, and the project not as big, but still, this approach is preferred to blindly picking candidates with no past experience working in the field.
What open source experience comes with is the idea that a candidate knows what it’s like to pick an idea, work on concreting it, implement it using a programming language, iron out bugs, document the code, make the work reproducible and extendable, and collaborate with a team. This is of huge importance as each of these are skills valued in the industry. It is incredibly difficult to find candidates that check all these boxes; for recruiters, there are always trade-offs to be made. This value that is intrinsic to candidates actively working on open source projects is why GitHub is such a valuable resource for recruiters. There is, of course, an argument against attaching too much value to open source profiles but, for the moment, we will hold off addressing that as it would be getting ahead of ourselves.
“What does open source mean to me?”
Open source is critical when it comes to applying for jobs. It offers a comprehensive breakup of the diverse expertise you have, to potential employers. A look at the projects that you have worked on can help build a rough picture of the trajectory you have taken while finding your way around technology. It is not easy to find a role you love, which is why it is understandable that software developers might switch roles and firms. However, an applicant’s exploration has to be driven by a reason and have a meaningful output. Since work-related projects are often proprietary, and hence not sharable with potential recruiters, open source projects are a means to demonstrate that you actually know what you’re talking about when it comes to leveraging a particular technology to build a solution.
More than anything else, it is about the reason you work on open source. The rest of this article does a good job of highlighting how important open source is to get you a job, but that’s not the real reason most people take up responsibilities on large projects with long-term commitments of their time without any monetary compensation whatsoever. A majority of the community thrives on the sheer goodwill that is generated by building and releasing really useful tools. It is the knowledge that there exists a portion of the world that implicitly thanks you for making their lives so much easier that actually drives some developers to make open source contributions.
Without people like Linus Torvalds and Richard Stallman, it is doubtful whether we would have ever gained enough advanced software-related prowess to claim that technology ‘can change the world’. Open source has been the backbone of all software-related progress; the easiest way to measure that is to note the times when GitHub went down, and then check what proportion of the tech universe could no longer continue with their daily workflow. I am willing to bet it’s more than half. That’s how important open source is in the tech field. Apart from the obvious personal benefits, it is worthwhile to contribute just as an appreciation of the efforts thousands of others are pouring into maintaining some semblance of transparency and goodwill in a world of tech titans that have recently been plagued by allegations of corruption, greed, negligence, monopolisation, abuse of power, and a failure of corporate governance.
Do companies actually care about open source?
Open source has been leveraged by companies in addition to individuals. To cite some examples, let us look at the recent corporate acquisitions. Long seen as a question mark, given the company’s non-committal responses on making its operating system open source, Microsoft saw the acquisition of GitHub as some sort of redemption, given its long-standing efforts to foster open source projects. In fact, GitHub has introduced the Windows Subsystem for Linux, leading to reduced overheads for software developers building multi-platform tools.
Google and Facebook seem to be at the top of their game when it comes to making waves with releasing open source versions of their tools. Tensorflow, Pytorch, Android, Chromium, React.js, and React native, top rank among numerous other interesting and wildly popular internal tools that got open sourced after being polished for use. Apart from that, they come with a suite of tutorials, examples, documentation and a host of community building efforts including talks, live tutorials, and conferences. Individual contributions are largely what drive communities, but having a company support you often accelerates efforts and helps projects grow through their initial phase. More than that, it sets them up for long-term survival — knowing Google and Facebook are backing frameworks makes it extremely plausible that these companies will ensure their relevance in the future!
Getting back to the jobs perspective, given the abundance of opportunities, contributing to company-backed projects may be a good way to attract some attention as a developer seeking a job. Of course, this is a long shot and would possibly require long periods of intense work reading the code base, reviewing changes, and eventually making a contribution. But it is not implausible given events like the ‘Summer of Code’ at which companies test applicants by assigning short timelines to complete them. This comes with additional mentoring for the specific projects by experts involved in them. It seems an ideal way to get started quickly — by making contributions. Most companies will look favourably at continuing those contributions and support your work should you make a strong case for it. Some go as far as to offer the role of a mentor for candidates that demonstrate enough expertise at the end of their stints. Sure, this works for summers of code, but in general, there is nothing stopping candidates from doing this at any point in the year. Most communities are happy to mentor newbies who exhibit the potential to turn into long-term contributors. So find an opening and take your shot.
The author has worked at Microsoft Research, CERN and startups in AI and cyber security. He is an open source enthusiast who enjoys spending time organising software development workshops for school and college students. You can contact him at https://www.linkedin.com/in/swapneelm; https://github.com/SwapneelM or http://www.ccdev.in.