4 ms·
The Beauty of Programming (2001)
- Animats 1y ago(2001) It was more fun then.
- m-a-r-c-e-l 1y agoI'm still coding like it's 2001!
- ctxc 1y agoAgreed Someone would feed me, put me to sleep and change my nappies and I didn't have to lift a finger
- keyle 1y agoSure, but you can still program in C after hours and pretend like it's 1999 without any issues. Like someone else pointed out, you don't need kubernetes and microservices at home.
- BirAdam 1y agoYou actually often don’t need it at work either, but everyone has been convinced that there’s one right way despite workloads being different.
- colonCapitalDee 1y agoI 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. """
- 9dev 1y agoThat was delightful. Thanks for sharing.
- layer8 1y ago> 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.
- coldtea 1y agoalso, 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
- specproc 1y agoI find it completely devoid of joy, the frustration without the satisfaction and growth.
- closeparen 1y agoI 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.
- edem 1y agoAre you an enterprise Java dev by any chance?
- closeparen 1y agoJava 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.
- ge96 1y agoI miss getting lost in something, forcing yourself to stay up to achieve the vision
- jmclnx 1y agoFrom 2001
- Krei-se 1y agoI liked my programming at work, but i love the programming i can do now with 0 pressure and constraints. I can see every line and working function mirrored in my real environment and not being extracted by some outside owner. Then there's the free choice of hardware and stack, you never have to bend for some culture, styleguide or vendor lock-in. Blobs? coreboot makes your hardware feel like a living thing. Since then i stopped to think of programming as work and dreading it. It's the complete platonic realm of ideas dancing in very real electrons. Thanks for the article, it's a great reminder about how lucky one can consider himself and nice to see likewise minds. Forge on!
- skn3 1y agoThis is why you should program for fun instead of just for money. Sure its fun creating some interface for an API. Sure its interesting to figure out a problem some customer is having. Sure, it can be rewarding to create a new system as part of your companies product. But you know what is really fun? Creating something from scratch. Sculpting it. Refactoring it. Trying things. Cutting things. Learning things. Exploring new ideas. All of the stuff that typically doesn't fit well when money is involved. If you really want to reconnect with the pure art of programming, just start a hobby project. Burn that candle at both ends. Grind through the self doubt. Grind through the challenge. Just keep perusing that 1 idea. If you finish it, you created your own little universe. If no-one sees it, who cares? Art is a form of expression and so is programming.
- 9dev 1y agoA word of advice that you might or might not need to learn on your own: Don’t let all the habits from work creep in—dependencies, tooling, code style, neat documentation, multi-platform support, proper commit messages—and most importantly, any notion of "MVP" or "feature creep". Try to make an effort to get side tracked while you’re side tracked, do things that you couldn’t justify doing at work, the stuff no user would notice, the polishing that you’d always postpone, or the massively overengineered spec-compliant OAuth server in your personal book library. Nobody can judge you for it. There’s no deadline to meet. So what if it’s never finished? It’s cathartic to go as deep into the rabbit hole as you want, a freedom that your day job probably not grants you, and thus all the more valuable. At least I realized I loose interest in my side projects the moment they become a chore, and then I remember to tell Dependabot to go to hell again.
- jibal 1y ago> Mandelbrot just made up these arbitrary rules about this world that doesn’t exist, and that has no relevance to reality, but it turned out they created fascinating patterns. Er, no, that's not at all what happened. Mandelbrot was trying to model real-world observations like the length of irregular coastlines varying based on the scale of the measuring unit, and the growth and decline of pond scum populations. Also > As any mathematician knows, you literally can have a set of mathematical equations in which three plus three equals two. is quite wrong unless you're simply redefining the strings "three", "plus", "equals" and/or "two" to mean quite different things. > Remember the person in school who always got the right answer? That person did it much more quickly that everybody else, and did it because he or she didn’t try to. That person didn’t learn how the problem was supposed to be done but, instead, just thought about the problem the right way. That is quite confused and conflates several different things. > The story goes that the great German mathematician Carl Friedrich Gauss was in school and his teacher was bored, so to keep the students preoccupied he instructed them to add up all the numbers between 1 and 100. The teacher expected the young people to take all day doing that. But the budding mathematician came back five minutes later with the correct answer: 5,050. If this actually happened, I doubt that it took him as long as five minutes. And how does that square with "did it because he or she didn’t try to" ... surely Gauss tried to find a simpler way to calculate the sum. Also, Gauss had vastly more impressive achievements than this, although I suppose it depends on how young he was at the time. > A great mathematician doesn’t solve a problem the long and boring way because he sees what the real pattern is behind the question, and applies that pattern to find the answer in a much better way. Mediocre mathematicians do the same--I'm not even that, but I was on my high school math team and was routinely tasked with finding shortcuts to the answer. And great mathematicians spend their time creating (theorems, novel approaches, whole new fields of mathematics), not solving math problems (or calculating sums, which can barely be called math). But yes, programming is great fun and much of that comes from the ability to make things happen in the real world--that's why I switched from my plan to be a math professor to becoming a programmer when I discovered programming while in high school many decades ago. And now I'm retired and still program both for the joy of it and the pragmatic results.
- constantcrying 1y ago>is quite wrong unless you're simply redefining the strings "three", "plus", "equals" and/or "two" to mean quite different things. Which are the different rules he talks about. Obviously he does not say that all rules have to apply t at the same time. What a silly thing to interpret into his words. >That is quite confused and conflates several different things. It isn't though? It is definitely an experience I had during my mathematics degree. >If this actually happened, I doubt that it took him as long as five minutes. And how does that square with "did it because he or she didn’t try to" ... surely Gauss tried to find a simpler way to calculate the sum. Also, Gauss had vastly more impressive achievements than this, although I suppose it depends on how young he was at the time. The point he is making is actually pretty clear. Namely, that there is a distinction between a good solution and a great solution. A good solution takes the hard way and does all the right things. A great solution completely understands the problem and gives a solution so clear that after that you do not even see the problem. >Mediocre mathematicians do the same--I'm not even that, but I was on my high school math team and was routin If you ever have done mathematics at a university level you will have encountered exactly what Torvalds describes. In your homework you make all the right arguments, and through many steps you work through a difficult proof. In the end it is correct. When another student presents their argument or when you later go through some textbook, there is a deceptively simple transformation and suddenly the argument becomes a trivial case of a previous theorem. Suddenly the problem has disappeared all together. What makes a great mathematician is no doubt that ability. In fact if you ask a mathematician what makes a great proof it will be exactly this, taking something which looks incredibly complicated and suddenly transforming it into something incredibly obvious.
- deleted 1y ago[deleted]
- markus_zhang 1y agoProgramming is fun because in 99.99% of the time, the error is on my side, while the number is unclear when dealing with other humans. Computers >> interactions with non tech humans (unless they are dead and wrote great books or music)
- Krei-se 1y agoWhy bit shift >> ??? Great i can admit here a day without having to interact with non-coders is a gift for me lol
- markus_zhang 1y agoHaha that’s greater greater
- cbsmith 1y agoWhy did this get shared today, and why the excerpt posted on Bryn Mawr? Not complaining. I'm just wondering if there is some context I'm missing.
- auggierose 1y agoThe "¾" in the text are actually emdashes. Clearly the text was AI generated, and then obfuscated to hide that.
- brabel 1y agoThe post was written in 2001.
- tonyedgecombe 1y agoI wouldn’t be surprised to hear the AI advocates promising time travel soon.
- gregfjohnson 1y agoMy programming brain has two modes. One is playful mode, and the other is drudge workaday mode. 9-to-5 Monday through Friday is workaday mode. Other times are playful mode. As it turns out, I am a far better programmer in one of those two modes. It won't be hard to guess which one. In drudge mode, I may spend three hours some afternoon trying to force my way through a problem. No turning back, the clock is ticking! In play mode if I spend three hours goofing around with the exact same problem and it's kinda not happening, well, screw it. That was sorta fun, but let's goof around with it some more and try something else. BANG! Sweet clean obvious beautiful solution straight from Erdos' BOOK. The powerful sense of joy in the latter mode sustains my love for programming, but I wish I could convince my lizard brain that it would be OK, indeed far better, to stay in play mode and not get sucked into the dark doldrums of drudge mode during "job" time.
- incognition 1y agoIf you want to kill passion for anything make it your job
- m-a-r-c-e-l 1y agoFor me it's the opposite: if your job is your passion, it doesn't feel like a job anymore!
- 1dom 1y agoMay I ask approximately how old you are and what field you're working in? (Or, being passionate in?) I feel like this is not a realistic view to sustain in most modern tech environments, unless you love inefficiently producing ineffective solutions that just so happens to be profitable, or you job hop every 1 - 2 years.
- distances 1y agoOne option is to become a freelancer, there you usually get a new project every 6-18 months in my experience.
- bronlund 1y agoNothing compares to the constant switching between feeling like the stupidest person on planet earth, to feeling like the smartest one.
- replwoacause 1y agoHold up…there’s a smart mode?
- nuancebydefault 1y agoFor me programming is fun because it involves: - Relationships with people - Creativity You have to collaborate with people to fully understand the problem you are solving, and you can solve the problem in a creative way.
- augustk 1y agoThen there is the joy of making the program source code as easy as possible to comprehend. This motivation seems to be rather unusual among programmers unfortunately.
- Nevermark 1y agoThe Graph. Infinite, computational, abstract. I tried to picture clusters of information as they moved through the transforms. Time shifting through memory cells. What did they look like? Tesseracts, polytopes? Stellahedron? Were there monadic isomorphs, residual projecives? Both? Did continuations self-order? Into simplexes? I kept dreaming of an endless world of prime beings, I thought I'd never see. And then,... one day,... I got in...
- Noumenon72 1y agoThis is a reference to a Tron quote, which I heard in this remix of the Daft Punk song "The Grid" from the Tron soundtrack. https://www.youtube.com/watch?v=DdIdZwDqkmg https://www.youtube.com/watch?v=DdIdZwDqkmg
- gregfjohnson 1y agoThere is this wonderful concept of "flow state", which I'm sure most of us are familiar with. It was originated by Mihaly Csikszentmihalyi. Many of us in this thread (and Linus's essay quoted in OP) are referring in various ways of getting into the flow state while programming. Something I learned late in the game as a programmer is how beautiful it is when multiple people somehow sync up and get into a flow state together. It is like a choir, where everyone is somehow elevated and together they achieve a lovely unity. Or a sports team where all of the players are locked in, seemingly reading each others' minds, and getting to some amazing transcendent place together. The book "The Boys in the Boat" describes this phenomenon beautifully. When all nine members of the team achieve this sort of locked-in unity, the boat just flies across the water. In software, there are times when ideas seem to pass with electricity from person to person. People immediately build upon the thoughts of others. Ideas seemingly come from nowhere, a synthesis of the conceptual pieces held by each of the team members. You realize that some wonderful new way of doing things has emerged from the dialog, and no one person could have possibly gotten there on their own. There is a wonderful old-fashioned phrase that describes this: "The whole is greater than the sum of the parts."
- GnarfGnarf 1y agoTotally describes my experience, since 1965.