I don’t teach “kids” — I’m a teacher in an adult upgrading program that offers adults without a Grade 12 diploma a way to get an equivalent qualification.

I’ve offered some students (and some of my colleagues) a lunch-and-learn that I call “Baby steps towards computer programming”, and virtually all that we do can be put in two categories:

- defining a problem
- creating an algorithm (and flowchart) to ‘solve’ the problem

With only a small number of “students” so far it is difficult to draw any conclusions, but it has been interesting to see adults challenged by well-defined (definable) problems like listing the factors of a number, or determining all of the prime numbers less than a number.

My belief is that (at least at this level) coding is trivial — anyone can do it fairly easily — the spec and the algorithm are where the work and the learning take place.

And there can be no satisfactory algorithm until you can specify the problem.

This, I believe, and not coding, is the real work of a software developer.