|For novel ideas about building embedded systems (both hardware and firmware), join the 27,000+ engineers who subscribe to The Embedded Muse, a free biweekly newsletter. The Muse has no hype, no vendor PR. It takes just a few seconds (just enter your email, which is shared with absolutely no one) to subscribe.|
By Jack Ganssle
The Commoditization of Software Development
In the early days of computers software development was an arcane art, practiced by people manipulating binary digits with few tools on machines with woefully inadequate resources. These early practitioners were generally mathematicians or physicists, but the limited resources of these machines meant their programming work was highly creative and in a sense artistic.
Later high level languages and associated tools brought computing to the masses. During the 60s BASIC allowed even non-programmers to create programs that actually did useful things. Professionals used the improved technologies to create a more rigorous discipline that helped control the development process. Given the right mix of tools and techniques, the reasoning went, software development could become predictable and repeatable. Many successes bolstered this belief, though today still too many projects are brought to market by heroics. Of course, most of those methods expected that requirements were stable; customer changes destroyed the process.
That expectation was rarely realized. Requirements do change, often at breathtaking speed. Big Up Front Design just can't deal with this, so now some of us are returning to the programmer-as-artist metaphor. Agile methods rely on small but highly focused teams, all composed of extremely bright and unusually competent developers. Obviously, cherry-picked teams will perform well in any endeavor.
But the method zealots and artists are all working on unstable tectonic plates that are shifting the software development landscape away from their highly-paid mastery of the art.
Our software is meant to fulfill an economic need, but we've not done a good job at keeping costs reasonable. Firmware is an odd thing; it has essentially no physical manifestation, yet it's the most expensive thing in the universe. Unfortunately the costs are such that management is looking for alternatives, and has found some. Outsourcing is one case in point.
Outsourcing is a new vision of programming that transcends both the artistic and process models. Management increasingly sees software development as a rote task that can be farmed out to the lowest cost provider. Many successes only confirm the front-office's view that developers are simply commodities.
It's easy to see why management is drawn to the seductive siren song of outsourcing. Software costs are spiraling in step with escalating demands for more product features. But sending work overseas is really just a symptom of the commoditization of software engineering.
www.rentacoder.com is another alternative to high-cost programming. A veritable army of inexpensive developers located all over the world will create software for a pittance. Buyers post problem descriptions and coders (not, mind you, "software engineers") bid for the work.
Here are two examples:
Need a strong ASP programmer to fix an error in our Mail Sending form script so it actually works. Max bid $20.
I have a html file that passes data to a php script - -that data is written to a mysql db and is supposed to be passed to a perl script. Its not writing to the db and the data is not passing into the perl script -- should be a quick fix. - Max bid: $5
How many of us would consider doing anything for $5? Yet coders swarm over these projects.
Rentacoder buyers include students contracting out their homework, small companies unable to deal with tricky web scripting, and even consumers who want a simple application - or even an Excel macro - to ease their daily work. Some embedded projects surface on the site, though, interestingly, most fail.
It's a cool concept, in a way, which for the first time let's the average Joe get custom-tailored applications for unbelievable prices.
But rentacoder is the Wal-Mart of code. I might not like Wal-Mart for the effect the company has on wages and small competitors. But it's hard not to shop there. Ditto for rentacoder - given a small little project that's too much of a nuisance to develop in-house, why not post it on the site. for 5 or 20 bucks?
The outsourcing phenomena and the rentacoder model suggest that, in a limited way, developers are merely interchangeable commodities doing piecework. Perhaps the supply and demand curve has flipped in favor of software consumers. But clearly these signal a new zeitgeist in this industry, where the artists and process devotees of yore are replaced by a flood of cheap and reasonably-competent programmers.
What do you think? How will rentacoder and offshoring change our business and careers? Are you taking any steps to insure your career?
(Side note: Join me at the Embedded Systems Conference at the dreadful hour of 7:15 Tuesday morning, March 30th, for a Shop Talk where we'll discuss "The Future of Engineering in an Offshoring Economy.")