As the field of software development becomes more professionalized and the software development process becomes more formalized, there is a growing belief that the front-line programmer's job is becoming---or must become, out of economic necessity---de-skilled.
In this paper we show that essential aspects of the programming activity involve skills that have not been eliminated by progress in the field. The programmer's task does evolve with new tools and methods, but the essential skill---making rational tradeoffs in the presence of an abstract model---remains.
Full paper Available as Technical Report CPSLO-CSC-02-01, California Polytechnic State University, Computer Science Department, October 2002..