Imagine what it must be like to be an abstract-expressionist painter. You spend countless hours slaving over the canvas, applying all your creative talents and academic training to produce the truest expression of your painterly art, only to hear some gallery patron whisper, "My kid could do that."
Oh, but wait -- we don't have to imagine, because that's exactly what we, as developers, get all the time. It certainly doesn't help when we have representatives from major tools vendors telling us that high school kids could do our jobs.
Here's Todd Fast, Sun Microsystems' chief architect of enterprise Java tools, speaking at the recent JavaOne conference: "The definition of applications is changing, the common perception of applications is changing. As we see abstractions go up, we see more people able to participate, able to create applications."
There's a familiar idea. From batch files to scripting languages, CORBA to JavaBeans, 4GLs to drag-and-drop developer GUIs, tools vendors for years have heralded an age when programming is a thing of the past and computing is as effortless as riding a bike. But when Fast claims as a core principle that "high school and college students will take over your job," then goes on to assert that "engineers are an endangered species," I call merda taurorum.
Fast's thesis? Basic supply and demand. "There aren't enough of us [engineers] to actually produce the cool stuff that people want," he says. Traditional end-users, the so-called casual developers, will naturally rise to the occasion, filling in the gaps with mashups, widgets, and other Web 2.0 confections. The role of traditional developers will be to build platforms that "enable anyone to build applications on top."
But if engineers aren't building all that "cool stuff," it's probably because they're all busy doing actual work. Let's get real; I love diving into all the latest developer gizmos as much as the next guy, but three mashups, two RIAs (rich Internet applications), four RSS feeds, and a dashboard do not an enterprise application make.
People like Fast should talk to my pal Ted sometime. Ted is the manager of a Web-based application at a major health maintenance organization. When Ted's application doesn't work the way it should, patients and health care providers across an entire state have a hard time ordering durable medical supplies -- think wheelchairs, portable defibrillators, and oxygen tanks.
Ask Ted where he'd rank adding AJAX to his application on the list of deliverables for his next release cycle. Go on, ask him. Then describe for me the expression that moves across his face. You could write a haiku about it.
"Cool stuff" is a great way to sell developer tools. Compared to a graphically rich, AJAX-enabled mashup, a well-designed, properly normalized relational database schema that accurately models a business process isn't all that sexy. Neither is interapplication middleware that correctly implements security checks and limits as determined by Sarbanes-Oxley and HIPAA regulations. And building a consistent, well-documented, refactorable code base that observes appropriate design patterns and allows regular maintenance and expansion while minimizing business risk is downright boring.
Unfortunately, however, these are the issues and requirements that dominate real-world application development -- not AJAX hand-waving or RIA smoke and mirrors.
Web 2.0 won't spell the death of software engineers any more than the "check engine" light in your modern, highly computerized sedan did away with auto mechanics. What the "check engine" light does mean, however, is that you can no longer enter the workforce with two semesters of high school auto shop and expect to tinker on cars.
Likewise, it's time to put to rest this idea that we can ship our application development to China, hand it off to high school kids, or let business managers take care of it in their spare time, and still get quality software. Giving "casual developers" free reign to run amok among critical business systems is a recipe for disaster, no matter how good they are at building Facebook widgets.
For all of Todd Fast's hype and bluster, "cool stuff" isn't what runs the real world. Good engineering is -- and I think he knows it. When he's ready to put down his toys, I encourage him to take a seat back at the grown-ups' table.