| There used to be two professions that we call programming today: Systems Analysis and (unsurprisingly) Programming. Arguably the systems analysis bit was the more interesting of the two, it is the one that I would equate with architecture, and to some extent (but certainly not as much as some would) art. The other part, the programming part is best equated to engineering and construction. I find I go through exactly those two phases when making something new. The first part I love to do it's where all the interesting bits are, the problems get solved. By the time I hit the second phase, the joyful part is over, from there it is just typing stuff in and realizing the vision that I already have in my head and debugging stuff. Rarely (but it does happen occasionally) do I get back in the 'fun' bits while coding something. That would mean I've made some terrible oversight during the analysis phase. The analysis phase sometimes also includes some programming, it is where you come up with nifty little programs to test your assumption and where you let your inspiration go wild in order to see if you can solve the problem in an interesting way. That is the most joyful kind of programming that I know, it is on a white piece of paper without any kind of connection to the real world of data processing. This is were algorithms are born. I love doing that. The rest is just plumbing and brickwork. |
I've also found that almost all the interesting stuff is in the stuff upfront where I'm sketching out ideas on a notepad - roughly how things will work together, what the running time of different approaches will be and how it will scale, the user flow and interaction, and getting down the trickier algorithms to become reasonably sure that the main idea is feasible.
The rest really is just plumbing and brickwork. It seems like a lot is written online about the different ways to lay bricks, but I've never really felt that that was very interesting, except for resulting reductions in time spent bricklaying. Sometimes it's fun playing around to make extremely abstracted code, or some other challenge, but for the most part, it's pretty repetitive.
Thanks for expressing it, I didn't realize that the cool part used to be a distinct profession.