There is an order to a complicated task and as you become an expert the order of doing those things change.
A few years ago I put up some shelves in my house. At one point, I noticed that the order I was doing it in changed from the past. I stained, varnished and screwed the brackets onto the shelves and then screwed them to the wall. It was fast and confidently done. Whereas in the past I’d done it in a completely different order.
When I started out writing software I was very visually based. I’d start out by figuring out how the page looked, then wrote the template, then the view and then the model and then maybe tests. It wasn’t test driven development, it was “how my brain works development”.
I wrote a book about developing Plone and I wrote the book in a similar order. As it turns out I think a lot of the people who were learning Plone did things in the same way, perhaps its the nature of Plone developers or perhaps thats the natural order when you don’t know whats going.
As I did development more and more, one day I’d noticed I’d switched things around. My process had flipped and I had going the other way around. Starting at the “bottom” with the model and working my way up. Maybe it was “test driven development”.
Well lets face it, it is never that clean and simple. It’s really more like this:
Peoples order of doing things changes due to many variables: from how people think, to how experienced people are. When I did training I was amazed to see that in a group of a dozen people I’ll have a dozen different starting points. That’s because I had a group of developers at different levels with different experiences.
There was one person who wanted to dive down into the lowest code you could imagine, I was worried they’d never work their way up. Another who started at the templates and was doodling on a peice of paper. Everyone is different and everyone’s flow is different.
Of course I chose a flow for my book and other authors choose a flow for their books. But I think you can probably guess that people less experienced in the process start with the least abstract view first. Maybe, I have to prove that point.