I'm with Andy on this.
There are so many ingrained patterns of bad practice in so many fields.
I think we need to stop thinking of computers as idiots and start respecting them as massively complex machines. Thinking about parallels between writing instructions on how to make a cup of tea and implementing a complex digital system verges on insanity.
Object orientated programming was a great start at enhancing the role of system partitioning in design but far too few developers know how to use it, and far, far too many confuse objects as variable containers rather than behavioural repositories.
And whilst I'm on the subject of variables...
Imagine the look on a Chartered Accountants face if someone took an eraser to the books and reduced the total every time sales went down?
Variables as a fundamental store ( rather than an optimisation of the reflection of current state ) are fundamentally an anti-pattern in programming. Storage is huge now and transaction logs deserve to be treated as a fundamental first class citizen and the principal storage of state.
The fundamentals of software design should involve data life-cycle management, system partitioning, HCI, and the interactions there-of.
Now... Back to the Port and Cheese.