According to Larry Wall, the original author of the Perl programming language, there are three great virtues of a programmer; Laziness, Impatience and Hubris. Fortunately for the lazy developer today, it is often easy to forgo writing code yourself in favour of reusing existing open source solutions.
In fact, I’d go so far as to say that a developer's familiarity with open source libraries is one of the predictors of their likelyhood in successfully reaching production. But it is not just lazy developers seeing the benefits:
Almost all—95 percent, in fact—of companies will be using open source software by 2017 and the adoption of third-party open source code is increasing steadily.
I remember the first time I decided to look through the project lists for organisations like Apache, JBoss, Spring and Google, simply to see what they had available. I was blown away by the sheer number of established, tested, supported and production ready libraries. And I was humbled by the number of projects that I found that I could (should) have used instead of writing custom code.
Case in point: the Java programming language. A decade ago, Java was a language primarily used behind closed doors, something that big banks and other “enterprise” companies used to build all sorts of very geeky, very private stuff. But as GitHub’s data shows, it’s now at the forefront of languages used to build open source software.
Yet in my experience though, knowledge of open source libraries and projects is still something that is handed down from developer to developer, without any real recognition of the significance of this field. Like a master artist passing on the secret of mixing paints to an apprentice, the use of open source libraries often starts with a conversation like “in my last job we used [x] to solve this problem”.
I was recently tasked with writing up some guidelines for the selection of good open source libraries, and I thought I would share some of the selection criteria here:
Has the code been developed under the guidance of a reputable organisation (Apache, JBoss, Spring and Google are good examples)?
Does the project have the option of commercial support?
Is the project active?
Does the project have a good level of community participation on sites like StackOverflow?
Is there training available in the form of online documentation, books, courses or online tutorials with sites like Udemy?
So don’t be afraid to be a lazy programmer. With so much high quality code out there just begging to be used, why not save yourself some time and move the discussion about open source code from the water cooler to the board room?