What Attracts Coders to Open Source
Software engineers are generally considered to be a defiant bunch. Whether or not these reputations are legitimate, the stereotypical coder marches to the beat of his own drummer. He keeps odd hours, delivers projects whenever he sees fit, is socially awkward, loves science fiction and is rabidly loyal to the hardware, platforms, frameworks and languages that he prefers.
Not exactly the profile of a community-minded, pay-it-forward type of person. And yet, software engineers love to volunteer their time building open-source software. Generalizations and assumptions aside, the data says that coders do indeed contribute quite a bit to open source projects.
In fact, a recent study commissioned by Stack Overflow found that the average coder spends seven hours per week programming either for passion projects or working on open source software. About 70% of all coders spend two hours or more per week on side projects like these. This is no anomaly.
The attraction of open source to programmers cannot be explained solely as a way to bring down the establishment. After all, some of the most profitable multinational tech companies are heavily invested in open source themselves, using components to build their own products and releasing their own code for the world to enjoy.
So why is open source such a draw? Why expose yourself to the scrutiny of your peers like that? Why contribute to something bigger than yourself, bigger than your day job, just to help people live and work more efficiently? Why spend so many hours on tasks that are so thankless?
The Beauty of the Code
Those dubiously credible stereotypes would have us think that programmers are motivated primarily by their own advancement, but the depth of their commitment to open source suggests otherwise. Contributing to projects without pay? Isn’t volunteering one of the most defining activities of altruists?
One stereotype that is supported by the data, though, is the sentiment of ideological purism that is so deeply seeded in software engineers. Spend enough time with a programmer, and you’re likely to hear about the “elegance” of certain solutions or the “beauty” of someone’s code. If programmers are actually more intensely devoted to the pursuit of code perfection than they are to themselves, then involvement in open-source initiatives starts to seem like it might not be so odd after all.
Rubbing Elbows with Everyone
Dedicating one’s time to open-source collaboration means being part of a wider community of developers, one that is united by purpose. It’s a meritocracy without borders, where one can gain recognition for the magnitude and quality of one’s work. You never know what open-source passion project will eventually be adopted by the masses. No one in their right mind would have predicted that open-source products like Linux, WordPress or Ruby on Rails would emerge as the powerhouses that they are today.
What’s more, code collaboration and discussion platforms like Github and Stack Overflow provide opportunities for engineers to cross-pollinate with anyone and everyone, even superstars of the coding world – if you can take the heat, that is.
Standing on the Shoulders of Giants
Software products aren’t built from scratch anymore. They can’t be – there are simply too many components involved, and why reinvent the wheel every time? Open-source libraries have become pivotal building blocks of nearly all standard development. Here at Invoice Ninja, our own web app is no exception – we’re currently listing some 30 libraries and frameworks that we’ve leveraged to put together our product.
As a result of this reality, pretty much every coder who accomplishes anything significant today has – or at least should have – huge amounts of appreciation for those who originally developed these building blocks. The best way to express this appreciation? You guessed it. Pay it forward by making more and better building blocks for the next generation.
Strength from New Challenges
The grind of a programmer’s day job often involves solving the same problems over and over, working in a closed system with the same people, hardware and software configurations. There’s often little wiggle room for diversifying, experimenting and getting out of one’s comfort zone – the demands of business limit these opportunities.
By working on open-source gigs, coders get to encounter new languages, new types of products and new aspects of programming. It’s personal creative fulfillment and professional skill development wrapped into one.
Doesn’t everyone think that there’s always a way to do things better? Programmers who work with open source are the worshippers at the shrine of this principle, and many great technology companies now seek to leverage that impulse by releasing their software for the creative to have their way with.
Some of these companies have even set up companies with the sole purpose of managing armies of volunteer coders. By overseeing development projects, these communities keep track of the engineers, making sure that all of the work is worthy and effectively serves in the goals of project priorities. An overseeing community is hardly an invasive mechanism for micromanagement – rather, their purpose is to make sure that everyone is united with the same common goals and standards.
It’s clearly a win-win. After all, once you are part of a network, then you help out the people you’ve met whenever you can – and in these circles, that means when you see code that could use improvement.
So hats off to the people who are tirelessly helping to make Invoice Ninja the best product it can be. Together we’ll achieve invoicing software perfection – soon enough.
image credit: http://stackoverflow.com/research/developer-survey-2015#profile-sideprojects