3rd Party Components
Third Party components can both be incredibly useful and also a major pain to a developer all at the same time. These can range from frameworks like Angular, Ember, Bootstrap, etc.. to tools and visualization components like Full Calendar, Google Maps, d3.js, etc..
Something I struggle alot with as a developer is when do I write something myself to meet my needs vs when I should find something that exists and not reinvent the wheel and I have found a few things helpful to keep in mind.
1. Dont reinvent the wheel.
Odds are any problem out there that you will face has already been tackled by someone else in some form, so learn from their pain. If someone has created a great responsive CSS framework, for example, that meets 90% of what you will need to do then by all mean it should be considered as something you want to use given license restrictions, performance, etc... That work is done and if it is not over kill for what you need using it means you can focus less on duplicating what has been done and more on churning out awesome features for your end user.
2. Consider the Bloat and Time
So maybe you find a great tool that does what you want it to do, say Google Maps, and you want to use it. Thats great you certainly dont want to hand roll a mapping and geocoding service in most situations. Now if you are using a framework such as angular and you come across some angular based wrapper for google maps the tendency from the prior statement is that the work is done for you, so maybe it is worth using as well. This is not always the case. You are adding a base mapping tool to your application which meets the needs of your project, adding a middle layer to communicate it can be nice if everything works out perfectly, but it will add additional size to your 3rd party files. So the question is how much does it gain you and is it worth the bloat.
Sometimes, it is like in the case of angular ui’s bootstrap wrapper. It provides angular directives for common bootstrap controls and handles this very well. That leaves one less control for you to have to worry about most of the time.
Other times such as with the mapping example it may or may not be as correct. You have to consider what is the middle wrapper gaining you. Is it saving you an hours work, two hours work, a days work? If it is saving you time, how much time will your wrestle with it if it does not fully meet your use case. I have found in many examples that these middle layers are great for what the person or group that wrote it needed, but not for all my use cases. Generally in this case I would spend more time wrestling with it to get it the way I want rather than writing my own wrapper for what I need anyways. In this example Google Maps is not all that hard to work with and would only take a short amount of time to write a wrapping directive for, plus there are many great examples on how to do it online. The majority of the time when you write a component or tool yourself you will end up with something more narrowed in on your needs and therefore less bloated.
3. Troubleshooting and Complexity
So when I get past these first two considerations the next thing that comes to mind is how difficult will this be to trouble shoot should something go wrong. In the map example say you are trying to render a map with a few points on it and you get the map showing but all of the sudden your points are not showing on it. Well now you have to check your code, the calls to the mapping provider, and any middle layer you may have added. Where as if it is just your code you are more familiar with what to look for.
In addition while adding third parties can make less work up front stacked third parties can add update complexity. Take angular-ui for example. When a new version of angular comes out that you want to update to, you may have to wait until the version of angular-ui is updated to handle it. This can slow the ability to use new features or potential fixes for bugs and issues.
4. Consider why you dont want to write you own
Why are you looking for a 3rd party for your solution. If its to fix a large thing like mapping, charting, etc .. that can be reasonable. However, if it is because of fear of the unknown or tackling something new, maybe it would be worth trying it to learn something new yourself. The only way to grow as a developer is to challenge yourself.
Now with all of this said, I use many 3rd parties myself and they can be great to use. I have just more recently been giving pause to where and when I may actually need an external control vs writing my own












