We are often asked to plan: We are asked to make lesson plans; When I was a programmer sometimes I was asked to create a plan; We are told to ask our students to plan their projects.
However there is often a problem with this:
- As a programmer, I could not plan everything upfront. There is a lot of discovery in the development process. If we knew what we were doing then it was because we had done it before. If we had done it before, then it was a bug that we were doing it again (we should be reusing).
- As a student, I have been in a class room where a teacher has told students to plan / design a project, and that then after that they would be taught how to program it. This often does not go well, as students can not plan for something that they have no experience of. Teachers seem to think that this is the “Correct way to do it”.
Another approach is test driven development: Ask what next, Write simplest test that will fail, Write simplest code that will make test pass, re-factor if needed, repeat. This works most of the time. However, there are times when it does not. For example, the other day I was making an adding machine out of lego (my own design). Part of the build was tinkering and experimenting, but for part I stopped and wrote a plan. It was easier to plan on paper than as I went along, as mistakes could be fixed more easily (it is hard to fix an error in the middle of a lego model, you have to take it apart).
I seem to have an intuitive feel for planning (just enough, and just in time). However this is probably not a good explanation to tell others.
When students are doing project work, When is planning and high-level design a good idea? When is it not? How do you tell the difference? And how do you teach this to the students?
I work with pupils years 10-11 (age 14-16), and 12-13 (age 16-18).