developerdotstar.com has captured an interesting and informitive collection of essays by Jack W. Reeves that offers perspectives on a single theme, namely that programming is fundamentally a design activity.
Some points worth pondering:
....programming is not about building software; programming is about designing software.
Given that software designs are relatively easy to turn out, and essentially free to build, an unsurprising revelation is that software designs tend to be incredibly large and complex.
We have long since passed the point where simple software is of much interest.
A program listing is a document that represents a software design. Compilers and linkers actually build software designs.
Real software is incredibly expensive to design. This is true because ... practically all the steps of a software project are part of the design process.
...you have not completed the process until you have written and tested the code.