OK, this week the Christian Science Monitor opined "Endangered Species: US Programmers" (subsequently reprinted by USA Today and Yahoo and causing quite a stir over on Slashdot) making it seem like everyone, everywhere is about to lose their job.
At the same time, my latest issue of Software Development magazine arrived in which this article (registration required) said that their survey of 49,000+ developers resulted in "Only 3% [citing] offshore outsourcing as a reason [why those who are looking for a new job are looking]". But I wonder if they were able to get responses from those who had already lost their jobs.
Combine this with various other industry trends and it's easy to why many programmers are scared, angry and frustrated.
On the other hand, due to the massive demand created by the belief in a massive value of software-driven business, many very talented but “under qualified” developers took on tasks they weren't ready for.
I do not mean they had no ability!
Rather, they were "under qualified" due to lack of experience not lack of talent.
The result was a cascading set of failures, many for reasons of financial incompetence, but just as many, if not more, based on undelivered promises caused by these "under qualified" developers.
In all cases, many people lost their jobs, many investors large and small lost fortunes and most importantly the software industry lost the trust of corporate management.
Now, let’s start thinking about this in a more objective way.
I'm a firm believer in the glass-half-full viewpoint. I believe we must increase demand rather than protect supply.
I believe that there is so much pent up demand for software that is not now being met that everyone who is now a trained software developer will be only a fraction of the workforce that will be needed…if we do the right things.
And that brings me to the point of this message. We can do something to create software that is more reliable, most cost effective to develop, and more consistently delivered. This will, in my view, help restore the trust of management and thereby create more demand for software and subsequently developers.
So, how, you ask, do I propose this can happen…
First, it's important to realize that this is a trend that has not stopped for more than 30 years despite the impression that the bottom fell out a few years ago. When software companies were young, we all coded in assembly language, worried about memory usage and register allocation. The next wave allowed us, with a period of suitable suspicion, to relinquish some of these concerns to the compiler and start building bigger and better systems.
While we still worried about memory management, most of us (and this is a critical point) no longer struggled with register allocation or argument passing mechanisms but instead concentrated on algorithms (i.e. solving problems).
The next wave is about to hit. This wave is Software Factories.
Contrary to some of the implications that might be ascribed to the name "Factories" this isn't in any way shape or form going to make developers into piece-workers but just like the shifts in focus I just mentioned, allow most of us to be more productive. Some of us still. to this day, write code in assembly language, worry about register allocation and so on. That number is, however, percentage wise, much smaller than it was 30 years ago just as the number of us that write in unmanaged languages is smaller than it was 10 years ago.
What Software Factories promises to do is to help improve the tools, techniques and technologies we use to build applications and systems. Just like Java and C# it provides new viewpoints from which to face the problem domain and provides, in the end, a range of results that run from completely generated systems (these will likely be a small percentage of the factories built) to interactive "guidance" systems (most of the factories) that allow developers who are early in their careers to produce professional results.
Imagine that a software architect could work with high level tools and, after working with domain experts, making decisions and developing options and constraints from various viewpoints, create a series of incrementally helpful templates, code, tools and guidance artifacts.
A less experienced developer, or one who has specific domain experience, could then build the application or system just as if the architect had the resources to work with them side-by-side.
Software Factories are not going to put developers out of business any more than macro processors, Pascal, Java or C# did.
What they will do is offer the promise of increased demand for developers of all kinds and increase everyone's ability to deliver on-time, on-budget and with better quality.
When we can do that, there will be work than there are developers to do. This will be true for both the short and long term.
So, don't count developers out just yet… regardless of where you live, more work than you can handle is coming.
Your opinions, as always, are welcome!