Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I like how Frederick Brooks put it:

"""

Why is programming fun? What delights may its practitioner expect as his reward?

First is the sheer joy of making things. As the child delights in his mud pie, so the adult enjoys building things, especially things of his own design. I think this delight must be an image of God's delight in making things, a delight shown in the distinctness and newness of each leaf and each snowflake.

Second is the pleasure of making things that are useful to other people. Deep within, we want others to use our work and to find it helpful. In this respect the programming system is not essentially different from the child's first clay pencil holder "for Daddy's office."

Third is the fascination of fashioning complex puzzle-like objects of interlocking moving parts and watching them work in subtle cycles, playing out the consequences of principles built in from the beginning. The programmed computer has all the fascination of the pinball machine or the jukebox mechanism, carried to the ultimate.

Fourth is the joy of always learning, which springs from the nonrepeating nature of the task. In one way or another the problem is ever new, and its solver learns something: sometimes practical, sometimes theoretical, and sometimes both.

Finally, there is the delight of working in such a tractable medium. The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by the exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures....

Yet the program construct, unlike the poet's words, is real in the sense that it moves and works, producing visible outputs separate from the construct itself. It prints results, draws pictures, produces sounds, moves arms. The magic of myth and legend has come true in our time. One types the correct incantation on a keyboard, and a display screen comes to life, showing things that never were nor could be.

Programming then is fun because it gratifies creative longings built deep within us and delights sensibilities we have in common with all men.

"""



> Finally, there is the delight of working in such a tractable medium.

This is one important reason why many programmers aren’t very fond of AI coding. The relationship between prompt and LLM output is not very tractable.


I have to work in a very explicit, verbose language where we are expected to write mostly mock-driven unit tests to a 95% coverage standard. Although I would prefer to use a nicer language and adopt a more nuanced testing strategy, I find that for the situation I'm actually in, AI increases tractability by a lot.


Are you an enterprise Java dev by any chance?


Java has exceptions and can mock at runtime using reflection. Go is much worse. If you have glue code that calls 5 methods in sequence, you need to set up build rules to generate 5 mocks for the corresponding interfaces. And then if you’re like me, re-sync the editor so it picks up the generated symbols. Then you need to write 1 + 2 + 3 + 4 + 5 mock expectations for the 5 test cases to reach each error return branch. Oh and the mock expectation arguments are immune to automated refactoring because they’re all interface{}. So if you want to change the arguments of a method that’s implicated in a lot of test cases, lol good luck.

People get over this and even grow to appreciate it from the perspective of the production code, but from the unit testing side it’s been an unrelenting nightmare from the time I started using the language professionally ~10 years ago until we got Copilot.

It’s total slop. Perfect for the slop generating machine.


This is horrible, thanks.


also, AI coding is not coding to begin with: the AI does the coding... you might get to chime in, but this already means you've squandered a part of the coding to the AI, and not just the boilerplate part


I find it completely devoid of joy, the frustration without the satisfaction and growth.


> The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by the exertion of the imagination.

This is both a reason that programming is enjoyable, as well as one of the reasons it's so easy to end up with a giant mess that kinda sorta works well enough to get by.


If it works, it works


That was delightful. Thanks for sharing.


personally is the automation side of things, create something that saves me time and reduces errors, or invent some rules like unrealistic physics) and watch it all play out, even better when adding interaction and feedback, all the while breaking my head against the wall trying to debug or account for all edge cases,

it’s an awesome feeling


Wonderful excerpt. What's the source?


It's a section titled 'The Joys of the Craft', from Chapter 1 of The Mythical Man-Month:

https://home.adelphi.edu/sbloch/class/adages/joy.html




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: