October 24, 2013

CHIANG: Why You Should Be Working on Open-Source Software

Print More


One of my favorite pastimes, strange as it might seem, is to write open-source software (OSS). For readers who are not familiar with the concept, OSS is computer software that contains source code that has been made available for anyone to study, change and distribute. Much of the software that we take for granted today, including Linux, Chrome and Android, are developed in this fashion.

Regretfully, while many computer science majors I’ve seen are brilliant, few of them have ever taken their talents to the world of open source. But why would you, as a budding I.T. elite, want to work on open-source projects? Here are some of my reasons:

1. To grow as a software developer

Taking CS classes only gets you so far. The best way to become an outstanding developer — if not the only way — is to constantly write lots of code. Working on OSS brings many opportunities: bugs to fix, features to add, messy code to clean up … you can always find something to do.

What’s more, OSS is collaborative by its very nature. To contribute to an existing project, you will need to understand at least part of the codebase, which is written by people with different programming styles and different levels of expertise. This ability to understand other people’s code is critical in the real world. You will also learn to appreciate how hard it is to read convoluted, undocumented code, which motivates you to write code that is simple, clear, and well documented.

If you are an OSS maintainer, you learn even more. There will be people who contribute bad code with good intentions, and you will need to say “no” without hurting their enthusiasm. You will need to make major design decisions, engage the community and work very hard in general. But seeing people actually using your software is a feeling that is well worth all the effort.

2. Career opportunities

Obviously, becoming a better developer naturally leads to more opportunities, but working on OSS has some other good side effects.

For one thing, your resume will look better. Among hundreds of applicants who only write code for homework, you can stand out by having written software that has actually solved real-world problems. Indeed, my personal job-searching experience tells me that being an active open-source developer is a huge advantage.

Working on OSS even makes you lucky. Just a couple weeks ago, I got an email from a core contributor of a famous OSS. He stumbled upon one of my projects which made use of his code. He thought my project was cool and decided to get in touch. As it turned out, he was an intern at a hot startup to which I’ve been thinking about applying.  He got me in touch with the CEO of the company, and after some correspondence the CEO decided to hire me as an independent contractor. So, simply by writing interesting software and posting it online, I got a great career opportunity. This is the magic of the open-source world.

Still, the question remains: how do you start working with OSS? Think about what problems you have and start solving them. A code formatter? A web crawler? A website generator? I have worked on all of these. If inspiration doesn’t strike you, how about just browsing around Github and see what other open-source hackers are up to? That’s worked for me as well.

All in all, start small and code steady; eventually you will find yourself in the open-source wonderland.