[HN Gopher] The Beauty of Programming (2001)
___________________________________________________________________
The Beauty of Programming (2001)
Author : andsoitis
Score : 230 points
Date : 2025-09-24 04:51 UTC (3 days ago)
(HTM) web link (www.brynmawr.edu)
(TXT) w3m dump (www.brynmawr.edu)
| Animats wrote:
| (2001)
|
| It was more fun then.
| ctxc wrote:
| Agreed
|
| Someone would feed me, put me to sleep and change my nappies
| and I didn't have to lift a finger
| keyle wrote:
| Sure, 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 wrote:
| You actually often don't need it at work either, but everyone
| has been convinced that there's one right way despite
| workloads being different.
| m-a-r-c-e-l wrote:
| I'm still coding like it's 2001!
| colonCapitalDee wrote:
| 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.
|
| """
| 9dev wrote:
| That was delightful. Thanks for sharing.
| layer8 wrote:
| > 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 wrote:
| 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
| specproc wrote:
| I find it completely devoid of joy, the frustration without
| the satisfaction and growth.
| closeparen wrote:
| 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.
| edem wrote:
| Are you an enterprise Java dev by any chance?
| closeparen wrote:
| 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.
| adamddev1 wrote:
| Wonderful excerpt. What's the source?
| wgjordan wrote:
| 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
| wtetzner wrote:
| > 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.
| coldtea wrote:
| If it works, it works
| lencastre wrote:
| 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
| ge96 wrote:
| I miss getting lost in something, forcing yourself to stay up to
| achieve the vision
| jmclnx wrote:
| From 2001
| Krei-se wrote:
| I 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 wrote:
| This 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 wrote:
| A 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.
| lomase wrote:
| This days for joy programming everything I do is inside
| Picotron and with LUA.
|
| It is still a bit buggy, but nothing that a reset can't fix.
|
| https://www.lexaloffle.com/picotron.php
| wkjagt wrote:
| I got their Pico-8, and it really brought back the fun of
| programming for me.
| balder1991 wrote:
| This is so true. It's good to be reminded of it. Doing these
| kind of things is what keeps me interested in the field.
|
| These days I was interested in messing around with something
| different and went through rabbit hole of running FreeBSD in
| a VM. In an objective sense, it never had any purpose,
| neither I have any specific goal with it. From an outsider
| perspective, it's all just a waste of time.
|
| But it's these little things -- getting obsessed about making
| some random thing work (or trying until I'm convinced it
| won't) -- that makes me do things I normally wouldn't, and I
| end up learning unexpected things on the way. I'm now trying
| to map the holes in my terminal and UNIX tools knowledge just
| because of that, and it led me to read more details about
| UNIX history, GNU history, watch videos on these things, look
| for blogs etc. You never know where something like this will
| lead you to.
| MichaelRo wrote:
| >> At least I realized I loose interest in my side projects
| the moment they become a chore
|
| Unfortunately, any reasonably complex side project eventually
| becomes work. It's still useful to keep grinding, as it
| builds perspective on why things are built the way they are,
| even when you have "freedom" to to implement them any way you
| like. What you don't have is infinite time though so if you
| wanna actually be able to use the darn thing, you have to
| settle for an imperfect design which soon enough will start
| to show it's limitations but instead of rewriting, you keep
| duct taping if because something that just works today is
| infinitely more business valuable than perfect tomorrow.
| Particularly when you realized from experience that tomorrow
| still won't be perfect, just late.
|
| For clarification, I'm talking about building an automated
| trading system. And to get an idea of the complexity
| involved, just take a look at the "order" class in
| Interactive Brokers API. If you thought (side, price,
| quantity) is what defines an order, you're being naive:
| https://interactivebrokers.github.io/tws-
| api/classIBApi_1_1O...
|
| Also even when you start with a mindset "I don't need all of
| this, my stuff will be simple", as I said, over enough time,
| use cases pile up and your original "simple" design either
| has to give way or become "useless".
| Yokolos wrote:
| I think it's an incredibly spoiled perspective that
| anything that becomes a chore is no longer fun or worth
| doing. Practicing piano is a chore. Repeating the same
| piece, the same finger movements for an hour or two isn't
| necessarily fun. But it is satisfying at the end of the day
| and it is fulfilling. Fun isn't necessarily the goal. I can
| spend hours banging my head against the wall while trying
| to build a piece of software. It can be tedious,
| frustrating, and tiring. It's rarely "fun". But in the end,
| it's satisfying and it's fulfilling and tomorrow I'll do it
| again because I want to.
| 9dev wrote:
| > you keep duct taping if because something that just works
| today is infinitely more business valuable than perfect
| tomorrow.
|
| See, that's exactly what I was arguing _against_. Side
| projects are allowed to be for fun, they don't need to have
| business value at all! Not everything you do needs to be a
| hustle. Doing something for the sake of doing, not
| achieving, is a great way of honing your skills while
| relieving stress. Human minds are not built for KPIs, but
| experiencing the progress of making something to your own
| design.
|
| What you are working on seems genuinely useful, and if that
| gives you joy, all props to you. I however advocate for
| programmers that find joy in programming to work on a
| project far removed from any economic value, and just focus
| on the act of creating.
| signa11 wrote:
| from mr. oscar-wilde
|
| ```
|
| We can forgive a man for making a useful thing as long as he
| does not admire it. The only excuse for making a useless thing
| is that one admires it intensely.
|
| All art is quite useless.
|
| ```
| spacechild1 wrote:
| > 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.
|
| All my programming happens in the context of art (computer
| music and media art). I do all the things you describe while
| (indirectly) earning money with it. If you build something that
| you deeply enjoy, money won't take that joy away. I guess it's
| just hard to find this kind of satisfaction in typical
| corporate jobs where you're just a replacable wheel in the
| machine and your code will be replaced in a few years anyway.
| jibal wrote:
| > 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 wrote:
| >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.
| AnimalMuppet wrote:
| 3+3=2 in a modulo 4 ring.
|
| You say "who cares about that?" OK, 3+3=2 in a data field
| represented by only 2 bits. At least some of us here have
| actually run into such things.
|
| [Edit to add: And if you don't care about it in 2 bits, you at
| least need to know about that it can happen in 32 bits.]
| ctxc wrote:
| Damn that's smart, I read the comments wondering the same!
| markus_zhang wrote:
| Programming 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 wrote:
| Why bit shift >> ???
|
| Great i can admit here a day without having to interact with
| non-coders is a gift for me lol
| markus_zhang wrote:
| Haha that's greater greater
| cbsmith wrote:
| Why 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 wrote:
| The "3/4" in the text are actually emdashes. Clearly the text was
| AI generated, and then obfuscated to hide that.
| brabel wrote:
| The post was written in 2001.
| tonyedgecombe wrote:
| I wouldn't be surprised to hear the AI advocates promising
| time travel soon.
| gregfjohnson wrote:
| My 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 wrote:
| If you want to kill passion for anything make it your job
| m-a-r-c-e-l wrote:
| For me it's the opposite: if your job is your passion, it
| doesn't feel like a job anymore!
| 1dom wrote:
| May 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 wrote:
| One option is to become a freelancer, there you usually
| get a new project every 6-18 months in my experience.
| 1dom wrote:
| There's a whole categories of skills, abilities and
| problems that are never confronted if a person changes
| job every <2 years.
|
| Hot take: what if the rise in enshittification and crap
| tech is because good tech can only be produced with the
| hindsight of a stable tech career from a stable tech
| employer?
| distances wrote:
| That's a different topic though. This was about passion
| in coding for living.
|
| I don't think it's the employee's responsibility to stay
| in one company if the stability and in-house career path
| options are questionable, as usually is the case.
| m-a-r-c-e-l wrote:
| 47 now
|
| First company with 23, sold with 33.
|
| Second + third company founded with 36, sold at 46.
|
| I was the software engineer in the founders team, built
| alot by myself, even in the last years with a tech
| department of 30 people.
|
| After doing nothing for 1.5 years, I am back with a new
| startup, being the only developer. Because I love it, and
| I am good at it!
|
| It's my passion...
| bitwize wrote:
| If your job is your passion, and your downstream customers
| give you freedom to treat it as such, it can be fun.
|
| The fun gets sucked right out of it when you have people
| breathing down your neck waiting for your output, are
| _very_ particular about what they expect from it in a way
| that doesn 't align with your creative values, etc.
|
| Not all of us have a Lord Saatchi willing to bankroll
| whatever our brains fart out and call the result brilliant
| (likely to pump up its value to buyers). Matter of fact,
| that may just be what ZIRP-era VC can be conceptualized as:
| business model "Uber for Lord Saatchi-style patronage in
| tech".
| Sharlin wrote:
| I'm convinced that going for a walk, or staring out of a
| window, or browsing Reddit, or even taking a nap to let your
| brain work is an essential part of programming work and that
| should be understood by any employer. And employee.
| bronlund wrote:
| Nothing compares to the constant switching between feeling like
| the stupidest person on planet earth, to feeling like the
| smartest one.
| replwoacause wrote:
| Hold up...there's a smart mode?
| nuancebydefault wrote:
| For 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 wrote:
| Then 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 wrote:
| The 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 wrote:
| This 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
| gregfjohnson wrote:
| There 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 wrote:
| Totally describes my experience, since 1965.
___________________________________________________________________
(page generated 2025-09-27 23:01 UTC)