Keeping Your Wits in the Candy Store

Build or buy -- sadly, those are only two among a myriad of decisions when you're looking at software purchases that'll be used to run your core business.

Here do I choose, and thrive I as I may!
-- Shakespeare,

Lately I’ve been spending a good deal of my time helping a relatively small consulting shop get its business off the ground. As part of this effort, we’ve been looking at a variety of different types of infrastructure software, from profilers to source code management packages to time-tracking software to document management systems. Of course, as developers, our first impulse in nearly every case is, “Hey, we could write that ourselves!,” but that’s seldom the smartest answer. Yes, you or I could spend all of our time developing the software that we need to run our own businesses -- but then, where would we find billable hours to sell to our customers?

In nearly every case, the smart choice when faced with a build or buy decision in this sort of situation is to buy. But even having made that decision, you’re still faced with a dizzying array of choices. There are literally hundreds of commercial and open-sourc, issue-tracking applications on the market. Given this plethora of options, how do you pick just one in a reasonable amount of time? In this column, I’ll share some of the ways we’ve come up with to make systematic software buying decisions.

Features First
Even as a small company, we brought a good deal of experience to the table: collectively, this team of under a dozen people had over a century of work in the field under their belts. This meant that for every category of tool (say, bug-tracking systems) people had used something in the past. Often, they’d used several different things in each category. And everyone had their opinions about which features worked, which ones were in the “must-have” category, and which bells and whistles sounded nice but turned out to just be wastes of time and money.

So, we started with an information-gathering process that concentrated on those "must have" features. This was done in part over lunchtime bull sessions, in part via e-mail discussions, and ultimately on a private wiki. For the most part, we conducted this part of the exercise in a spirit of brainstorming, with everyone being invited to contribute their ideas of what features would make the perfect tool and no one being allowed to say that someone else’s input was stupid. The exception was the company’s owner, Mr. Big, who reserved the right to pronounce some features absolutely essential and others absolutely not required. But since the funding for the purchases was largely coming out of his pocket, this seemed a reasonable part of the process.

The end result of these discussions was a wish list for each tool: a list of anywhere from ten to fifty features that our ideal tool would embody, preferably at a reasonable cost. To this point, no one had actually looked at any software (though most of us had our favorites in mind already).

Surveying the Landscape
While the group feature-gathering was going on, we also had one person working on gathering potential products to buy in each category -- for example, I hunted down time-tracking software while another employee was looking for issue-tracking systems. As a group we set some very broad parameters (we knew that we wanted to have all of our systems use SQL Server for data storage and run on ASP.NET for their user interface), and then we simply tried to find every single package that fit our respective categories within those parameters. While gathering candidate products, we didn’t worry about cost or features; the goal at this stage was just to find everything that was even remotely likely to fit the bill. We ended up with anywhere from five to 30 products to look at in most of our categories.

Build the Matrix
With a feature list in one hand and a list of products in the other, we could then each sit down to build a product matrix for our chosen category of software. This was a simple Excel spreadsheet, listing the products across the top and the features down the side, and with “yes,” “no,” or occasionally some commentary in each cell to show which features were supported by which products. We also added some information to these spreadsheets for each product:

  • Product name
  • URL
  • License type (commercial, GPL, or whatever)
  • Price
  • How recently updated
  • Overall comments

Building these spreadsheets was actually fairly tough. Getting started required reading Web sites, but then in many cases we had to download trial copies and read help files or even install the products to figure out what was actually supported, or swap e-mail with sales people (always a dangerous practice!). We also ended up modifying the feature lists a bit during this process. If one product heavily promoted a particular feature as essential, and our category expert liked the feature, he’d have to go back and look to see which other products also had the same feature.

Making Choices
You might think that after all this work (and it took weeks to get the feature matrices put together for the eight or so product categories we looked at) that making the actual decisions would have been easy: Just pick the least expensive products that covered all the "must have" features. If only life were that simple!

For starters, in almost no case was there any product that hit our entire list of "must have" features. In some cases, the discrepancy was so wide that we made notes of future business opportunities. For the most part, we went back to the bargaining table and talked about what we’d be willing to live without, and which pieces we could tack on ourselves with an appropriate use of batch files, scripting languages, spit, and baling wire. Products with well-defined extensibility APIs tended to score well with our crowd of developers, because we knew we could bend them to our wills (in our yet-to-be-discovered copious spare time).

Another factor that vastly complicated things is that the boundaries between products turned out to be very fuzzy. There were issue trackers that also tracked people’s time, customer portals that could also manage our internal documents, source code control software that would plug into the issue tracking, and so on. We had to make a whole series of decisions about whether to go for all-in-one products that might not do anything well, or single-use products that were best of breed but might not integrate as well. Ultimately, we chose the latter strategy for the most part - again, confident in our ability to hack up integration as necessary. For a company that wasn’t loaded with developers, I’d probably think harder about the integrated solutions.

Cost and licensing proved to be as important as features in some cases; there were categories where we literally had prices ranging from “free” to $25,000 for supposedly the same capabilities. While we were by-and-large disappointed by the open-source solutions we tried, we also didn’t buy a lot of “enterprise” software directed at people with large corporate budgets. There are quite a few full-featured packages for the midrange these days.

And finally, when the group as a whole had come to its best consensus, Mr. Big broke ties. Whether you let the one big boss do this or defer to subject matter experts in each category, I recommend you have some plan for cutting off debate and making a choice. Otherwise you’ll end up spending $5,000 in staff time to buy a $2,000 tool, which doesn’t make a lot of sense.

Parting Advice
Looking back after a couple of months, this process worked very well for us. But it wasn’t perfect. Evaluating software based on sales literature, Web sites, and single-user test drives isn’t a perfect substitute for actually using it. Despite our best efforts, we did end up with one package that didn’t scale to our level of usage, proving to be a complete dog when trying to use it with an Internet-connected database (despite the salesperson’s blithe assurances to the contrary). Fortunately, we had a good negotiator on our side and we ended up with a 30-day, money-back guarantee that we exercised before our 30 days were up. If you’re investing a substantial chunk of money and betting your business on a tool, I suggest you negotiate hard for similar terms. It’s good insurance, and reputable vendors will be happy to agree.

About the Author

Mike Gunderloy, MCSE, MCSD, MCDBA, is a former MCP columnist and the author of numerous development books.

comments powered by Disqus
Most   Popular