The case for commercial software components

The case for commercial reusable software components is a strong one. Reusable components hit a real sweet spot: They solve genuine problems, whether it’s connectivity, GUI input or output controls, AJAX plumbing, reporting, data conversion, connectivity – tasks are that bread-and-butter necessities for modern applications.

Sure, developers can and do write one-off code to handle the drawing of a pie chart or the parsing of a file format – but that code take a long time to make and test. Even worse, you end up with something that’s brittle, hard to change, hard to maintain and nearly impossible to reuse.

Given how very inexpensive most software components are, there’s just no reason not to employ them. The question of whether to use or not use reusable components from commercial suppliers is easy, and the answer is, “yes.” But there’s nothing new there.

The hard question is, from which commercial suppliers should you obtain those components? Too few developers put enough thought into researching that question, using a simple heuristic (“the first I find that’ll do the job at a decent price”) vs. finding an optimal solution.

It’s not like buying a pair of tennis shoes, where buy whatever’s on sale, and if doesn’t work out, you’ll be buying another pair in a few months anyway. Unlike tools like IDES or compilers, software components actually end up being built into your application. They’re in the bits you push out to your server, discs you ship out to your customers. You’re not just using a component to solve today’s little problem to save a couple of your developers a few days’ labor. Instead, you’re outsourcing your software development.

Sadly, too many developers don’t realize this. They see an immediate need (“Dang! I need a 3D pie chart, stat!”), do a quick Google search, and download the first cheap component that touts the right buzzwords. Problem solved. Right?

Wrong. When a company chooses a component, it’s choosing a long-term partner in the component supplier, not a short-term fix — even if they don’t realize it. The component supplier is a company to whom you’ve outsourced part of your software development. What does that require? Trust. Stability. Credentials. References. A solid architecture. A solid business. Real support that you can count on next week, or next year.

Don’t choose components based on the number of bullets on a feature list, and don’t delegate the vendor-selection process to a coder. That’s not how your company should choose a long-term partner, someone whose code you’re going to insert into your own shipping products as if it is your own. Choose component suppliers based on a strategic partnership — that is, companies that you want to be in business with. That’s the way to leverage the value of component reuse within your organization.

Z Trek Copyright (c) Alan Zeichick