Will there ever be a point when it seems vaguely quaint to call oneself an application developer? Will knowledge of programming fundamentals soon be required, and assumed, in any job worth having—in the same way, for example, that reading and writing are taken for granted today as basic skills?
The investments we make in training developers, equipping them with tools and building IT environments for users should all be affected by what we expect to be the answers to these questions.
Other symbol-processing skills made the transition long ago from specialty to everyday ability. The title of scribe, for someone who could take dictation or prepare a written document, used to label a set of skills that could make a person a viable living. But scribe is no longer a job in any country thats advanced beyond having village letter writers. Are we on the way to similar assimilation of the once-lofty title of programmer?
These thoughts come to mind in the wake of the annual wave of questions I get every June about choices facing college-bound high-school graduates. When people ask about computer science as a major or software development as a career, I have an answer that I hope puts things in perspective: "Lots of people need software written," I say. "Lots of people also need to go places in cars, but that doesnt mean a drivers license is the key to a successful future."
The point Im making is this: When people need someone to drive them from point A to point B, they call a cab, but they dont think of the person behind the wheel as a highly skilled worker. Thats odd, in a way, because the skills involved in driving a car are significant and the hazards that arise from doing it poorly are considerable. The same is true for writing software.
We expect, though, that almost every adult will be able to master the skills of operating a vehicle. We dont attach much prestige, or award much in the way of compensation, to those who have merely that operators skill, with little added value to offer in helping us choose a destination or deal with threats en route.
Is writing an enterprise application substantially different from driving a cab?
If we look at many of the applications that people write today, and at the tools and environments used to do so, we see that the task looks a lot like picking up a passenger and asking, "Where to?" Component architectures like JavaBeans, combined with frameworks like J2EE or the .Net view of Web services, enable environments that almost draw a map of the places developers can go and the routes they can take. These component- and service-oriented environments readily display the functions that are available, and the connections that are meaningful, among business logic objects (such as Web services) and information assets (such as databases).
The productivity impact of tools like these is huge, but any given developer may be either holding the handle or receiving the blows of that hammer of forceful change. The mere technician may now be less needed by the person who owns the problem, even if the creative professional is now able to add much more value in a given amount of time.
Every field has opportunities for artistry. To make a wild guess, for every 100,000 cab drivers, there are probably a handful of Formula 1 racers who can push their enabling technology to new limits. There are master tour guides who know the places worth going. There are security-trained chauffeurs who can handle both unexpected emergencies and all-too-expected attacks. All these skill sets command the high price that goes along with the value that they create.
Tomorrows valued software professionals will be those who offer the same kind of expertise on top of the basic craft of writing code. If youre thinking about your own career, think about developing such mastery; if youre managing a development team, think about helping your people grow in one or more of these directions.
Technology Editor Peter Coffee can be reached at firstname.lastname@example.org.