I used to be in the in-circuit emulator business, back in the glory days when developers routinely forked over $5k, $10k, or more for an ICE. Cross compilers ran $3k to $5k; licenses for RTOSes might start at $20k/seat plus royalties. Few engineers complained, their companies seemingly happy or at least resigned to spend large sums to get a product to market. For that was the way we always had done things, and there were few alternatives.
In the ICE business, at least, this has changed. Emulators for higher end processors mostly don't exist, killed off by their rapidly increasing costs and competition from other tools like BDMs and JTAG debuggers. Today most developers use these inexpensive tools that offer far less performance than an ICE. This blows my mind, since the problems we're solving today are far more complex, with much more code and a bigger real time component than projects of old. More code, more complex code, and less capable tools do you sense a disconnect here?
I'm big on automated source code analysis software. An example is Lint in my opinion programming without Lint is like riding motocross without a helmet. Also important are metrics tools, software that evaluates source code to find excessive complexity. We know that convoluted code is error-prone and maintenance-resistant; a complexity analyzer quantitatively identifies sections of source that must be simplified. (Here's a cool site with freebies).
A commercial version that gets great reviews is Programming Research's QA-C. Yet it's a $5k tool. Most developers recoil in horror when they discover the price.
$5k is a lot of $k. Add on top of that maybe another $3k to $5k for a cross compiler, a few thousand for a BDM with source level debugger, hundreds to thousands for version control, editor, IDE, and before long a basic development environment might cost $10k to $15k. Put ten developers on the team and the total tool costs exceed $100k, a lot of money by any standard.
And yet, the latest programmer salary survey shows developers earn around $80k to $90k in the USA (you have to register to get to this information, but it's not too painful). Loaded with benefits that approaches $150k per person per year. That ten person team sucks a cool million five from the organization. $100k to $200k for tools starts to sound cheap, especially when you amortize the cost over a multi-year project, or over multiple projects.
For some reason it's different on the hardware side. EEs routinely get logic analyzers ($10k to $100k), scopes ($5k to $30k), various signal generators, analyzers, monitors, schematic capture, PCB layout, and simulation. Back when I had a boss getting approval for anything from Tektronix or HP (now Agilent) was easy; software tools forget it.
What's different? Is it because EEs produce something visible, something management can see and fondle, whereas we're just cranking invisible bits? Or has the GNU movement convinced management that free is the norm?
Every day new software development tools appear. Some look pretty awesome; others actually are. The cost to develop code continues to skyrocket. It seems to me that anything that shaves just a bit off the development costs is a must-have.
Jack G. Ganssle is a lecturer and consultant on embedded development issues. Contact him at . His website is .