Programming is hard[1] and the current state of software engineering kind of sucks and probably won't get better[3].

But that being said, there is a lot of joy in programming and problem solving.

I have a well-deserved reputation for being something of a gadget freak, and am rarely happier than when spending an entire day programming my computer to perform automatically a task that would otherwise take me a good ten seconds to do by hand. Ten seconds, I tell myself, is ten seconds. Time is valuable, and ten seconds’ worth of it is well worth the investment of a happy day’s activity working out a way of saving it. -- Douglas Adams[5]

From a purely business perspective, this project probably cost the company money. The programming, which was in a part of the system I had never looked at before, took something like a full day of my time including the code changes, testing, and deployment. [...T]he cost-benefit break-even point was at least several months out, possibly many years[.]

But the moral calculus was in everyone's favor. What is money, after all, compared with good and evil? If [...] the only cost was a few hours of my time, that was time and money well-spent making the world a better place. -- Mark Dominus[4]

While often programming is about "efficiency" or "productivity", if I ever forget the joy of reveling in a mundane or silly problem, twisting and flipping it to find a novel or interesting or satisfying solution, the rush of seeing your Rube Goldberg Mouse Trap-esque jalopy fire out the desired result, please pull me out of that hell at all costs.

Code Is Not Literature

Code is not literature, it is an activity. It is a dialogue. You don't read code, you interact with it, you study it, you poke it and see what happens.[7]

Code Is Art

Even at its most measured, software development is a creative profession and software is a creative industry.

The software industry has remarkable scope for what platforms to use, which programming language to write in, how you architect a project, and how you solve every tiny problem that the project is made up of. Because there are often many right answers to each question, how a developer solves a problem will always be a creative expression. It is not a single monolithic medium.[9]

The Seven Ur-languages[2]

From madhadron:

[N]ot all languages have the same set of patterns. The patterns for looping in C or Python are very different from the patterns of recursion in Standard ML or Prolog. The way you organize a program in Lisp, where you name new language constructs, is very different from how you organize it in APL, where fragments of symbol sequences are both the definitions of behavior and become the label for that behavior in your mind.

These distinct collections of fundamentals form various ur-languages. Learning a new language that traces to the same ur-language is an easy shift. Learning one that traces to an unfamiliar ur-language requires significant time and effort and new neural pathways.

The Language Doesn't Matter As Much As You Think

Is the syntax worth thinking really hard about? Does it matter how you have chosen to express your model of reality? Do the specific symbols in your toolbox shape your whole experience of work and life? Well, yes. Sure enough. But then are these things the crux of my actual problems? Well, no, not really.[10]


  12. Oldschool intro to programming books
Incoming Links

Last modified: 202212070116