just coding?
a clear problem is that there are many different perceptions of what programming means. The definitions I encounter range from simply coding (in essence, working from a design, knowing how to convert a design into a particular language, to the entire life cycle). Lets look at those two extremes.
a clerical skill (Von Neumann)
John von Neumann poured scorn on the idea of tools like assemblers, because he did not want valuable machine time wasted on a clerical job. Today, computer time is a whole lot less valuable, so we can afford to waste some on making programming easier, through languages that do compile-time checking, and which have a convenient syntax. If assembling to machine code is clerical, how much more so typing in code in a high-level language? The real issue is how much comprehension is required. If a good detailed design is supplied, perhaps the comprehension level required is not too deep.
or the whole implementation cycle?
What then of the whole life cycle? Certainly here the skills required run a lot deeper. Just understanding what the client wants can be hard enough. Converting those requirements into a more formal form that can be the basis for a design is known to be a particulalry hard skill too. Design too is not easy. Implementation is possibly the easiest stage, assuming the design is good. Lets summarize skill levels for each stage:
requirements analysis
skills required here are deep and difficult, both in extracting user-level requirements, and in formalizing them
design (including algorithm, data structure analysis)
skills here are also deep and difficult, requiring abstraction, problem-solving, judgment calls and also deep knowledge of existing practice (possibly aided by modern practices like design patterns)
implementation etc.
implementation is not as difficult as the previous stages; later stages not covered here in a large project, like integration and testing, and maintenance, are likely harder than straight implementation
Programming Early Considered Harmful SIGCSE 2001 23 March, Charlotte, NC