Every software vendor will sooner or later face a question – if we should buy some third-party components or rather we should develop them with our team? It doesn’t matter if you’re a corporation or a micro ISV. That’ll happen. The question usually pops up when needed component isn’t something that can be called a company’s core business. When you develop brand new ERP system you just need a pack of UI components, a grid control for example. When you run micro ISV and work on your simple application you’ll need some graphics (and yes, I’ve just called it software component). In both cases that’s for sure not something you want to focus on.
Sometimes answer is easy – if you tried to prepare all the graphics on your own your application UI would probably look like a piece of crap. At least when you aren’t both skilled developer and skilled graphic designer. The case is to answer the question when both paths are available and reasonable. I strongly believe that in vast majority of situations this answer is “buy”.
One of my friends, I used to work with, was given a task to make some research in grid components. That time he was very good developer, but lacking experience. He took a glance on description of few grid controls available on market and said that he’d do it on himself in a couple of days. It wasn’t investment we couldn’t afford so he got his two days. Than another two. And another. After two or three weeks we made a little review. His grid looked like it had been made by rookie student. And I couldn’t say it worked correctly. I could hardly say that the grid worked at all. Of course a feature comprehension showed that it covered about one third or even less features that we could have out of the box from products available on the web. We would never invest much time to develop this component. For sure it would be a drag on our core development and it would never fully satisfy us with feature spectrum.
Creating every single component by you is like car driver constructing a car from a scratch. Hey, it’s quite funny when you do it for fun. But it won’t be business of your life.
Is that true for all cases? No. That’s almost always true when you create software for an external customer. If a customer is internal, especially when you yourself are a customer the rules are quite different. But that’s another story.