I don't think we are particulary opposed to purchasing software. But there are some factors that make it harder to sell software tools.
Market Size - Most software tools are dedicated to one environment, say "the best charting tool for MFC". How many shops do something with charts in MFC?
Payment Fixed Cost Every purchase holds a fixed cost. So whether it's $9 or $900, slap on it another $100 for figuring out the right licence, convincing your boss that it's cheaper to buy, whip out the company credit card, filling in the order form, having someone check the credit card statements, keep track of the licence key somewhere, etc.
Together, these two points pretty much forbid cheap software tools that recover implementation and maintenance cost.
Technology Lock-In Rarely a software tool runs standalone, rather it gets integrated with other tools sooner or later. Only then you find out if the tool is right for you indeed. When you find out it isn't exactly what you need, you have already invested development time and modified workflows to use this tool. Also, you often can't easily go back, sicne you are now relying on that functionality.
Of course, this problem exists for beer-free tools as well, but there's not much reason for buyers remorse if you didn't pay anything.
I could do better: Every tool I used is lacking in a certain regard. That's especially frustratign for a developer, because he could do better! Then he might see the code base, shriek, and say "I could do better". Thus, another homegrown, incomplete tool is born. The final cost is much higher than bearing the kludges of the commercial one, but the cost is spread out and we have the feeling we achieved something.
The OpenSource Dilemma: If I am going to build on top of a commercial tool, I better get source code. After all, even with the best support the vendor may go down. After all, I've seen glaring bugs go unfixed for years. Yet, there is no universally functional business model that combines making money of my code and giving away my code.
Thinking in code: Many developers think of cool things they could do with X, rather than thinking about why that would be cool and what other X'es you'd need, too. Many of the smaller products are API-Centered rather than task centered: there are many tools based on VirtualQuery
, and many tools based on HeapWalk
, yet there are few that combne these.
Why I do buy Software Tools
I know that deceptively simple problems, such as writing some lines to a log file, aren#t, in fact, simple.
It's not my job. Joel is right when he says outsource everything except your core business.
I get support. Because, you know, fixing that bug is not my job.
I get source code.
I get solutions, not just tools.