Brian,

An excellent observation. I think any exercise informed by design is going to be more fruitful than just whacking away at code without forethought or ongoing consideration. I tried to speak to this a few episodes back, when I shared my first career story. That was the nugget of value I found in my first mentor’s emphasis on design. Not to be confused with big dee, Design, which is, in my opinion, a whole other bag of angry, half-starved feral cats.

Little dee, design, in my experience is just what you described. Diagramming of some form, conversations, documentation. Techniques vary but the point to me is to understand the problem, including what parts you need to explore further, and to formulate a conceptual version of the solution. Big dee, Design, is where things like CASE tools and the UML come from, clearly related to simpler approaches to design but as far as I am concerned, just excuses for non-coding consultants and analysts to stay employed. I clearly have a bias towards design practices that are informed by coding, rather than conducted in isolation.

I think that ability to abstract the design, properly, and use it to guide and refine development may also be the key to multi-lingualism. If the only formalism you have to express a solution is the implementation language itself, well, then it follows that if you have to switch languages, the implementation concerns are going to get muddled with the design concerns.