In thinking about how I frequently programs, once I have a plan, I work on one part of the project, and then ask myself "what's next?" That is, what is the next step towards completion.
It reminded me about a guest speaker we had a about a year and a half ago at one of our "professional development" days. For the past two years, our school has had "writing across the curriculum" as one of it's goals. While it's a laudable idea, I find the rationale for this goal to be poorly communicated to our faculty and the implementation weak at best.
Regardless, the guest speaker, William Zinsser, made a few good points.
The most important reason for most of us to write is to convey ideas or arguments. In short, communication. Many students have problems organizing and ordering their thoughts and as a result, their writing is all over the place. Zinsser simplified it to the following:
- What does the audience know?
- What do they need to know next?
This makes loads of sense, but here I was 40 years old and it was the first time I heard writing explained this way. What really struck me, however was that this concept wasn't new at all. Every ninth or tenth grader goes through this process time and time again.
Think about geometric proof. We have some given information and a conclusion we wish to prove. At each step along the way its:
- What do we know so far?
- What's the next step to get us closer to the conclusion?
The same can be said for program development.
Of course this makes tremendous sense since all thee things: writing, proof, and programming, are methods of communication.
Just something to think about.