The trouble with programmers...
is that the the first thing they learn is the syntax of the code language that they have blindly chosen to learn programming. It is also a solo effort; there's you and that infernal machine and may be a reference manual and a third-party book on the language competing for real-estate on your desk with the half-full cup of scummy cold tea and biscuit remnants. This all done in an evolutionary fashion. Design is, at this juncture, an amoeba lurking around the now itinerant programmer's mental ecology waiting a natural event to force it to evolve and become a significant factor in the survivability of our programmer. These natural events are always hard lessons.
A natural event may be the program not behaving as expected.
Is this natural event sufficient to nudge our shy amoeba to greater to complexity? Nope. Our programmer takes a sideways evolutionary step and debugs.
Debugging, the lazy and/or inept programmer's way of (not?) designing software.
Hey I like this thinks the hobbyist programmer, I'll go get a degree in Computer Science.
The programmer gets one.
The programmer now finds a job. Their line manager has given them a task which is to write code that fulfils a certain requirement, namely get this done by a so-and-so deadline. As an aside I've never met a line that is truly dead; nor have I seen a definition of this term in a business book.
So our heroic programmer writes the code and debugs as was custom as a hobbyist and as it seems to work it gets released in to that wild and unstable tribe callously named 'the users'. The line manager is pleased - I'm a good manager as I got the product out on time. He notes that he will be able to go to that programmer and ask for more of the same. The programmer obliges reinforcing the not too distinct instinct that this is how programming is done in the professional arena. The programmer gets a promotion of analyst/programmer or more pretentiously software engineer. What about that degree. learning all that so called life-cycle stuff, requirements, specifications, designs and testing? Transform analysis? Formal methods? Collar and tie job! This company seems to think it all expensive nonsense.
So what was the purpose of all that effort for my degree?
In time the programmer gets bored or more likely cynical, stressed and pissed-off.
I'm off to further my career and more money. The programmer goes to another company having gone through a most diabolical regime of IT recruitment agencies and interviews. The interview for this company included IQ test(s), coding test(s) answering questions from programmers, managers and HR people. They must be a really good company to work for to be so careful in their hiring process and I passed it! It's a good job they didn't ask about design and all that! I was a bit taken aback when they said they didn't have source control software though, when I asked about it. Must have some other great method.
The programmer sits down at their new, posh desk and starts to look at the product code. Their jaw mimics a snake's in the process of swallowing a pig. Their eyes widen in a helpless attempt to compensate for the fact that the 90cm monitor cannot widen in same manner to show a function in all its obesity even in a 2-point font. 600 lines?
After a few hours more of such an exciting and exhilarating journey the programmer then shout's to no one in particular - "Who wrote this crap?! Where's the design?!"
The amoeba stirs.
What is a design? Is it the product of designing? What is designing? What is the purpose of designing and the design?
Is code a design? Aha! The programmer's brain, latching on to this straw with all its coding and debugging might, says yes. The amoeba goes to sleep again. All is well.