What is Programming?
- 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.
- a clerical skill (Von Neumann)
- 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
- requirements analysis
| Programming Early Considered Harmful SIGCSE 2001 23 March, Charlotte, NC |
