6 advantages to using third party libraries over developing your own
You should always consider using existing software components instead of developing your own; even if you think that the latter would be much better. Here are 6 reasons why working with third party projects (open source or commercial) is usually a better choice:
– Domain expertise: Authors are usually experts in the domain covered by the library. This will ensure that you will get the most appropriate implementation. A good example is SharpMap. The main committers are experts in geospacial software.
– Stability: These libraries have the big advantage of being used by other people as well as you, and in many cases, hundreds if not many thousands of developers worldwide. Most of the early problems have already been encountered by others and fixed by authors. If they don’t fix them, it’s a good opportunity for you to contribute and give back to the community!
– Knowledge: You will learn from others’ code and design. Many popular libraries are written by top notch developers and are usually great examples of good coding practices and design. You will learn by just using them.
– Finance: You save tons of money. The equivalent of hundreds if not thousands of man days of work for free or, at the very worst, the cost of one man day for commercial libraries.
– Support: Paid libraries usually come with free support from top class developers that you can contact 24h a day. Many developers of free libraries also provide that level of support. Exposing your team to these developers will be beneficial for them.
– New features: They will appear automatically, without effort, in your product. If you are using the reporting engine from vendor X, and vendor X releases the new feature Y, you will be able to provide the new Y feature to your customer at no cost, with very low effort. You can consider the authors of your libraries as other teams working for you, for free or for very little money!
So, assuming that you are not an expert in the domain, don’t have thousands of users, have lots to learn from others, don’t have tons of money, will probably need support and resources are stretched, don’t reinvent the wheel. Unless you plan on learning more about the wheel.
Do you think NASA would have been able to send men to the moon if they tried to build the components of their rocket themselves?
You can leave a response, or trackback from your own site.
Actually there is a downside to using external libraries which is often neglected but can in fact have serious repercussions. It’s their unstable legal status. Many times when you read their license agreement it promises you a moon but then mentions “this agreement is a subject to change and you a priori agree to all future changes”. If you base you work on some free library which three years later decides to charge [heavily] then you’re screwed.
If there were a “frozen” version of the agreement like “it’s yours for all eternity” then their authors might enjoy substantially higher adoption rates.
I hope you don’t get mad at me for disagreeing with you, but I seriously think that as much as delegating your work to ready solutions brings great productivity boost, introducing an external dependency often brings with it a legal security risk. You have to watch for what you’re doing and if you can get away with your capabilities you’re better and safer on that road.
Thanks, I appreciate your comment. I personally believe those situations are very rare. Do you have an example of component vendor that turned badly like that? But reading license agreement is certainly a good advice. Especially for large corporations.
I suppose my remark is indeed more of a concern for companies than for individuals.
But look at it this way. There are quite a number of libraries and other sweeties like free fonts, icons, JS helper tools which are “free for personal use only”. Suppose you develop something interesting and one day it takes off. You would want to turn it into a business, at which point you will have to pay for the licenses or rewrite a portion of your code.
Anyway it’s not a strong opinion that you should never use external tools. The point is, there is a valid concern regarding licensing and for some reason many people choose to ignore it completely. It is wise to take it more seriously.