The University of Queensland Homepage
School of ITEE ITEE Main Website

 what is programming?

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). Let’s 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. Let’s 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