Today developers are pushed harder to produce results faster. This trend has developed due to the fast paced industry we are in, and the expectations of upper management. Expectations of today’s software programmers are to produce full applications with many semi-advanced features quite easily and quickly. However, this is not case with few resources and dead-lines to meet. It is very important to leverage from code already written and start coding the core functionality.

Alot of programmers when given a set of requirements will want to design/code their solution starting from scratch and not spending more time looking for solutions that already exist for their components. Countless times I have needed to write up something for clients, something quite complex, and coding it myself was a waste of time. By doing a few Google searches, I was able to find a stable solution with a good API.

For example, recently I was approached by my manager to develop an internal reporting system used to bill clients for our hours. This was not an easy task. It was very urgent to develop the solution, and it had heaps of potential to grow. The requirements were going to change rapidly, so I needed to make the solution as agile as possible. I never even thought to start from scratch and immediately started looking for PDF generators, CSV parsers, LDAP authenticators, and an ORM system to give me a head start on coding the core functionality.

Benefits

Save Time
Time is precious for anyone. The cost financially and attached stress to complete the component by writing your own code is huge. Time saved in using someone else’s code can be used to make your system more stable or a more accessible GUI.

Better quality code
A lot of the open source code out there is written by professionals in their field who have created faster, or visually more impressive code. As it will take time to gain knowledge in the specific components of your system (LDAP authentication etc.), why not skip that and just use someone else’s code?

Communities
The communities surrounding a lot of open source products these days are huge! All these are collaborative communities of people asking questions and people solving them. If you have a problem, most likely someone else has had the problem before too.

Disadvantages

Learning can be time consuming
Even tho you might use an open source solution for your problem it may require you to spend time to analyze the code to customise it to your liking. It can take a lot of time to understand the code and sometimes it is not worth using the code. This is not always the case, as usually open source projects have very well written documentation and cleanly commented code.

Project not active
Sometimes you will find exactly what your after and you goto the project’s homepage or the sourceforge project site and you find it hasn’t been active in 3 years. It can be pretty pointless as compatibility is an issue. For example, something coded up in PHP 3 will be usually useless if we only have support for PHP 5 (unless you rewrite most of it).

Resources

  • Google is your friend. Google often shows on the first page links to code or a discussion around the topic your looking for.
  • SourceForge - A repository for heaps of open source projects.

Of course it doesn’t mean that there always will be a open source solution for your problem. There are also cases where you should write your own code (legally, compatibility, scalability… etc.). It you have any other resources or open source solutions to add to the list above, drop us a comment!

Thanks.