ifacethoughts

Open Source + Buy + Build

JP is one of my favorite bloggers, he has the ability to gain insight into use of technology, and explain the problems, solutions and trends without getting technical. He rightly says that open source is an additional option today for building software solutions. Quite true, and this is something I have been pondering over for some time now in relation to my own process.

To think of it, I have now come to take the openness for granted. I easily get frustrated working with the proprietary ones when they cannot adapt to the needs and requirements, either because of its own constraints or lack of information, essentially fails to solve the problem. In fact, that is what I feel buying means. When we buy, it is not only about money, it actually about buying into someone else’s design and philosophy and investing in it. It is not feasible to make ground level changes after we buy something, which is what warrants some research in the domain. Note that, this buying is true even for the open source software that you choose to rely on.

Building software from scratch is a dream for programmers. That is where they can flaunt and exhibit their skills. Unfortunately, when we are looking for a solution, the programmer’s dream does not hold any significance. Building can cost a lot, again not only in money, but in time, effort and lost opportunity. If the development is not handled properly it can lead to a failure. So building software from scratch has its own cons, it demands deep knowledge of the domain as well as technology, good project management abilities, and insight into the balance of flexibility, simplicity and security of the software.

Open source can open up a lot of doors. A community around the product can provide a lot of information, and the openness can make things transparent making your research easier and quicker. Also, the open source code gives you a chance not only to customize it if you want to, but also free you from the vendor lock-in. It also lets thousands of other eyes and brains work on the code, who you can tap into for your questions. Of course this also means that many times you yourself cannot avoid having to learn some of what lies under-the-hood.

In some of my recent work, I have started combining all the three approaches - open source + buy + build.

  • Choose an open source tool for your work, whether it is a full-fledged product or a framework or a library or just plain block of code.
  • The moment I start using a tool, I have bought into it, with possible associated monetary transactions. This means that I invest in it and learn its philosophy, design, conventions and best practices.
  • Build over it, depending on what and how much you are able to use out of it.

As a software developer I feel that there are no common problems. There are common domain problems, but once applied to any business, which includes individual users, they become unique, as unique as the business itself. To be able to build an equally unique solution, the open source + buy + build has worked out much better than any of them individually. Of course there are exceptions, but majority of the times the combination works very well, whether it is done in-house or outsourced.

The key thing is to understand your reliance on the tools that you choose to use. If you are uptodate about how much you rely on these tools, you will able to evolve the solutions along with the business needs. Otherwise neither the combination nor the individual approaches can help.

Say your thought!

Who are you?

If you want to use HTML you can use these tags: <a>, <em>, <strong>, <abbr>, <code>, <blockquote>. Closing the tags will be appreciated as this site uses valid XHTML.

This is the weblog of Abhijit Nadgouda where he writes down his thoughts on software development and related topics. You are invited to subscribe to the feed to stay updated or check out more subscription options. Or you can choose to browse by one of the topics.