Hacker News new | past | comments | ask | show | jobs | submit login
How can you not be romantic about programming? (2020) (thorstenball.com)
552 points by _zhqs on Feb 20, 2021 | hide | past | favorite | 357 comments



I am deeply, deeply romantic about programming. I consider it an act of self-actualization.

But answering the question literally, I am not representative of everyone in the industry, and that's a good thing. It's easy to feel romantic about your vocation when you have a number of reasonable options for achieving modest financial security, and you thus had the privilege of choosing the one that most closely matched your idea of self-actualization and self-identification.

Not everyone in this economy has the same set of choices. For many, programming is the lowest-risk way to put a roof over their head and feed their family. We can make up little myths about how we romantics are obviously more passionate, work harder because it's our dream, are more deeply engaged, and so on.

But in the end, I think we'll find as we look around that those of us who feel romantic about something that is also an excellent way to make money at this particular place in time and space have won a lottery of sorts, and are definitely in the minority.

That's not a bad thing.


> For many, programming is the lowest-risk way to put a roof over their head and feed their family.

It seems that to some extent the romantics are actually indebted to this cohort for pushing forth the ideas of fair compensation and fighting for workers' rights, because people who are passionate about their work usually end up getting taken advantage of.


Game Development is an example of what can happen when there are too many people passionate about their work. I'm not saying that everyone in that industry is taken advantage of but it's a lot more than the broader tech industry even though there's a lot of overlap between skill sets.


I would like to say that while this is definitely still a thing it has gotten better in recent years.

There has been a big push against crunch and there are more and more studios with a focus on work-life balance.


It should be noted that one of (if not the) biggest game release of all time this year, CP2077, was built on the back of terrible working conditions and months of crunch.


And yet we also see death threats against developers who delay games.


the recent emergence of many quality games from china might start reversing that trend thouugh...


My own writing on the subject of this industry falls into two pretty cleanly divided piles:

The writing about programming itself is "impractical" and "romantic," because that writing is for those who have an affinity with the "romance of programming."

The writing about getting a job, negotiating compensation, shipping products, hiring programmers, &c. is practical, because that writing is for everyone.


What is the difference between practical and romantic? Musashi wrote a book called The Book of Five Rings, which is as romantic as the name suggests, but half the book is an if-else set of instructions.


> We can make up little myths about how we romantics are obviously more passionate, work harder because it's our dream, are more deeply engaged, and so on.

This comment stuck out for me. There’s no shortage of people who “love their job” who aren’t actually good at their job. They can be very motivated to do the wrong thing and often have unearned egos.


I agree with your caution, I disagree largely with your reasons/the dangers you identify. I've avoided California, so maybe that has an impact, but I almost never have seen ego as a problem. I'm one of the only ones who will do impractical things sometimes (but just as often my crazy ideas are radically simpler).

My gut feel is that romantics have it the hardest. They are way more in touch with the potential & powers of it all, the overwhelming awesomeness that is everywhere, & how un-tapped, un-actualized the world-actual about them is. I don't have particular links, alas, but I think of MrDoob, author of the much loved Three.js library which has the lion's share of 3D on the web. He seems clearly to be engaged, to be interested, but he also has talked to himself not being great employee-material, suffering problems of motivation.

The really romantics have problems of alignment. There are few situations in the world where the passion is allowed to flow. There are few working environments that support the chaotic workflow & passion-driven-development. Agile: we all practice agile. What is agile but a way to insure consistent steady endless sprints, each slowly optimizing productivity? What an evil anethema, a plague upon those of us who work by our muses. The corporation, the industry, wants worker bees. And for many years that's probably a good way to function, probably a valuable personal development, of fitting in, declaring what you are working on, learning how to tackle problems. But in the long game, I think this mode of software development is a joke, is consistently low-ambition, squanders the immense potential we have. And I don't think you need long deep experience & talent to be squandered.


I once had someone vehemently complain to me about certain style rules in place in a code base saying, “only machines will ever read it, who cares how it looks as long as it works?” As someone who’s deeply passionate about software development it certainly made me look at this person in a different light.


Always remember: The next person to maintain it could be you.

Often that kind of view (who cares how it looks) is held by people, who leave and leave a mess for others to maintain.

insert Sussman quote about programs being written for others to read first and only last for computers to run here


It might be a lack of experience. I've seen people reacting like this when they are still very new to programming and feel pressured by the need to learn/adapt to stricter rules. After some time once they become more comfortable they pay more attention to the way something is written.


I've worked with people who would scatter literals throughout a codebase because they were too lazy to type out the names of variables and constants. I feel your pain.


> But answering the question literally, I am not representative of everyone in the industry,

I am deeply /deeply/ romantic about programming, but industry is dreck. Unimaginative, low potential, sapping, low-ambition, filled with endless middle- & low-roads & compromises. Countless stakeholders, endless non-technical-personals to "reason" with. Plans & designs & endless corporate aligning & planning. All for middling corporate plans, faint progress, carried forward under the weight of countless legacy systems & terrible decisions.

Programming & open source is this limitless potential, this endless imagineering & exploration. We are unencumbered by anything beyond what we might imagine, what we might want to do, free to think of how we want to represent, structure, develop things.

Not everyone is into programming for the same reasons. But I find increasing distance, increasing inability to articulate to others how amazing being a programmer is, what expressiveness & power we have, how unencumbered & free we are. Even if others don't share the ambition & sense of grandiosity, don't feel the immense pull of the vast humanistic work that we distinctly are the crafters & doers of, there's still such power to create & share & inform that is so rewarding, so immense, so imminent in the craft, & I deeply deeply crave seeing some recognition, somewhere, of some of it- of themselves!- at some level, in my fellow peers. It's ok if we have different reasons, different motivations, different engagements, but there is a might of human potential here that programmers are so uniquely connected to, so immersed in, and I want these fish to realize the water about them, even if they only aspire to be small fish.

I affirm strongly the question: how indeed can you not be romantic about programming?


Do you have any example code that enforces the idea of romantic to you? I've always just worked on business related tasks, and might have missed out on the romantic side of programming


[flagged]


We are all human. Just because I don't understand why someone would spend their whole life studying beetles doesn't mean I don't respect that they find it engaging and worthwhile.

You are making the classic mistake of projection. Accept that people are unique and will find different things engaging even within the most "mundane" areas of software.


That seems like a harsh view. A lot of software isn't very glamorous or exciting at first glance, that's true. But if you're sufficiently intrigued by logic puzzles and the challenge of solving things elegantly, my guess is that even the most boring piece of software has some opportunity for fun buried in its architecture.

But since you don't seem to be able to relate that too much, maybe you are just motivated by other things than many programmers. What would be the 'actual fun' things then in your opinion, that you have to be 'socially successful' to participate in?


I like the optimism in your comment. I'm glad that we can appreciate things like this, the flexing of mental muscles in pursuit of a productive task.


Most jobs are boring if you aren’t interested in the problem they’re solving. I appreciate you throwing some shade at the otherwise hive mind here but you’ve kind of jumped to the opposite direction. I don’t find recording audio interesting but there’s a whole field about it and I assure you I know people who find the art of recording sounds interesting who aren’t “telling themselves” it isn’t just to keep from being depressed. People are interested in different things and programming, like math, is the art of abstract problem solving and there very much are millions of people who find the act of abstracting problems and automating their solutions interesting. Your comment is downvoted because you are claiming otherwise to a community full of these very people.

Sure programming is boring, to the billions of people who aren’t programmers just as recording audio or, for a “real world” type of fun like you imply, playing most sports, is boring to me.


Making a file manager sounds interesting. A customer service platform not so much because I've done it before. A payroll system could be interesting.

Typing a letter and having it show up interests me.

  What interests you?


I don't understand this. You make it sound as if other trades and professions are about getting invited to parties.


Other professions arent as technical, and focus more on creating human connections rather than abstract connections.


- Accounting? - Finance? - Law? I dunno, I think this notion that software development is uniquely technical is pretty misguided.


This is really right on the mark. Real accounting involving trusts, tax shelters involving various corporate structures, the intricate tax code knowledge required to understand and take advantage of loopholes is quite technical.

Having been exposed to what it takes to do this level of accounting via direct conversations with someone who does this, they can't wait to move on from it. It's not a good fit for their personality. It really is a back office type of work that can get quite lonely.


You’re partly right, programming as a whole and on a sort of macro level is soils crushingly boring and pointless. But on the micro scale, even boring pointless programming tasks can offer challenges that are interesting enough to keep you entertained for a few hours until you look up and remember how pointless it all is.

I like to compare it to solving sudoku. If that entertains you and you can make 200k doing it, it’s not the worst thing in the world, even if it is sad and boring when you see it in a wider context. Who wants to go through life as a programmer?


Some people just have great interest in a narrow area.

I agree that most of those types of applications have a very low interest-to-drudgery ratio just in general, and I personally don't find them interesting at all. But let's not forget that some people just have interest in the details of things that most other people don't really care about. Some of that work might not even be objectively that technically demanding, yet it somehow catches the attention of some people.


> It’s boring and people only do it because they’re too socially unsuccessful to participate in things that are actually fun,

To throw some bombs the other way, I think there's a legit feeling that a lot of the socialization/fun that humanity gets up to is frivolous, pointless, dis-engaged, solipsistic avoidance of how they are spending their lives. We are all engaged in distracting ourselves at some level (Terror Management Theory[1]), and while it is popularly accepted that being popular & social is how one wins, I think there have been a lot of folks who feel other callings, to do, to make, to explore, and often it's less than clear how to do these activities socially. Einstein only found two other people in the world when he made the Olympia Academy[1], but that was enough. Other people wouldn't call that social fun, but it engaged him, and I would judge more earnestly & wholly & to greater joy than most people's social fun.

> so they convince themselves spending hundreds of hours making boring stuff is actually a good use of their time. I understand that some programming is great, but since 99% of all software is not interesting, I don’t believe the amount of people who say they love it.

I'm much more sympathetic to this all. So much of my first post was about the split, the difficulty, of doing software development from within the confines of the corporate-industrial environment.

There are endless fun challenges & explorations to get up to (from within those confines). There's so many things that feel good about programming, about feeling like one has gotten on top of these confounding complex problems, & built a secure well structured coherent domain for oneself. I think there is fun here, genuine fun, but I also think it's distracting & shallow. It's the social gossip of software development. Decoupled from what one is doing.

Most software is, alas, built in corporate-industrial manner. Most programmers are merely producers, not imaginators, not true creators, very much by design of the corporate-industrial system, & it's accepted as 99.999% hard fact that programmers need the help of other people or else they will make horrible software that won't help users. Very little software that is written, I would say, is written by software. This wraps up into the whole corporate-industrial software problem, that software is always intent on being product, on consumerization, and I strongly feel it's the lack of trust & lack of exploration that keeps 99% of software in the not-interesting realm, that keeps computers as a whole impervious & uninteresting & uncompelling & unknown (the proverbial kids who know a couple apps really well but nothing more about computing).

Most of the programmers you meet, who you accuse of not being passionate: perhaps you are right. They're having fun, but how engaged are they? Are they avoiding the fear of death, engaging themselves in industrial fun? Or do they really have a passion, see the world truly, have some sense of place of it all, & feel a connection to something? Are they facing the terror of death earnestly, more genuinely; have they advanced beyond the socializing masses? I think your doubts are well founded. I think we ought be critical, try to keep a cosmic brain view & skepticism, of ourselves & our applications.

[1] https://en.wikipedia.org/wiki/Terror_management_theory

[2] https://en.wikipedia.org/wiki/Olympia_Academy


The consumerist cycle is indeed a vicious trap in some ways when we place it in the context of self-actualisation. I’d like to add that another component or alternative to Terror thinking is our scarcity thinking. We still all live like we need to hoard nuts like Scrat from Ice Age.

A reasonable solution is the Sublime from Schopenhauer, or an alternative enlightened moment in once life were one does indeed she ourselves part of a Cosmic whole. Or otherwise said from that movie “What we do in life, echoes in eternity.”


Sure there are people with higher callings, geniuses like Einstein or Newton. But that’s not what we’re talking about here. We are talking about moderately intelligent people who will never contribute anything meaningful to humanity. For them work is not an excuse not to have friends or do “frivolous” things. Those frivolous things are what life are made of, so you better have a damn good reason if you avoid them. Being 10% of a team that is building some accounting software is not comparable to inventing calculus.


> We are talking about moderately intelligent people who will never contribute anything meaningful to humanity.

I have to disagree here. The bulk of humanity consists of minor contributions made by people few will ever remember.


Yes and the bulk of humanity manage to both make this minute contribution, and have a family and some friends.


You can be a software developer and have a family and friends. You're acting like there is only one choice when you are passionate about software : hunker down and be lonely with your computer as your only company.


That is the point _I_ am making.


I was romantic but jaded by many years experience plus the move from creation to glue code being what is needed for business


Maybe it's unique to me as a sysadmin previously and now as an SRE, but I quite enjoy gluing things together. Something about taking stuff that doesn't interoperate directly and forcing it to do so is elegant in its own right, without having to resort to scorching the earth and rebuilding everything from scratch.


I learned this the hard way. Thought I was special and passionate and hard working. Then I had a mental breakdown and could barely get anything done. All of a sudden money became the top priority I started seeing the world for what it really is.


While I don't disagree with the article, this quote better sums up how I feel about programming.

> The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination... 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... The magic of myth and legend has come true in our time.

-Fred Brooks, in The Mythical Man-Month

In deference to the counterpoints in this thread, a lot of the "poetry" we actually encounter seems to have been written by Vogons.


I love that quoute! The whole "The Joys of the Craft" is well worth reading. It also includes:

- The sheer joy of making things

- The pleasure of making things that are useful to other people

- 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 joy of always learning, which springs from the nonrepeating nature of the task

It really captures what I love about programming: https://henrikwarne.com/2012/06/02/why-i-love-coding/


I was burned out at a programming job and thinking about finding something else to do when I first read this section in 'The Mythical Man Month.' It reminded me of the wonder I'd felt at first, and that was still in there, and it became part of what has kept me hanging around the profession for another 30 years or so, so far.


I think that's why so many of my peers (including myself) are keen on removing ambiguity from code. Code itself should be as clear as possible and only able to be interpreted by readers in the way it's meant to convey instructions.

However the solutions are where the elegance, creativity and poetry should lie.


let var i be none

while var i is less than j

i is i plus one


TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'


> Oh freddled gruntbuggly,

;-)


Seeing as i'm not as jaded yet as many of the other commenters here towards programming, maybe I can give my views.

I understand what the author's getting at pretty simply, it's pretty awesome to write some words...lots and lots of words...and you create 'something'.

It's sort of the same romance that say would surround something like

A carpenter that builds homes from start to finish

Or a mechanic that builds super cars in their garage

I think it's that same thing

The lone programmer hacking away building something awesome

Unfortunately, like the 'romance' of most things, the reality is

That carpenter's working on a crew of 100 people building yet another cooking cutter townhouse

That mechanic works a day job at a shop and spends more time paying bills and dealing with customers

And...that programmer

They're part of a team debugging some server code somewhere that a bank or accounting firm relies on or something

Sometimes though, I find it helps just to stop and think of things romantically from time to time, even if you're disillusioned.

By the time I left my prior job, I was kind of fed up with it. But even then there was two ways I could look at it.

I could be

'A CNC programmer in a granite shop making countertops and fireplaces for rich people'

Or

'I turned mountains into high end furniture using large machines in a trade that stretches back to the farthest history of humanity.'

Looking at it the second way helped on those days you just really didn't want to be there.


I’ve not seen the word “craft” enough in the comments. You imply it, thanks.


I would happily write code for free (and do so off-hours, with my kids, and for side projects).

I have the luxury of working in a field where my employer pays me not because I hate what I’m doing and would rather not do it all, but just because they need me to focus on solving puzzles they choose instead of puzzles I choose.


This about sums it up for me as well. I feel so absurdly lucky that what I love to do also pays well.

If programming paid like shit, I don't think I would be able to stop myself going down that road anyway, in the same way someone who loves painting can't help but paint.


This is a great place to be. Do you think one needs a certain level of mastery to come to that point though?

When you are still struggling learning, the endless reading on topic X can be tiring and exhausting, especially in the context of deadlines.


As a self-taught programmer, I think the level of skill doesn't matter as such. I remember gobbling up a book I found on Unix commands when I was learning shell scripting eons ago. It was a rough start as the whole thing was totally new to me. I was mainly driven by being able to accomplish what I wanted using code (I am very lazy and hated the daily manual execution of the steps). Once I had a poorly setup script working, things that propelled me forward were my need to continuously find ways to refine the code in terms of elegance, performance and brevity - the satisfaction/high of accomplishing these things was enough feedback to get me hooked.


Agreed. I think of it as the linear equation y = m*x + b

As soon as you get to the point where m is positive (you have learned enough to be able to make things a little better on your own, even if using google for parts), you’re off to the races. m dominates b in that equation as x (time) increases.


I feel the same, and liked that you used the word puzzles. I enjoy solving puzzles, and often I use programming to solve them. Sometimes though it's just a process solution, and things like devops puzzles have their own solution space.


I've found being too attached to code is a recipe for frustration in the workplace. You code something elegant, simple, dare I say beautiful and inevitably it will be butchered by new product requirements, business needs, that quick hack to satisfy a client or more generally uncaring colleagues who are looking to get their job done as quickly as possible.

Perhaps romantic aspects could only be achieved when there are no third parties, just the programmer and their code. Working in or more importantly leading a team mandates a different approach by putting aside aesthetic considerations for more pragmatic ones that will satisfy all parties involved.

It's hard to be romantic in corporate environments.


If your code gets butchered it is not that great. That's something I am slowly learning, and by slowly I mean in the scale of decades.

I've seen some of my old code I wrote in the workplace ten years ago, going through the hands of many developers of various skill levels and with different ideas, and then getting back to me. Needless to say, it is pretty ugly.

Analyzing that, I found the real good parts mostly untouched. The parts that I though were great when I wrote them and make me feel ashamed today usually didn't hold up. The most butchered parts tend to be of the overly abstract kind. Interestingly, some of the complicated and clever stuff that most people advise against did well. If it does the job well, people will keep it and put it to good use.

You can code romantically in the workplace. You just have to realize your code will be under attack and it has to be strong enough to defend itself. Weak code is not beautiful anyways, so in the end, all that adversity will help make your code better and more beautiful.


I agree with your points with a couple of caveats. I've written a lot of terrible code. For the good stuff it's usually not the existing lines of code or structure that are butchered rather the additions which do not follow the spirit of the original code. That ranges from trivialities such as code style of another developer or more serious issues of making a mess to fit a completely orthogonal new requirement, not utilizing existing functionality rather just doing similar things in different ways etc. In such cases a small refactor would suffice but that almost never happens due to time constraints.

On the topic of overly complex stuff not being touched, I find that's usually because no one understands it and hence others refrain from touching it lest it break.


I don't understand why you'd put the effort in when you can write it off as a job and pursue your "romances" in your personal life. I'd guess the return in satisfaction is greater unless you're already in love with your job in some way.


Very well worded. One thing I'll add -- some of the best code I've written has been the shortest and most plain, simple and obvious. Perhaps for the reasons you stated -- it makes it more likely to come through untouched over time.


> It's hard to be romantic in corporate environments.

I agree it's hard, but it's not impossible. One thing that heightens the experience for me is to:

Listen to movie scores while you program.

I first started this to help drown out other noises so I could concentrate. But, I soon realized that there's a lot of drama in the sound: there are highs and lows, chaos and order, fumbles and precision, brief pauses, slow times and fast -- the sound is just like programming!

One time, as the score was building my task was nearing completion. Just as I ran the program and saw that everything worked the movie score delivered a massive crescendo. It was so cathartic and I had never felt so much emotion while programming. I actually cried with joy. That's the closest thing I've felt to actual love while programming.

A few of my favorite scores are:

TRON: Legacy - https://open.spotify.com/album/3AMXFnwHWXCvNr5NCCpLZI

Interstellar - https://open.spotify.com/album/3B61kSKTxlY36cYgzvf3cP

Inception - https://open.spotify.com/album/2qvA7HmSg1iM6XMiFF76dp


Interstellar’s is great. I also like The Social Network’s, especially given the film’s subject matter.


Amusingly, I pick those because they provide a bit of variety but not so much as to be distracting while working. Usually music with words in it gets me focused on what they are actually saying and thus unable to do work.


Yes! That's precisely how I got on to them too... I can't listen to music with vocals while programming. I like various sub genres of electronic music, but even a lot of pure electronic music is a little too jarring sometimes (some is not of course). But, without spending too much time curating, movie scores are almost always a safe choice.


I understand that. But it's interesting how this experience can be spiritual to some and others may be "purists" who find explicitly avoid extra toppings (listening to music during the task) just to be closer to the task (and thus intaking it in full, they could argue)


I guess it depends on what you consider pure. Without the music, I'm listening to kids (or coworkers) screaming or watching paw patrol in the background. Is that more pure than listening to a professionally arranged and conducted orchestra? Even with noise cancelling headphones, it's still not perfectly quiet, thus the movie score is a delightful way to drown out the additional background noise.


I love TRON Legacy Soundtrack. Great pick.


This reminded me of something that happened last week. I had written some code I found absolutely beautiful, then had to delete an hour later since the customer's requirements had changed. Personally, I find these situations disheartening but it's never frustrated me.


Every line of code that you write and can be proud of stays with you and adds up to your experience. You will produce more of it as you gain more experience.


Why delete it?

Tuck it away for later use. If somebody wanted it enough to ask for it in a formal way, someone else would probably find it useful.


> I've found being too attached to code is a recipe for frustration in the workplace.

Not sure why, but I've always viewed code as a means to an end of solving a larger problem. I end up attached to the end result, and not the code itself.

I suspect this is one of the reasons I don't get very passionate about language features. Something that makes my life easier is nice, but I'm not one to argue about them. I've solved problems in Visual Basic to C with everything in between.


haha yea, I try to sync my clothes to a RGB value that represents that day's mood. Sometimes I just type `cmatrix` and just sit back for a minute thinking about the problem I'm solving (should I use another class or inherit?)


Yesterday I set up a Django server that exposes some tables through an API that's fully queryable and filterable and sortable and paginated. And I wired it right into an antd table component on a Web app. And the whole thing is just so nicely interactive and #%$&ing clean and beautiful and elegant. I felt such joy making it.

Then I had a moment of thinking, "wow the CEO and friends are going to be blown away."

Until I stood back and realised that a data table isn't novel or interesting and they won't even be aware of the underlying beauty.

They're still blown away by a lot of what I do, but it's never the things that I find truly beautiful and romantic.


I think people in every profession would feel like this sometimes.


I've been programming since my early teens > 25 years ago. The article asks "How can you not be romantic about programming"? And I have to say, that after all these years, I am romantic about programming...only sometimes, now.

For one, programming a lot made me very near-sighted, and my eyes are dry to the point that I can no longer wear contacts. (I had a bad episode and nearly went blind a couple years back.) That really blows, because I used to like surfing and other outdoor activities that are seriously curtailed by thick glasses. Take care of your eyes!

Second, I am mostly not romantic about programming because I feel like I am swimming against the tide most of the time. Stuff changes so fast and so much; there is so much fad and passing fashions, and what's the rage these days is tomorrow's cargo cult. What's today's cargo cult started as an offhand comment with a kernel of truth that far too many people took far too seriously. It's never the right things that change, either. We keep changing syntax and IDEs and environments and frameworks, and yet we're still fighting memory management bugs in 2021. A very stubborn cult of performance worshippers have successfully defended the bottom layers of software from being rewritten in safe languages (putting safety at priority #1 for 4+ decades). I'm willing to pay 15% performance for this layer to just be forever ridden of this, but people treat me like an alien.

Third, people have complained about programmers being lazy and wasteful since the beginning of time, but we've truly jumped the shark. Build times for C++ (and Rust) are just insane. To think, dozens of cores, cranking away for minutes at a time, trillions upon trillions upon trillions of calculations just to output a little binary. Being a compiler person, and knowing some details about what is going on inside those compilers makes me want to cry. It's insanely wasteful.

Fourth, the arguing. There have been tribes and flamewars and a toxic culture since forever, but really, it feels so hard to express how disappointed I am in the whole shit, without adding to the whole shit and making the whole atmosphere even worse. I vacillate between wanting to yell at clouds and being sick of hearing people yelling at clouds! I'm simultaneously sick of being shouted at and on the edge of being shouting mad!

But, there are bright spots. CPUs are insanely fast, and there is memory enough for everything. Stuff crashes less. But yeah, everything is a tangle and huger heap of shit than ever.


I dont really understand the point of this article. Literally any system can be made romantic for the sheer fact that everything has spent hundreds of man-hours building up to it.

The cheapest possible ballpoint pen is made up of years of research into the plastics, the machinery required to create bearings with the tolerances necessary, the exact chemical makeup of the ink etc etc. It just seems to be a waste of brain-space to bother with making everything romantic.


Yes, the construction of a ballpoint pen could be made romantic. But I mean...it's pretty incredible how many humans collaborate to produce the ballpoint pen, millions of individuals cooperating in countless ways, producing an essential implement which is greater than the sum of its parts. No one involved could tell you exactly how the pen is made, and yet it's sold at a price so low we never think about it. There is a famous essay "I, Pencil" that details, and indeed romanticizes, this exact process.

You could cynically state that all aspects of civilization are incredible, so therefore nothing is. Or you could back up and marvel at the fact that out of nothing came something, out of an unthinking universe came self aware humans that literally took rocks out of the ground and reconstructed them so that they would think for us, and that we then used those thinking-rocks to cure diseases, enable near-instantaneous communication anywhere in the world, and literally launch people off this planet.

I would advise you to try thinking in the latter style, as life is more fun that way.


An upside of programming is that you can build something useful, by yourself. Some of my favorite programs are ones I wrote and use every day. They're not amazing programs, but they do the job and they did not exist before I wrote them.

I wonder if a home-created ballpoint pen, that worked well, wouldn't feel a bit more magical or romantic than the one you get for free at the hotel or bank. Having made, for example, my own paint, prior to use, I can attest that doing so feels "magical" in a similar way that programming does.


The Ikea effect[1]. People do value things they built themselves, even if the building part only requires an allen key.

[1] https://en.wikipedia.org/wiki/IKEA_effect


Sometimes it makes me dizzy - you pick up some ordinary thing, and suddenly marvel at all the people, all the work and effort, that goes into making the most mundane things. Odes to Common Things is a reminder of how amazing the universe is - the natural and the things we create.

“A book, a book full of human touches, of shirts, a book without loneliness, with men and tools, a book is victory.” ― Pablo Neruda, Odes to Common Things


Of course, the relevant xkcd: https://xkcd.com/1741/


"There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is."


It becomes rather interesting in my mind the moment you think about when the thing no longer exists.

We loose so many things all the time, the ability to make stuff, the ability to repair things, even the use of drills and hammers quickly fades away for the TikTok generation.

I love the notion of the OP and applaud initiatives like the various Smalltalks or https://gpblocks.org/ that try to keep the awe in our craft alive.


You think that young people don't use hammers?


I wouldn't be surprised if most Gen Z people had never picked up a hammer in their life (Speaking as a Gen Z myself).


I'm missing something here. Why would hammer use be declining?


People used to do things a lot more (Not limited to using a hammer). Now, they tend to stay on their phones/computers.


Do young people not buy IKEA furniture?


No idea. IKEA doesn't exist in my country.


> It just seems to be a waste of brain-space to bother with making everything romantic.

Is dancing is a waste of energy?


For me, yes complete waste of time and energy


I'm 62. I fell in love with programming as an undergraduate in 1977. I had traveled across the country to attend a school (University of North Texas) renowned for their music program. Not seeing my future in music, I was fortunate that the school also had a fine computer science program.

I often reflect that I know how to do two things--make music and program computers--that many view as very close to magic. And I'm grateful.


While I somewhat admire the author feelings, as a direct answer to the chosen title, I have to say I don't share them at all. I view programming with a mix of indifference and boredom and the sad few years I had to do it as a job are easily the less fulfilling of my life.

If I had to sum up my feelings regarding programming, I would say it is: - a lot of uninteresting busy work; - intellectually mostly unchallenging. The few parts that are actually interesting are maths and if I wanted to maths I personally find that there are more interesting problems to solve in parts of maths not related to programming. I don't remember ever feeling any joy after completing a piece of software; - extremely isolating; - both boring and infuriating to debug when it's needed.

The only positive part was shipping something useful when it was finished.


I felt that way after a few years of programming. I was bad at debugging and several other things that would have made my life a lot easier. After a decade of programming, I got better at it, and started to like it more (even doing it in my spare time)

People like things they are good at. To be provocative: if you only did it for a few years, you probably weren't that good at it. The same can be said for math, playing guitar, etc.

Guitar is a good example. Anyone who has been playing for a year or 3 probably knows the drudgery of practicing some chords that don't sound like what's on the record, hurting your fingers, etc. When you get good at it, the drudgery goes away and you're left with fun.

And that's not to say "good" is a fixed target... The interesting thing is that once you get to a certain point, you can see the infinite world that you haven't explored yet.

If you like math then there is a ton of stuff in programming that's mathematical, but you can't get a job in those areas until you've mastered the basics.


> And that's not to say "good" is a fixed target... The interesting thing is that once you get to a certain point, you can see the infinite world that you haven't explored yet.

> If you like math then there is a ton of stuff in programming that's mathematical, but you can't get a job in those areas until you've mastered the basics.

I don't think you understand my point.

While I don't think I am exceptionally good, I am not a twenty two years old junior. I have a MSc in Computer Science from a (very) good university and an actual engineering degree. I can debug. I was developing real time simulators of complex networked equipments in a safety critical environment. I (thankfully) wasn't doing CRUD business software.

Let me illustrate my point with a story. I once spent three days trying to understand what wasn't working in some random network code in Ada using gdb and tcpdump because I wasn't allowed to install wireshark on these machines. In the end I realized there was a massive bug the version of the GNAT standard library we were using. Sockets were always bound to all addresses rather than the specified ip. I then had to write a work around because we absolutely couldn't update. And you know how I felt after that? Not clever. I felt sad, bored and like if I had forever lost a week of my life (which I had actually). Thankfully the project became bigger not long after and from then on I was able to spend more time managing the team and the project and didn't have to code much anymore. Gosh I hate coding.

My points regarding maths is not that you can't do mathematically oriented programing. It is that there is far more interesting problem in pure maths that have nothing to do with computers.

Nowadays, I work in management consulting on problems I actually find interesting and which thankfully involve more people than machines.

I was just sharing to give some perspective to the article. Some people actually deeply dislike programming.


OK, well it's great you found something you like, and I don't doubt that there are people who can program who don't like it.

I would still claim that just like guitar, it may get more fun with practice, and that practice may take years. Even if you're working on some old legacy system, being the person who can make it sing is pretty fun IMO. Actually I find the legacy stuff to be more interesting because it actually runs and does things in the world.

BTW I also found that those kind of debugging sessions went down drastically in frequency in a ~14 year career of programming. (We had multi-week, multi-engineer bugs at my first job in games.) The industry changed its practices significantly, and I also changed my personal practices. It only takes a few experiences like that to reflect on what could have gone differently. Sometimes they are out of your control, but often not.

---

edit: If this helps make the point more succinctly, I will also say I was mathematically oriented, and had a masters and BS in engineering from a good university. And I worked on a small team shipping major console games ... and despite that, I got drastically better at debugging and testing in the next 10+ years. (Debugging being the most literally scientific part of programming; I was better at math than science.)

Actually the experience of working with game programmers taught me how bad I was at debugging. There's also a lot to learn about software architecture for reducing bugs. If you get infuriated frequently by debugging, then there are things you can do to change that. Of course you may not want to if you've found other things you like.


To be honest with you, I'm quite amused by our exchange because you obviously enjoy programing a lot and so seems to have difficulty even fathoming that someone could just dislike the craft which is the point I am trying to make.

I don't doubt you get a lot better with experience. I was working with a lot of fourth and fifth something engineers and learnt a lot from most of them. The fact remains. I don't find programming or debugging infuriating. I find it mostly uninteresting, dull, devoid of joy and dispiriting.

My very first paid job as an intern during my engineering degree was working on a static analyzer written in Ocaml. There was very little bug. I didn't enjoy it at all. At the time, I thought it was because of the context and that I had to keep at it. It never became better.


Nowadays, I work in management consulting on problems I actually find interesting and which thankfully involve more people than machines.

That goes both ways though doesn't it. I find dealing with people rather than machines the least interesting part of my work. I do it because it's necessary but I find it exhausting and try and minimise it. Horses for courses.


Most certainly, don't get me wrong. It is not a value judgement on my part. I don't think people who enjoy coding are wrong and I can conceptually see how it can be fascinating.

I just wanted to highlight that this is not some universal truth that the more you do it the more in awe you are at it. For some, the experience forever remains a dredge.


I agree that people like things they're good at, but a few years is far longer than you need to get good at something.

You can easily get to at least the top 10-20th percentile in a single year if you dedicate yourself to something.


Maybe it was what you were working on, maybe it was the act of programming itself, maybe it was the company, etc. etc. etc., for the sake of your own happiness I'm glad you're not doing that anymore. I for one and becoming more and more fascinated by it, despite its (MANY) quirks & decisions that get made because of previous bad decisions. ¯\_(ツ)_/¯


> a lot of uninteresting busy work; - intellectually mostly unchallenging

My guess is that you should have followed your programmer's instincts and automated the uninteresting work.


Maybe the thing you were working on wasn’t interesting enough to you? If I’m working on something really hard that I think is cool, the intermediate steps are a joyful rush when they work out. If I’m working on something like pulling data from yet another endpoint, not so much. Might be worth looking around for problems that actually excite you.


Truly fantastic stuff. I don't really have anything to add other than to say that this made me feel happy about what I do for a living. So much better than reading flamewars camouflaged as blogposts :)


I do enjoy programming. It's like Legos for adults (though I still own a large Lego collection as an adult too). But I'm also resonating with some of the other negative comments in here as well. I love programing when I'm able to love programming. Years ago, I watched this Dan Goldman RSA talk about motivation (https://www.youtube.com/watch?v=IhJ4CDCfASI) and I began actively looking for a job the next day. For me, I've found his three points on motivation to be key: Autonomy, Mastery, and Purpose. When I'm not able to enjoy programming, it's because my employer has violated one or more of these and treating me like a horse.


> There are lines of code floating around on our computers that haven’t been executed by a machine in years and probably won’t be for another lifetime. Others are the golden threads of this world, holding it together at the seams without no more than a dozen people knowing about it. Remove one of these and it all comes crashing down.

Beautifully said, although I find it rather horrifying.


But this is what Taleb and Zizek have been drawing attention to for years, its just that this predicament is the case at every level of society


Responding to the title, it's easy: get jaded by constantly having to fix somebody else's broken stuff and as a bonus never get enough time to express your own creativity and implement your good ideas.

Rinse and repeat for ~10 years and you'll see how can you not be romantic about programming. (I am in the profession for 19 years.)

I am now looking for ways to retire early. I will hit 41 in a few short weeks and I am still the hard-working guy that has zero savings but that has been 100% my fault and I am not blaming anyone -- I have treated life as yet another lousy job that I can half-ass (reference to my younger years). I came to my senses, finally, about two years ago, after I received a series of cold showers during several interviewing campaigns and have seen how capricious the job market is and how completely RANDOM tech hiring is.

Since then I am working on investing in relations more than anything else, taking some pay cuts for supposed sustained income down the line (people who would call me for temporary contracts on a regular basis, people calling me to fix their stuff just for a few days and for generous one-time fees, people needing the occasional technical writing etc.) but if that doesn't work -- and it likely will not work because I don't seem to be in the right circles -- I'll just start applying exclusively to USA companies due to the bigger compensation and will just hoard money for a few years.

I'll also likely start 3-4 small IT businesses after I fix my health; my skills as a programmer and a sysadmin are quite broad and I can pull it off alone.

---

Back on topic, programming is romantic when you are not doing it as a paid job, plain and simple. There are people who absolutely love their programming work plus the compensation plus their team but if they are reading this they should probably start praying to whatever gods they believe in that it will last because for at least 80% of us it didn't.

I am looking forward to having more free time after I gather some savings. I still love programming but the commercial aspect is absolutely destroying it for me.


Programming may be romantic. After all, much like in the spiritual life, programmers also work towards an ideal. And isn't this working towards an ideal just a love affair? One might claim that programming is logic-intensive compared to the spiritual life and other disciplines like poetry. Ellen Ullman in Close to the Machine: Technophilia and its Discontents writes, "...the computer is... a projection of a very slim part of ourselves: that portion devoted to logic, order, rule, and clarity." Another form of the author's question might then be this: How can you not be romantic about logic, order, rule, and clarity?


Something I sometimes think about in this vein: how many lines of code, written by how many people, in how many different times and places, are traversed on your computer every second?

It's kind of mind-blowing to me, and I can't think of anything else that works like that. It would be like if, when building a new house, you built it around an existing house, and continued to add layer after layer, and generations later the original house was still in constant use and supporting all the rest.


This is true of any complex object, though. Any skyscraper you walk into probably has parts and labor coming from thousands of different places.


That's true, skyscrapers and cruise ships are pretty marvelous in a similar way. When I visited the Met in New York I was most fascinated by the building/complex itself. How many individual pieces, how many workers, how many design elements and functional considerations...

What makes software even more romantic is the "living" aspect of it. When you write a new text or build a new skyscraper, you incorporate the learnings and knowledge gained from prior work, but with software you actually embed a functioning copy that lives on and interacts with the new work. Repeat enough times and soon the "git blame" equivalent for your processor reflects an incomprehensible network of creative work from so many different people and times and organizations that mostly had little to no connection to each other.


I recently read that the typical car now runs about 30 million lines of code. That is just astounding to me (and slightly concerning).


As an indie game programmer, I cast magic spells and speak living worlds into existence. Pretty romantic.

As a paid software developer taking tasks and bugs off backlogs, justifying everything I do, no autonomy, forbidden to refactor, documenting everything, filling out dumb little forms in Jira that literally nobody ever sees again, attending meetings, making my boss look good, spinning myself in performance reviews, blah, blah, no I can’t say any of that is particularly poetic.


If you have multiple startups competing evenly in the same space why does one succeed and the others fail? The founders ability to execute is paramount. But of equal importance is that one product has a little bit of magic. Something that makes the user smile. If it was easy every startup would have it.

You might say they all do the same task why spend extra time so the user has an incredible experience. Because in my opinion that's how you win.


It's more likely just some luck


> Something that makes the user smile.

This is not something that actually happens.


``I think that it's extraordinarily important that we in computer science keep fun in computing. When it started out, it was an awful lot of fun. Of course, the paying customers got shafted every now and then, and after a while we began to take their complaints seriously. We began to feel as if we really were responsible for the successful, error-free perfect use of these machines. I don't think we are. I think we're responsible for stretching them, setting them off in new directions, and keeping fun in the house. I hope the field of computer science never loses its sense of fun. Above all, I hope we don't become missionaries. Don't feel as if you're Bible salesmen. The world has too many of those already. What you know about computing other people will learn. Don't feel as if the key to successful computing is only in your hands. What's in your hands, I think and hope, is intelligence: the ability to see the machine as more than when you were first led up to it, that you can make it more.''

Alan J. Perlis (April 1, 1922-February 7, 1990)


Thanks for posting this! I first ran across this quote in the intro to SICP, and didn't think much of it when I first read it (~2004). In the intervening years, I'd forgotten about it. I ran across it again a couple of months ago, and was surprised at how strongly it resonated. I've picked up Racket programming on the weekends to bring myself back to some of the fun that got me started in the first place.

Incidentally, Epigrams in Programming[0] is also an ongoing source of inspiration for me. I understand them in new ways as I get older.

[0]: http://www.cs.yale.edu/homes/perlis-alan/quotes.html


To paraphrase a thing that I read in a book about Tao:

"How can you not be romantic about making iron hooks?"

And I fully agree. You can find beauty and elegance in anything, including programming (and I certainly do).


I used to be romantic about code, even more than that, and then I saw how the code other programmers like me wrote was used for all the wrong reasons and suddenly there was no ounce of romanticism left in the very idea of coding.

There could be some chance of regaining the lost romanticism if we'd throw "collaborative" concoctions like GitHub out of the window, if we'd get rid of the very idea of working for any FAANG-like company ever again (and to hell with those hellish interviews associated with them, too, nobody interviewed Shelley or Goethe before they sat down to write their romantic stuff) and to top it all it would be best if from now on we'd only write code for our own pleasure, maybe add a very short selection of friends, too, no more "software is eating the world" and all that materialistic and definitely non-romantic nonsense.


How? Writing resource hogging code all day to figure out how to best display obtrusive advertisements is a good start.


If you're doing that, then quit. It's not worth it and you'll regret having done this. You'll find another job. Hell, you'll find another job as a programmer. Don't do this to yourself, nor to us.


Sure, OP will find another job as a programmer. But I am sure that their employer will also find another programmer. So saying he is doing it to us sounds kind of disingenuous. "Hate the game, not the player."

For me, the frustrating part is that our society is set up to incentivize value-decreasing behavior like obtrusive advertisements, it doesn't add anything yet still makes money, unlike things that are essential to the world (mundane example: raising children).


Nah, the pay is good and worth it IMO. I see it similar to being a roughneck on an oil rig or even a coal miner. I make no illusions or romanticize the nature of my work.


Most jobs are terrible but they also pay less. I think he’s making the right choice. If you don’t believe in trade offs then you’re probably being taken advantage of.


Strange. For me, programming is an emotionless endeavor and one of the hardest aspects about doing it day in and day out.

Sometimes it feels like a higher level form of data entry.


This interests me. What kind of programming do you do?

Emotion is very important to me as a programmer. Often my emotions know when something isn't right before my "rational" mind does, hinting that it's time to slow down and dig deeper. I've found a number of bugs this way over the years.

In fact, my team has long recorded our emotional state with every commit, with a numerical score: "h:1" through "h:5" at the end of each commit message. If you pair on the commit, the lowest individual score prevails. Anything other than a five is a sign that something deserves a little reflection. (Threes or lower are quite rare, happily.) We always said we were going to use these as metrics for defect analysis, but our defect rate is already pretty low. I suspect the main value is just that short pause for reflection before we commit.


> Emotion is very important to me as a programmer. Often my emotions know when something isn't right before my "rational" mind does, hinting that it's time to slow down and dig deeper. I've found a number of bugs this way over the years.

Sounds like intuition rather than emotions.


Yes, but I rely on my emotions to tell me when my intuition has something to pay attention to.


Maybe it’s a style/taste thing.


I've never considered using qualitative methods on code like that, but the aesthetics definitely highlight where some of the worst bugs lurk.


For me programming is all of those but also boring and frustrating and gets on my way to get things done.

Creating things nobody ever have done before is one of the deepest feelings you can feel in this life when you have done that, but also is terrifying emotion while you are doing it.

Like a chemical reaction, for something to be deeply satisfying from an emotional point of view you first need to give the system enough energy for the reaction to happen.

It requires intense focus, that is deciding not to do other things, which is painful. It is slow, which is frustrating. The work that could not be automated is boring. It is very expensive if you hire others to help you, and involve a tremendous risk if after all the work, it doesn't work out.


I am one of those people who wants their code to be poetry. Ideas and logic expressed in the simplest most elegant terms. But when I left academia for industry and started working on a bigger project requiring coordination between many dozens of people, I realized that this approach is not conducive to making money. My idealism collided with the complexity of the real world. Software is a mess, but a beautiful mess. I now realize this is not necessarily a reflection of the skill of those who write it, rather the complexity inherent in the users domain.


Poetry is an artistic expression and so it can be, as you say, ideas expressed in simple and elegant terms. But it can also be opaque, complicated, confusing, awkward, and abrasive, and still be great poetry.

When working with others it is all the more important that the code be elegant and simple. That’s the only way to fight the always encroaching complexity.


A friend of mine asked me: "why are taking it seriously and love to code? I do it just as routine job". Then, he didn't complete his career as programmer and switched to be business analyst.


This is basically why I quit doing it for money. It felt like taking this amazing, yes, romantic, thing, and perverting it until it is barely recognizable. Writing code that I knew from the onset would never last more than a year or two, would not see the light of day beyond inside its small nook. And in the end, we accomplished little more than moving money around and persuading other humans into doing things which were bad for them.

It took me several years to get over the numbness I developed after years of that crap, but now I'm in love again.


I've been struggling a lot recently due to burnout. And I'm not sure if it's burnout or if it's what you describe.

I'm extremely passionate about my craft, but I feel like that's been to my detriment due to the sentiments of your post. Either I have a misalignment in what I've been doing and I need to change to a position I truly love or my expectations are so ridiculously unrealistic that I probably won't be able to function as a professional in this space.


If I were you, I would start thinking about two topics:

1) What can I give up to reduce my annual time and financial minimal upkeep?

2) What do I really want to work on? If my upkeep was taken care of and I didn't have to worry about food and shelter, what would I be doing to the point of exhaustion, passing out, sleeping, then waking up and jumping right back into it?


Thanks for the input kind stranger.


You,re welcome.


It's an interesting question: which are the lines of code most frequently executed in the world today?


My wild ass guess would be one of: a) some high frequency trading algo, b) ray tracing/collision detection in popular game engines, c) the inner loop of google's spider, d) something common to mobile devices (maybe something in wifi or cell service?), or (most likely) e) the bitcoin hash algo.

It makes for an interesting "how many manholes in Manhattan" interview question, and how you could possibly quantify your guesses...

Imagine being the author of those lines of code, if it was possible to figure out :-)


I'd add TCP stack in Linux (kernel). Should be hammered constantly on servers of the world and also gets lots of usage on smartphones and IoT stuff.


Nope. IO would be orders of magnitude less than computation


My money is on Linux's cpu_idle_loop().


Don't forget bitcoin::compute_hash()


I would guess that it is something mobile related. Android?


strcpy, strlen, strchr, memcpy, and their varients


Bitcoin mining?


I wish I could be romantic about something again. Outside the typical industry stuff that killed it for me is the fact that nothing feels like magic anymore.

When I was a kid and really started programming. There was all sorts of software that fascinated me. It seemed like magic and the code behind it looked arcane. I would often to try to learn about things far out of reach for a kid who was really user beginning and I wasn’t really intelligent enough to stick with it and figure it out and it felt like magic still.

After I first burned out, I came back to some of this stuff. Sometimes by our accident and sometimes to try and recapture that magic. Now I was much more experienced and a little bit smarter however, and the magic quickly fell apart. Everything made sense when you think about it and a lot of things seemed closer to hacks than magic (not the cool kind either).

Since then I’ve lost of lot of interest in programming. There are still things outside of programming that I’ve tried to replace it with that give the same feeling as programming once did, but I find I don’t have the intelligence or straight up money to get into them the same way.


That's a sweet childlike view of the world, like the picture postcard of a White Christmas (tm). The real world is like Texas... bad design can produce a black swan failure decades in the making, at any time.

We're like the management at NASA, with their improvised spreadsheet models of O-ring erosion and a theoretic model of how x% of erosion equates to y% of danger, when in reality the original architects wrote down that ANY erosion meant the system wasn't safe, and needed redesign.

As far as I know, none of the code holding everything together is actually suitable for purpose. This is terrifying to me.

---

MS-DOS was fit for purpose, when it ran on floppy disks you could write protect and make copies of. You could run any program you wanted, downloaded from any BBS or copied from any shareware disk, and know full well the biggest loss you could incur would be having to make a new copy of your data, or OS on a fresh floppy disk.

Programming was fun back then, because you didn't have to worry.

That ended when we got hard drives, and when people figured out how to infect firmware, there was no going back.

---

Unless... you start with new hardware and firmware, and don't ever trust applications to talk to the hardware directly, ever. You then minimize the kernel of code as far as practical, and set it up with policies that protect itself, and the hardware by default.

Only then is it possible to get the fun back again. You give the user the tools to decide exactly what to trust a program with, and enforce their decisions. They can be trusted to act wisely, if the tools are sufficiently transparent and easy to use.


True, but I'm extremely wary of it and think it leads to magical thinking and bad outcomes.

I prefer to take the opposite view: programming is work - it's mostly just 'building something' much like a Carpenter who has to know a lot of things, makes plans based off of experience, but at the same time will innevitably have to pivot in the face of those plans.

Any job done by a carpenter depends almost entirely on the quality, experience and workmanship of the carpenters and not much else. The newest, fanciest tools will not make good work. Moreover, it's very easy to cut corners if you want as the methods can be opaque to users.

CRUD apps built by experience teams are practically like construction sites.

I don't want romanticized attachment to work, rather, a kind of civil obligation to doing a good job.

All of that said, there's a lot in Software that is more academic, and does require intellectual chops and left-field thinking, experimentation etc. and you have to have that as well.


It would still be "romanticized", but less glamourous, to think about all the terrible aspects that went into those millions of line of code (and don't get us starting on the hardware.)

It is part of the global human collaboration, where we're all gears and screws, but some of us are more geared toward screwing others.


I wrote my first lines of code when I was 12, so I had a good few years of working exclusively on stuff I was interested in before I went to college and found employment in this field after graduating.

My current job is nothing like those years and in comparison feels like bricklaying. It pays the bills, but there isn't a lot of room for growth, because we have a streamlined process designed for delivering the product on time and on budget.

In one word - boring.

On one side this is great - you should use boring technology, because it brings the most value. On the other it's as devoid of romanticism as it can be.

The silver lining here is that this job leaves me with enough mental energy to pursue hobby projects. Provided that at the moment I'm not in a situation in which I'm forced to follow rules/directions I consider harmful/stupid.


This (awesome and inspiring) article doesn't really go into the philosophy much, but one thing I love in this direction is the way that programming lets us work directly with (abstract) computation - literally any rule-following system that can be described, can be explored.

Universal computation is still the max known complexity of any rule-following process, and it's also a low-bar, very easily attained: x86, RISC, GoL, rule 40, or smallest 2,3-Turing-machine - all are exactly equal in their total-computational-capability (merely with different translation needs on their input and output).

Ideas (fantasies?) of hyper-computation are fascinating, but what can that really mean? To follow instructions better than exactly? Surely it'd just be different types of faster!?


I find the theory of computation spiritual/awe-inspiring but I'm doubtful of how much of our software workers in our time are in touch with that (and not entirely at a high abstraction distance)


Computation has been and is a huge part of my life, and thanks to it I live a decent life with my family. It also helped with self-esteem and other similar things.

But love? Love taught me things I couldn't imagine (in a positive way).


How? By looking at the codebase I'm working with right now, that's how.


We can build beautiful things but we can’t build them in a beautiful way. We marvel at our pyramids but dream of the arch, of Chartres. Until we eliminate the goose wire and tinfoil, it will be hard to feel satisfied.


This is a good summary of my own feelings on the whole darn thing. I also design circuits and the whole thing is just fucking magic to be honest. The fact that this works at all is constantly baffeling me.


I had this feeling recently! It was close to the deadline and I was burning the midnight oil, just feeling like Neo, jumping through the ifs, whizzing around them loops, dodging them future bugs (oops, almost wrote a do-while), and transporting through the methods. But yea it was awesome. Wrote this cool logging tool for the database guys. It prints the events with timestamp AND in colour(!) to indicate priority. Planning to add features like font weight to indicate audience (QA get light weight, Dev gets italics etc)


I think know what happens here. We become disconnected from the real-life output of what we do. It becomes abstract. If you're like me, you started off making stuff for yourself and it was a thrill to put it live and know that people could see it. Now I think we all build stuff for others, because that's where the real money is.

In short, a hobby turns into a job and stops being fun. But I've found ways to bring programming into my hobbies and that's been life-changing!


Code which matters is like mathematics. It can be reasoned about, has respect for formalisms, may be subject to proof or inductive reasoning. It heads to things like type checking. I've never written any code like this. I often doubt I can.

Everything else is either ephemeral, or scripting, or should only waiting to be subject to tests against formalisms. Lots of things are broken in code which should not be btw.


There's a difference between being romantic about solving puzzles and creating new and useful tools, and being romantic about the drudgery and bugs. I wouldn't call the people who pretend there aren't boring parts of programming 'romantics', it's more of a delusion. But those people do exist, and I don't trust them.


I used to love programming, but after doing it for some years professionally I feel like a lot of people (clients, managers, co-workers) look down on it. Like its just a neccessary evil they wish they didn't have to deal with. I feel like it is the lowest status profession you can have in the tech world.


> I feel like it is the lowest status profession you can have in the tech world.

QA, Ops, Support, and (in a reversal from a few decades ago) Analysis would like to have words with you.


In general anything related to IT isn't "well-regarded." Even compared to regular engineering professions/doctors/lawyers all hold more prestige.


Really enjoyed this, thanks for sharing!


Anecdotal, but I’ve always known there to be two types of coders. Those who do it for the money, and those who do it to solve problems and make things.

My observation is the ones who do it for money get burnt out and want to get out, the other kind never stop wanting to learn and just keep having fun.


many MANY reasons VPs who insist on micro-managing technical decisions even though they really do ignore technical recommendations of highly skilled engineers. (Tom Hamilton, formerly of Digital Guardian)<br> VPs who refuse to share technical aspects of the business plans/goals (for a small company) with engineering because "well I can't share that with you" Steve Weingart when @ Liant<br> Anything involving/supervised by Ben Bar-Haim formerly AMD. Ben successfully constructed an incredibly monolithic bureaucracy in AMD - with a huge amount of overhead. Software groups not based in Markham Ontario got Trashed. <br> So yes, lots of Manager/VP reasons to hate programming


Romantic? A relationship can be a metaphor for almost anything. Currently I feel abused not by programming but by other programmers. How can you be romantic about programmers? (more broadly: How can you be romantic about people?) I agree with the title paradoxically.


> Some lines of code are a riddle to anyone but their author

Sometimes not even the author knows!

(Of course I’ve never looked at something I wrote in the past and had no clue what I was thinking or trying to accomplish. Nope. Never happened. /s)


In part I'm glad I didn't go into programming for this reason. It's a pure hobby pursuit free of the pressures & stress of work. I code what I want when I want.


Programming is teaching a computer to do something, and teaching something another being (even a stupid one like a computer) and seeing them grow can definitely be romantic.


the only things i find "romantic" is creative design in macros, improving algorithms and low-level bithacks, everything else is mostly boring and mundane code monkeying. Programming big projects where creativity and design space are stifled must feel suffocating and limited: people don't invent new stuff and do everything by the book - implementing something just for it to work, but not daring to break new territory.


I find it pretty easy to be romantic about nearly anything. There’s very little romance in the day to day of programming in industry though.


I can think of very few things in this world less romantic than programming. Possibly accounting, not even sure about that one.


I love programming but the industry is generally in denial of debt. Still it's the most reliable passion I've had.


Easy. Having my heart broken so many times.


What a marvellous short form essay.


If programming is romantic then why does it feel like I'm dating a Klingon?


This is someone that doesn't love our craft. It's ok.

Romance can be taken away from anything, as meaning isn't objective, but a human idealization. In the end, everything we do are just atoms moving around, and after a few thousands years nothing will matter.


The highways of tomorrow are being built today.


Amen


I never know how to answer coworkers when they ask what motivates me because, frankly, I think all the romanticism is just a childish fad that you have to play along with if you want people to assume the best of you. My usual answer is always something vague like "there's just something magical about them. I feel like an artificer." It wouldn't be so annoying but I constantly meet people who insist they just can't work that day because they don't have whatever synonym they've chosen for inspiration and meanwhile all I can think is "Or you could get over it and finish like a god damn professional". As a very mercenary person who's happy to hone a skill simply for the money I can't wait until there's enough people in software that we can start firing the profitable children finally.

I think this is just an American thing though because on the occasions I've met with partners from other countries, especially basically anywhere in SEA, I've noticed people act a lot more like adults. Personally I blame San Fransisco.


Cash rules everything around me.

After a few decades of relying on coding to feed my family, I miss the way it felt magical, writing in Basic on a ti 99/4a.

I thought I was going to tell computers to do wonderous things. In reality most of us are telling them to serve ads or sell crap to people. Most of the rest of us are telling them to serve data to companies doing the above.

It’s just business now, nothing more.


So what are you going to do about it?


I dont even own a computer anymore. Once Covid is over I’m becoming a cannabis farmer.


By treating it as a job and not a hobby. You don't need to make work your life. While older programmers I've met certainly are more likely to do it in their free time, I think we're beginning the transition of a newer generation brought up with the fact that it's a career. There is so much to learn that it barely benefits you to do extra in you free time unless you are job hunting.


Exactly this. Many people are introduced to it in college at this point.

Also too the world they grow up in is far different. Computing for us was a lot more intensive to them, who now just pull one right out of their pocket.


Consider it an ephemeral craft to accomplish goals, whether business or otherwise. Code will never be perfect and most of it is a mess. Someone can explore Pony, Idris, or make an Arduino to ring a cowbell on the weekend.


> How can you not be romantic about programming?

Get a job doing boring shit you’ve already worked on 3 times before. Most programming is awful and that’s why you get paid so much to do it.


"After a while, more and more, you’ll find yourself in moments of awe, stunned by the size and fragility of it all; the mountains of work and talent and creativity and foresight and intelligence and luck that went into it. And you’ll reach for the word “magic” because you won’t know how else to describe it and then you lean back and smile, wondering how someone could not."

I guess I wish I felt like that about programming. But more and more, I feel like this:

"You are an expert in all these technologies, and that’s a good thing, because that expertise let you spend only six hours figuring out what went wrong, as opposed to losing your job. You now have one extra little fact to tuck away in the millions of little facts you have to memorize because so many of the programs you depend on are written by dicks and idiots."

-- https://www.stilldrinking.org/programming-sucks


The longer I am in this profession (and it's been over 20 years) the less I see my peers as "dicks and idiots" but more as victims of the same broken game. I work with very smart people, to be honest. It's the technology and the employers and the culture of development that's the problem.

Retiring sounds good right about now.


Retiring sounds good right about now.

I'm with you. If I had another skill, I'd give up computers entirely. Maybe have a smartphone, and that's it. But only for limited use.

I wish I could build things with my hands, or play an instrument, or just be good at something else, and let the tech world pass me by. I used to love technology because it was fun and interesting. It's no longer either of those things.


For almost exactly the same reasons as discussed above, I'm in the process of trying to move from software development to medicine. I'm currently a pre-hospital medical practitioner and work part-time in that field. My pay averages over the last year averages between 1/20th to 1/25th (0.05 to 0.04 times) my hourly pay as a software development consultant.

I'm now trying to decide whether I should attempt a medical degree to become a doctor. It will take ~7 years, a lot of unpaid study and work during that time, and after 10 years, if I'm lucky enough to become a consultant hospital doctor, I'll still be paid less than I am now, both per hour and per annum. As I'm in my late 30's with a mortgage and family who are dependent on me, it's a big, big commitment and risk to take.

Still, I vastly prefer my time spent with my pre-hospital medical colleagues and with patients to that which I spend working in software. I get an incredible amount of "life satisfaction", or whatever you might call the sentiment, for this part of my professional life - the only other time that comes close is my time in the military.


>I'm now trying to decide whether I should attempt a medical degree to become a doctor

Have you reviewed how much sleep deprivation would be involved in the path towards being a doctor? It differs depending on the path, but middle-age and lack of sleep may be very hard (source: have multiple surgeons in my near circle). But it is very specific to the path you pick, of course.

I am currently trying to see if I can find a niche in healthcare, away from my software manager job, but am taking it slowly. For me, the 7 years of school are impossible, so no doctor for me. This comment is not meant to be in any way discouraging, and it may be presumptuous of me, as you have perhaps spoken to multiple doctors in the field interesting to you.

The feeling of tipping the needle towards keeping someone alive is incomparable, best wishes with your path transition, whatever it ends up being.


> Have you reviewed how much sleep deprivation would be involved in the path towards being a doctor? It differs depending on the path, but middle-age and lack of sleep may be very hard (source: have multiple surgeons in my near circle). But it is very specific to the path you pick, of course.

Yes, I have. My first career (maybe employment path) was as an enlisted soldier. It took some modification of sleeping patterns to go from probably the laziest teenager you can imagine to an NCO at age 18.

In Ireland, where I live, all junior doctors work absurd hours and call shifts. Theoretically, they all opt out of the EU working time directive. As a long-standing proponent of labour rights and as one of the few prospective doctors who may not require a salary to fund legal action, it would be my intention to go through the (even without free-out-of-hours-labour) ridiculously exploitative process on my own, and fight for EU-backed terms for myself as a test-case for my future colleagues.

Of course, even many doctors consider the "crucible of fire" an essential part of becoming a doctor, so it would be an uphill battle that would only affect a precedent in one tiny country (Ireland).

I have no interest in becoming a martyr. I also have no interest in becoming a doctor. I have an interest in being able to provide the highest level of pre-hospital trauma and medical care to patients in distress.

In Ireland, that means becoming a doctor. Unfortunately, becoming a doctor who works reasonable hours might require becoming a martyr.

>I am currently trying to see if I can find a niche in healthcare, away from my software manager job, but am taking it slowly. For me, the 7 years of school are impossible, so no doctor for me. This comment is not meant to be in any way discouraging, and it may be presumptuous of me, as you have perhaps spoken to multiple doctors in the field interesting to you.

I didn't in any way read your comment as contradictory. In fact, this is almost exactly how I how felt. At some point in the last five years, I became aware that all my military first aid certs were out of date, and began my training as an EMT. Once I passed all the tests (which involved a lot more study and testing than any CS degree exam I ever took), I began to volunteer.

As an EMT, which at least in Ireland is 1/100th of a medicine degree, I became involved in more critical care cases in my first year than a junior doctor might see. Due to the SAR nature of my role, there is unfortunately a high likelihood of exposure to death, but every experience is a learning experience.

However, if your goal is to help people in acute distress, then becoming an EMT (or even lessor qualification) who can act as an immediate cardiac first responder is a great option.

> The feeling of tipping the needle towards keeping someone alive is incomparable, best wishes with your path transition, whatever it ends up being.

This is such a truism that I feel huge parts of the healthcare system relies on it. It's certainly true for me. I honestly feel it would be true for many others if they could see the direct benefit of their efforts.

I am aware that this is an absurdly long and rambling response to your comment - I reckon that I’m probably struggling in the same position as you. If you want to DM me, please do - I’m very open to feedback.


I enjoyed reading your comment, contemplating over our similarities and differences. I also got some experience as an EMT, and a military medic before that.

My latest foray before the current re-attempt, I was only able to secure part-time EMT positions, (volunteer with pay), but to get to a position with a regular schedule that would fit my other obligations would require going to more school than I could do at the time.

Whenever one talks about medicine / patient care with fellow practitioners, it is also fascinating to note how different we all are and that the field can accommodate many, of those willing to pay the price.

EMT to the general populace was not something for me, I found dealing with families in distress more emotionally draining than any unconscious patient, regardless of their state. So what would work for me, it appears, is either work removed from patient family interaction, or medical systems work, whatever it may be (innovation, tech collaboration with surgeons, etc. They are starting to use 3d modeling side-by-side during surgery now, etc)

Yes, the family is probably in the worst stress of their life, and, if you have the luxury, one aims to include them in your care protocol, attempting to at least assess their level of distress so they don't suicide or collapse in the next 24 hours, but you also have a huge ticking clock for the primary patient...


Respect. You are not one to shy away from tough decisions.


Why are we pretending they are not gonna all be jacked up on Adderall?


Because real life isn't like a YouTube video.


You think real life is not full of a bunch of Adderral/Vyvanse abusers in these knowledge industries?


Users, not abusers


I’m thinking of going back to school for Biology, but not sure. Have been thinking about it for a few years (getting older, seeing people around falling ill, and now the pandemic). Ultimately in Bioinformatics or Genomics. At least I can still utilize my technology knowledge than start from 0.

Also, the pay is less than a normal software developer.


I am extremely empathetic with you on the decision you have to make.

I am well aware that software developers on the whole have much better than average remuneration, so it's understandable that positions in other fields will attract lesser pay. However, another point which I didn't labour above (because I'm not sure if it's universal or in my own country only) is that student and junior doctors are expected to work absurd hours, often double the 48 hour per average week limit set by the EU Working Time Directive.

I'm currently (as in right now taking a break from) studying for the HPAT standardised test in my country in preparation for applying for medicine in the coming academic year. Although it's not particularly complex, I'm aware that if I had spent the time that I dedicated to my EMT qualification and now the HPAT, I probably could have added hundreds of thousands to my annual income as opposed to a decade of ~€15 ph labour.

This isn't so much a reply to you at this point as a lament about medical care is undervalued. I'm a competent software developer at best.


Larger bioinformatics groups often hire software developers with no biology credentials (just interest in the area)

Check out the uni job boards.


Yes thats true. You don’t need a degree to work in a field - one of the amazing perks of being a software developer


what are some of the more promising biotech companies? most of what I've seen is genomics with CRUD apps, sloppy python code, and untidy excel sheets.


I know it's the biggest cliche in the world, but the grass isn't always greener on the other side. Lots of musicians wish they had a skill that let them sit at a desk all day and get a stable paycheck.

Not saying you have to keep working in tech forever, but I don't think it's objectively stopped being fun and interesting.


I think the “trick” is to find a fulfilling non computer based hobby


I agree. I don't do side projects, I do BJJ and ride motorcycles. Those things keep me from getting burned out on coding.


My rule about side projects is that I only work on them until they stop being fun. I'm ok using my free time to try out a new language or something, but once I'm tracking down bugs I just stop. I'm not doing that for free.


Will trading work?


Absolutely. Every friend I talk to, from central bankers to dramaturgs, has regrets about the career they chose. It generally breaks down into where they are on the spectrum from (a) they wish their job was more creative to (b) they wish they had more money to live comfortably. I know almost no-one who is content that they've found a happy medium, and the few that do have done so through blind luck.


An alternate perspective to this is. The great line of thought, that you are meant to 'follow your passion' and discover your true calling. There is a job mean for you and you just need to find it.

I disagree with this and feel this thinking makes peoples lives miserable thinking they're somehow wasting their lives and makes people take plunges in life that they later regret.

I feel there is space for an attitude that, to learn a craft you need to toil and master it with deep dedication and practice. Mastery, will bring with it naturally that joy that we seek.

I think if people consider their craft as bigger than themselves, with an attitude of humility and learning they will get the happiness and satisfaction of building things. Rather than seeking a job that's somehow obliged to give you that happiness juice..


There's a blog post from a CS Professor that I stumbled across a bit ago - Find The Hard Work You're Willing To Do - http://www.cs.uni.edu/%7Ewallingf/blog/archives/monthly/2018...

Its short, only a few short paragraphs - but it has one key piece that I've found myself oft quoting to people:

> Maybe this is what people mean when they tell us to "find our passion", but that phrase seems pretty abstract to me. Maybe instead we should encourage people to find the hard problems they like to work on. Which problems do you want to keep working on, even when they turn out to be harder than you expected? Which kinds of frustration do you enjoy, or at least are willing to endure while you figure things out? Answers to these very practical questions might help you find a place where you can build an interesting and rewarding life.

> I realize that "Find your passion" makes for a more compelling motivational poster than "What hard problems do you enjoy working on?" (and even that's a lot better than "What kind of pain are you willing to endure?"), but it might give some people a more realistic way to approach finding their life's work.

--

I enjoy software development - and I do so because I enjoy solving those problems. To me, software development is like being paid to solve sudoku puzzles all day long (and yes, I watch cracking the cryptic from time to time)... well, at least when I'm not in meetings.

One of the important skills that I now realize that the dreaded math classes that I disliked (integrations and eigenvectors - ugh) was about the skill of continuing to solve the problem rather than giving up (and searching for the answer). Yes, there's a place for people who go to the back of the book or Stack Overflow for the solution - but many haven't learned the hard skill of continuing to solve the problem when its not easy.


This resonates and I would add, on the theme of managing complexity higher up in this sub thread, it’s rewarding to reduce entropy locally. Like, yes the complexity is overwhelming and a significant, even singular challenge — and also the individuals in the weeds have an opportunity to use creative means to subdue it to degree that is material to the sustainable success of their team, group, department, start up, etc..


Great link. As someone who burned out on a first career for exactly the reason stated, this is advice that I wish I’d received when younger, and the advice I’ll give my kids when they’re old enough.

Trying to progress in your chosen craft when you find the actual challenge to be sheer tedium is deeply demoralising and can affect other aspects of your life. In my case it lead to feelings of helplessness and pointlessness.

Such a great link - states the problem succinctly and provides an excellent heuristic. Thanks for sharing.


I also try to look at software development as some sort of brain jogging or solving puzzles because I actually tend to neither care about the actual product nor do I care for hyped up new technology.


That link deserves a top-level post.


I've tossed it in the submit page. It was submitted once before, but didn't gain any traction then.

As an aside, it is interesting looking at the history of other submissions from the same author - https://news.ycombinator.com/from?site=uni.edu


I gave it an updoot, so here's hoping for better this time.


Could not agree more! Same goes for marriage actually!

Thinking that life would have been better with someone else, is just an escape for the mind which makes people miserable!

The secret is to roll up your sleeves, and put in the work!


True but beware, sometimes no matter how much is put into it’s simply a bad match. Also struggling with a bad match is a learning experience in humility but one is not to force themselves for a lifetime in a situation they don’t enjoy at all.


These ideas are from the book "be so good they can't ignore you" cal newport


If you haven't watched Soul yet this is essentially the plot.


It's not that I have regret--I'm ridiculously well paid compared to other laborers, even if I'm still underpaid compared to the value I deliver--it's that I just can't stand the personalities and practices in this field, and I'm still in the (b) side of that spectrum.

Though that will change soon thanks to a fantastic liquidity event.

I'm looking forward to leaving this industry in a couple of months and living comfortably on my low- to mid-seven figure exit.


Yes, and I think the problem is more: "What I am doing sucks the soul out of my life so bad that I'd be willing to do anything else."


This is true. One of the best musicians I know. A trained classical guitarist with decades of professional playing.

Just became a real estate agent.


Play with electronics. Do embedded. Those go strongly together. Maybe you'll rediscover the love you had 20 years ago. Instead of giving up on the field do the opposite and go down the rabbit hole, maybe you'll like it there instead.


A lot of people seem to just create YouTube videos of their woodworking skills. Building drawers, cabinets, anything. They just drone away at it, but because it’s so visual, and you get a cacophony of random noises, that it makes for a good YouTube candidate.

Maybe you can segue into that?

Or maybe you can build and test drones. And the noise from the spinning propellers adds to the mystique of robotics development.


Peopleware, Mythical Man Month, Five Dysfunctions of a Team, and similar classic texts were all written decades ago.

It's been over forty years and many organisations haven't learned a damn thing from it. I don't blame developers for it, there are no dicks and idiots involved here.

Read one of those books now and it will still feel like an epiphany.


You are very correct.

I think they all have weak spots but any one of those will indeed illuminate one on how broken pretty much every place is. I’d like to try working at bridgewater where there are less games played.

One thing I’ve noticed is pretty much nowhere wants to acknowledge and act on employees emotions (for better or worse).

I love this comment https://news.ycombinator.com/item?id=16603929

And this article is pretty good:

http://hbswk.hbs.edu/archive/5289.html


> victims of the same broken game. I work with very smart people, to be honest.

Couldn't agree more. I'm an SDE1.5 at best, working with a guy that's probably a 3.5. Writes code that's way over my head sometimes, and always well-tested and elegant.

Lately I've been helping him by debugging issues in eg tsconfig and various JS build fuckery, and it's been both a relief and a surprise that even really brilliant people struggle with a lot of the same stuff I do. It's not (just) that I'm stupid and unintuitive – the tools are too, even for experienced engineers.


Of course they are. They are written by people and often become standard because of good marketing instead of merit.

However, I still find satisfaction in learning new things, trying to be better each day, overcoming new and more challenging problems and solving riddles in a nicer and more elegant way. I fail in all these things, too, of course - but it does give me a sense of purpose. And I don't appreciate any tool that comes my way, I'm picky that way. I love Python for its stdlib, React for its declarative nature, C for its simplicity... and avoid dealing with the JS build system of the month as much as I can. Enough to understand, but I try not to lose too much time and mental energy on them.

That said, if I didn't enjoy programming, I would be happy to move to management or even leave the industry to become a carpenter. I think that as long as you do something meaningful and also help other people (so that you can live off it), it doesn't matter much what that thing is.


> That said, if I didn't enjoy programming, I would be happy to move to management

would you go for project management in particular or are there other paths?


I've never worked at a company which took titles seriously, let alone fractional title levels; what on earth do those mean?


I’m 20 years in as well... I think it’s still fun... it’s just a game of fixing things... the other game about how people interact is not as fun but still kinda interesting... game on old friend


"it’s just a game of fixing things"

25+ years in, I get little joy/fun from constantly 'fixing things' that shouldn't have needed fixing (or nearly as much fixing) had people planned ahead, or communicated, or tested, or just listened to the people they'd hired that do these things (plan/communicate/test/etc).


35+ years in and I am grateful every day that I do what I love. It is fun to make things tick.


> Retiring sounds good right about now.

My personal plan, instead of retiring, is to work on inventing solutions to the issues plaguing large and complex software projects. One of my primary sub-goals under this mission, is to create a new programming language that'll handle complexity excellently, while also making it hard for a programmer to write bugs in it (strong static type system, deep static analysis, thorough linting, some kind of automatic proofing or verification, paradigms that make writing bugs less likely, paradigms that handle modularization and complexity gracefully, etc).

Overall, when there are big problems in the world (poverty, human rights abuses, climate change, bad software), I want to try to use my skills and abilities toward solving those problems, rather throwing my hands in the air, and giving into hopelessness.


>> create a new programming language

The problems with software engineering aren't technical. They are organizational, political, and cultural.


with respect i think it's a combination. business demands value delivery and features on a constant basis, and programmers are constantly layering crap over crap in order to deliver. nobody stops and says "hey, wait a second - let's pause, and figure out how we're going to invest now to make the changes you're asking for easier in the future." programmers need to learn to identify when this is happening (a technical skill) and demand change, and product needs to learn to listen and understand the consequences of not heeding this advice. because after 5 - 10 years of 100 different people working on a given system, the complexity becomes unmanageable, and the business grinds to a halt. and then heads start to roll. and yet the people demanding the new features now are never going to have suffer the consequences, because they'll be off to another venture in 5 - 10 years.


That's exactly right in some cases.

You are describing one set of organizational and cultural problems with software engineering that can only be solved through a cultural and political approach

Other organizations and cultures have different sets of problems.


Agreed. A new language will not solve garbage in, garbage out problems. A lot of times even when a BA tries to untangle the mess of business practices by carefully documenting it and proving that a better way exists, some stakeholders can still find it challenging adapting to a well intended change.


How so? The job situation for good developers has never been better. We can make salaries that would have seemed unthinkable two decades ago while working from home and doing something we enjoy.


This has not been my experience. It seems that it's a young person's game, and us older folks are not particularly encouraged to participate. Frankly, I've been stunned by the way in which I was treated, in the short period of time I spent looking for work, after leaving my last company.

Thankfully, I am not required to work, and have been having the best time I could imagine, since giving up on working for others. Instead, I work with people for free, on projects that I think are constructive and give back to society.

I am working from home, doing something that I enjoy tremendously. I'm doing the best work of my life. I just got done refactoring a fairly large backend that I wrote a couple of years ago, and am actually thrilled at the quality (and quantity) of my work. It's driving the application that I'm developing. I wasn't satisfied with some of the popular offerings, and had already written the backend as an exercise, so I used that, instead. It just needed a bit of tweaking to fit the new application.

I love programming and system design. I'm really good at it. I write code every single day of my life (My GH profile is solid green, and it's not "gamed"[0]).

It's just that I found others are not interested in working with me. It hurt, as I had spent my entire career, working on teams, but I rubbed some dirt on it and walked it off. In the aggregate, I'm actually glad that I went through that.

[0] https://github.com/ChrisMarshallNY#github-stuff


I think it's more hostile than you imagine. I'm quite young and can't even breaj into the industry with a job. I also am not bad. I do well in my interviews (I can feel it and they tell me too), I work on a variety of things and have side projects, I've done well at an internship, etc. It's a mess right now. I'm far from the only one my age struggling this way.

Had I not tried the self employment route I'd probably have starved to death or had to work at a gas station and then starved. I wasn't really ready for it either but that was the option. I live and breath programming and absolutely love it. I have since I was in my early teens. At this point though it's looking more and more like I'll have to do something else to get by. I actually always did want to be able to work on my own projects, but if I have to work in other fields then that will likely be the end of it. I won't be able to make enough to do anything but work.

I think it's just a hostile field in general at this point.


Man, I really feel for you. I am at the other end of the meat grinder, and am fortunate enough to have choices.

The industry is crazy competitive, right now. This is because of all the money to be made.

This has been both a blessing, and a curse.

One of the big reasons that I am not in a hurry to shack up with some company, is that it can easily make a joy into a horror show.

I would suggest that you learn discipline and structure, just on principle (since the industry doesn’t seem to value it). At least, you will be happy with the work you do, and that is worth more than you can imagine.


Companies look for expertise in older software engineers.

They want senior level to help them maintain legacy systems or lead the upgrade to latest tech stack.

If backend is your specialty, market oneself as expert in backed solutions using latest stack. The fundamental CS principles never change. Learn the basics of cloud, containers, orchestration, micro services, and inform recruiters about experiences delivering solutions in latest stack.

The recruiters will be rushing to your profile and demanding interview slots.

Good luck.


Actually, frontend is my strength. I've written (and shipped) dozens of apps. I'm quite good at "closing" the app development process. I've been shipping (as opposed to just "coding") applications for over thirty years.

The backend was just a more challenging project. I won't go into all the reasons that I wrote it, but it works a charm. A dedicated backend engineer could probably do better (actually a dedicated backend team. I'm fairly productive). I'm just glad I have a use for it. I was assuming it would never be used. I wrote it on a lark. Took seven months, but it was fun. I do stuff like that. A number of years ago, I taught myself to program Android, but decided I didn't like it, and never followed through.

As far as recruiters...They do rush to my profile. I have a lot of nice buzzwords.

As soon as they find out how old I am, though, the call suddenly has "connection problems," and I never hear from them again.

I've taken to making sure that my age is clear upfront, just to save time. It's amusing how quickly they start discouraging me. They start by lowballing me, and when I make it clear that I would have no problem working for low wages (I do it for fun, and I don't really need the work), they start trying to find other reasons I wouldn't want the job.

Like I said, I bailed on the rat race. It was just making me grumpy.


> I do it for fun, and I don't really need the work

Have you considered that this might cause you to be perceived as a hobbyist?


> Have you considered that this might cause you to be perceived as a hobbyist?

I don't care. If anyone perceives me as such, then they are just another person that didn't bother to click on the link, and find out more about me. I'm not particularly interested in working with folks like that. I don't hide a thing. Maybe the [0] thing is confusing, so I'll do it inline, this time: https://stackoverflow.com/story/chrismarshall

It's all out there, for anyone that wants to find out. I guess that it's a sign of the times, that no one is willing to do that. I was a manager for a couple of decades, and would have killed for that kind of information. I can't even image hiring an employee, based only on a short schoolboy test.

Of course, that cuts both ways. People may look at my code and articles, and decide they don’t want to work with me, but at least they are making an informed decision.


I don't mean a hobbyist in terms of your level of competence. I mean that employers might see your motivation for employment as the pursuit of a hobby -- that is, they cannot rely on you to respond to economic carrots and sticks.


Again, I don't care. One look at my portfolio will show you dozens of "hobby" projects that knock a lot of commercial, paid, shipping products into a cocked hat. I'm a Craftsman. I always have been.

I worked for 27 years, for one of the most conservative Japanese corporations in the world, and had a position of ultimate trust. If you know anything at all about this kind of corporation, then you know what that means. I strongly suspect that it would be very, very difficult to find anyone as Honorable, Reliable and Dependable as I am.

The entire tech scene is built around hiring ADHD kids, paying them sick money, and keeping them for 18 months. There's a vast industry, based around providing cultural and technical infrastructure to support this. The fact that you need to test applicants with leetcode says it all. There's no Trust, no Integrity, no Honor, and no Loyalty.

That goes for both corporations and employees. Everyone is out for their own goals; damn the company, the employee, or the team; let alone the customer (who are treated as product, these days).

I am a person of tremendous personal Integrity. Word is Bond. That goes as much for free, open-source efforts, as it does for paid ones. I have an enormous, years-long portfolio of very, very high-quality code, dozens of articles on Medium and my own sites, going into great detail about my personal philosophies and processes, and a decade of checkin history.

If no corporation values that, then that's OK with me. I know some folks that can't afford to hire me, but value my Integrity.

And, as far as "carrots and sticks," they have these new-fangled things called "contracts." I hear they work fairly well.


There definitely is ageism in tech. However, there are ways to minimize impact.

Become an expert in latest tech stack and experience in delivering solutions to clients. These positions are extremely difficult to fill, so recruiters are more open to older software engineers.

Open the door to yourself by expanding opportunities, vendor companies, contracts, freelance, start your own company, etc. There are so many problems in software and so few high performance engineers, globally.

Sometimes, you may be the only person in the world with that specific tech stack and experiences. Demonstrate the solutions and many companies will have to bring you on board, FE or contract at least.

For most companies, the age thing isn’t the issue. It’s that older software engineers have stagnated and won’t be able to keep pace. When you demonstrate high performance and solution delivery, age becomes less of an issue.


> When you demonstrate high performance and solution delivery, age becomes less of an issue.

Never even comes up. Like I said, I've been doing this for a loooooong time. I have a massive open-source portfolio[0]. Much of it is days (or minutes) old. I've been surfing the leading edge for my whole career.

No one ever even looks at it. I've learned that if they give me a binary tree test, I might as well just end the process. They want kids straight out of college.

In one case, I was approached for an ObjC job. I sent them links to several repos (shipping apps that they could build, run, and test) that used ObjC.

They completely ignored it, and gave me a 50-line binary tree test in Swift. They also dinged me for using quality coding/documentation techniques.

I did OK, but not great. I generally do mediocre at leetcode. I spend exactly 0.0 hours, practicing it.

It really isn't my imagination. It's real. I have a Facebook "friend," that is a young man. Nice guy. We get along great. We don't mix, too often, as we travel in different circles, but neither of us has any problems with the other.

His profile background is a desert scene with "SHUT THE FUCK UP, BOOMER" over it, in big text.

If it was "SHUT THE FUCK UP B***H" or "SHUT THE FUCK UP N*****R", he would be [rightly] excoriated and shunned by his appalled friends.

But as long as it's oldies, he's actually cheered on.

This is the current environment that those of us "of a certain age" have to deal with.

Kicking back at older folks has been something that has been going on for thousands of years.

The difference, in my opinion, is that companies are now often run by twenty-something CEOs. In the "old days," the companies were run by older folks, and there was always a cultural structure in place, that ensured that youthful exuberance and rebellion would be tempered by experience, age, and meticulousness. It was enforced by fiat; sometimes, to a fault. I think that we need to have a hybrid; not one over the other. Most of the teams I worked on, had a great mix.

Nowadays, no one wants "Grandpa" saying annoying things like "I have found that I can't rely on system garbage collection, because of the memory and performance hit; especially in threaded applications."

So, the solution is simple. Don't hire oldies. You'll be selling the company before the system goes pear-shaped, anyway, so...win/win.

In my case, I like to design and implement software architectures that are supposed to last for many years, and have significant effects on the lives of vulnerable people, so I don't do a slapdash job. That's basically heresy, in today's world. Some time ago, I read a comment that basically went "If you do not get physically sick, looking at the code in your MVP, you are spending too much time, worried about code quality." That's kind of a "zeitgeist," right there. The very fact that I could pick up a project that I wrote on a lark, two years ago, blow the dust off, give it a couple of tweaks (actually, it was a refactoring that took a couple of weeks. Bit more than "tweaks," but I was adding additional functionality; not fixing deficits), and use it as the backend for a fairly advanced app, shows that the way I do things has merit.

[0] https://stackoverflow.com/story/chrismarshall


My plan to minimize ageism is straight forward. Continuous improvement in latest tech stack. Demonstrate delivering solutions. Regularly interview with recruiters for positions at or above my level.

When the full time offers slows down, I’ll take on vendor and contract positions. When the contract positions slow down, I’ll start my own vendor or consulting company. I’ll hire younger sales and product people to be the face of the company.

I always look for solutions to problems, implement the solutions and make adjustments when needed. This is the kind of solution oriented mindset that helps get offers and land clients.

There are so many software engineering problems and so few people that can deliver the solutions. There’s no real competition, younger or older. There are enough to go around for everyone.

Good luck to you.


> Good luck to you.

Not necessary. I'm living the dream, right now. I worked for many years, to get to where I am now.

The fact that I'm not valued, simply as a function of my age (I'm 58, BTW), is annoying; a bit hurtful, but not crippling, at all.

As a matter of fact (not theory -fact), I'm more productive that I've ever been in my life, I learn more quickly, and more holistically, than I ever have, I use tools more effectively than I ever have, and I am enjoying what I do, more than I ever have.

There's the most positive thing that ol' Freddy once said: "That which does not kill me, makes me stronger."

I had to go through the rejection and humiliation to reinforce and realize my own sense of confidence and self-reliance.

I can tell you that the folks I'm working with right now, are basically pinching themselves.


I don't mean to sound rude, but what age are you right now?



That is kinda amusing.

On the other hand, someone telling other people how to handle ageism should definitely be prepared for such a question.

Conditional on the person I replied to's comments, if he/she is 60 I can perform a particular probability update, if they are 20 then I'll perform another probability update.

tl;dr : if you tell people how to handle aging, your own age becomes relevant.


There is ageism in tech, it’s very real and people have to plan for it. It’s not as old as people think it is. It’s way lower than official retirement age.

It’s like any other problem, there are solution options. Some people switch to management. But ageism affects management too.

Focusing on the age doesn’t help I any matter. Age is simply proxy for stagnation to most people. The common euphemism is you can’t teach old dog new tricks.

Focus of solving problems and delivering solutions utilizing latest tech stack and design patterns. Effectively demonstrate these dynamic abilities and open the doors to opportunities.


That's true but that is to offset the really negative aspects. How many places never let dev's actually design systems that stand up to scrutiny because the execs don't care if BS is pumped out because as long as the business floats then it doesn't matter.

Then the code base becomes a mass of spaghetti that at this point the revolving door of devs have to both figure out and keep alive in ever increasingly stressful situations until they either burn out or move on for greener pastures perpetuating that cycle.

So far in my career the split is 60:30:10 places who don't care about actual engineering and run their business on crap, those who recognized things are biting them but the amount of inertia you need to counteract things and rebuild is huge and then the very fine percentage of places that actually have a good culture around engineering.

The first is horrible because you're a fungible asset and the job is miserable the second is better but still bad because at this point they do see you as valuable but you're going to be spending your time digging them out of a grave and then the third is just a magical experience where you're valued and the codebase isn't constantly a light breeze away from collapsing.

The majority of the industry is in position 1 and I guess we'll see if it ever makes it to 2 or 3.

Worth noting that I made high salaries and could work from home in every case but it would be correct to say I continue to enjoy programming in spite of the industry.

I also don't think it's a coincidence that companies who are in group 3 are typically leagues ahead of 1 and 2.


The other problem is that there's factors in a company other than, strictly, its engineering culture. I could get a good job, in a good engineering culture, working in adtech, but as long as I have a choice I'd rather not.

The place I work instead can charitably be described as "a victim of regulatory capture," but at least I'm working in a business that I believe has a legitimate reason to exist.


How old are you now? Or what age group are you in now?

It seems like businesses want the expertise of a 20+ veteran, but want to hire 18 year olds, so they can pay them less, and dangle silly trinkets like free cafeteria food in front of them.

Oh and, why is it taking so long to work on it?


A good salary motivates people temporarily or if they are in dire need for money. In the long term, it's far from enough.


I've been programming for about 40 years. Had ups and downs. But I mostly worked on creating new products (not always purely software). Also been on my own for the most part. In the end. I love it and I hate it. I love it because it let me express myself and it is a great feeling when you see others using your products. I hate it because there is always way too much non creative work and general BS around but that's life.

But generally I enjoy it and are not planning retirement. Will just maybe work less.


After being an entrepreneur and an independent contractor most of my career (I'm 62), and now finding myself working for a company "rolling up" a bunch of software companies, I will say that the state of employment seems to have gone downhill drastically over my lifetime.


Could you expand a bit on this? Do you mean the quality of the people in employment has gone downhill or do you mean that equality of life for employees has reduced? Less job security, poorer working conditions etc?


The latter. All the things you say, plus inexpert management, ridiculous legalese in employment matters, lack of respect for employees, poor hiring practices, etc.


> Retiring sounds good right about now.

I tried that. After 6 weeks of watching TV I restarted my business and went back to work. Retirement is a living death.


Maybe the problem is that you spent it watching TV?


Seriously, I was between jobs for a while and it was the best time I've had in ages. I could (and would) do random projects that struck my fancy all the time, go out, see friends, write, design things... It was much more productive than a job, and I was constantly doing things with the parts of technology that don't suck.


> Seriously, I was between jobs for a while and it was the best time I've had in ages.

I guess that depends on your financial situation. When I've been between jobs it has always stressed me out. I haven't been in a situation where I was worried about making rent or buying food, but I was worried about finding a new job.


That's true, I live in a country where you can live luxuriously on $2k/mo.


Watching TV is a living death. Retirement is what you make of it.


Hey, thanks for sharing this. Mind expanding? I'm curious to hear what you had planned going into retirement and what you seek going back to work. Are you right back to the same as you were right before "retiring"? Knowing how your first round of retirement went, what would you have done differently in the years/decades leading up to it?


What I discovered is that a life without purpose is not a life. The fun is in having worthwhile goals and striving to reach them.

Being passively entertained, bleh. It's also why I have a very limited appetite for "see the world" traveling. I can only look for so long, then I need to be doing something with a purpose.

I've seen what happens when people retire. They suddenly get old and lose their vitality. They become boring people.

My plan is to work until they carry me out in a box.


This guy planted an entire forest by himself, probably did more for the world thank most of us ever will:

https://metro.co.uk/2018/08/08/man-turned-desert-forest-plan....


I tried it.

I figured out I can make a few dollars a minute sitting in front of a computer screen or I can make 0 dollars a minute sitting in front of a computer screen. Those are my two choices.

The choice is pretty clear.


You could also make 0 dollars a minute standing on a surf board, hiking in a national park or reading a book. There are a lot of things in life that are more interesting than computers.


I've done skiing. Go up, shoosh down. Go up, shoosh down. Go up, shoosh down. It doesn't take too long before I'm off to the lodge to go drinking. And I love alpine views as much as anyone.

(When I was a kid, I'd ski until utter exhaustion and could barely walk. But things don't work like that for the adult me.)


If skiing is not your thing, find something else. Almost anything you could possibly do is better than watching TV.


"You could"

But I didn't. I tried. It didn't happen.

I have to face facts, I might just be a worker bee.


>It's the technology and the employers and the culture of development that's the problem.

Classic "it is the other people" cope out. We all are willing participants in building that mountain of mostly garbage, and there is still huge civilization progress enabled by it.


> It's the technology and the employers and the culture of development that's the problem.

What is it about those things that you find to be the problem?

Genuinely asking.


i can take a whack -

no one works as a team anymore. everyone gets their project, and they sometimes chat about it, but the whole group dynamic has been lost. this is huge. it almost guarantees that someone is pissed off because they dont have a voice. and that at least two developers are working at cross purposes. that someone is off diligently working on their piece without a real understanding of where it fits in.

in the absence of group coordination, there generally is little or no technical management to prop up the group. requirements are dumped on engineering without the valuable back and forth about what makes sense (and how or why)

no one tests anymore. we've all decided that those 8 units that the cicd runs on every commit is somehow adequate. alot of places dont even try to triage bugs anymore or even keep information in tickets so that someone down the line might figure it out

no one plans anymore. there is no more grand arc of the project. we just do what we can get done this sprint, and pick up a little work for the next one.

no one reads anymore. technical design discourse used to be the most important thing to do. now if you write up a draft, no one really wants to read or discuss it beyond grammar corrections

same for reviews - i've been at organizations where every PR was a chance to really get into the design choices and the tradoffs. now you're lucky to get some useless style comments

the scope is radically reduced. what used to be a glorious exercise in world building is now reduced to a choice of which large modules to use and the application of just enough glue to stick them together.

no one feels responsible anymore. the project is a mess. i've got my part and I'm doing the best I can.


> no one works as a team anymore. everyone gets their project

One complaint I have about some agile implementations is that it takes away individual ownership and reduces larger problems to a series of less interesting choices. I agree with a lot of your other points though.


- Culture of development People rarely know, even in ballpark what is performance of application until it is too late. We operate so high in abstraction that stuff mostly work by accident and people do not bother about putting daily server restart as a fix to bug. Technologies that are clearly bad are still widely used and teach at universities. Testing is either offloaded to manual QA testers or gamed by unit testing getters and setters. Architecture is decided by astronauts that not written line of code in a decade or by overhyped Junior watching conference talk.

- Employers Once the application is shipped to the production team is moved to a new project or contract is terminated. Day after said release you have a legacy system that over time will just get worse. Maintenance even in big tech companies is a problem (Google). Employers would either drive a hype train and re-write their systems every year or reject any attempt to modernize legacy app. Rarely companies invest into giving time and opportunities for people to learn new things. And finally Dead Sea effect combined with Price's Law lead to some truly dysfunctional teams.


Examples of stuff that bites?

-Companies that don't know how to recognize valuable work, so they only track output.

-Cult of the hero.

-Places where learning is not part of the job, both in terms of technologies and in terms of business (as it turns out, people still learn, the bad way).

-Focus on individual performance but demands of teamwork.

-And of course, all the kinds of abusive relationship, work edition.


I think change would be good. After 30 years software I have a very strong craving to do something totally different. I never got really settled into the corporate life so I am pretty exhausted with it now. Programming would probably be still fun in a different context.


I'm 25 years in, give or take, and I still find myself amazed people want to pay me money to do this. I do find it romantic. The whole thing.


Retirement sounds amazing.

What really gets me is my employers hiring engineers for $500k per seat and they can memorize their way through Leetcode interviews but can't even structure small programs in a modular, easy to understand way, and when it comes to larger pieces of software, it's complete chaos.


Working with Clojure/Script is fun.


I've been wrangling software bytes for a while and I am pragmatic about the business.

Software engineering is extremely difficult. High performance engineers are rare and valuable. Some times, they become jaded and burn out.

This is my career and my craft, so I'm inclined to ride the waves and trends in software engineering. Negotiate for above average salary while maintaining my tech stack and producing at above average output.

Most people don't understand what it takes to develop and deploy software solutions. They only see the unicorns like Google, Facebook, and think software engineers are common. They don't see the vast swaths of land of failed software startups and dreams and incompetence in software engineering.

Most people in software engineering doesn't know or comprehend basic data structures and algorithms, which form basis for all software solutions at scale. Yet, they are filled into dev position slots by HR/management and asked to develop complex systems.

To have long term career in software engineering is like any other trade. Observe how the game is played, learn to play the game and play the game right.

A software engineer with basic skill stack and right long term view can ride the software wave for decades, just by understanding basic CS principles and utilizing them to develop solutions. Switch jobs regularly and negotiate hard for salary and levels.


> Switch jobs regularly and negotiate hard for salary and levels.

I’ve been at my current role for almost 7 years. It doesn’t pay nearly what I could be making elsewhere. I’ve interviewed and been offered better money, but it means giving up the kind of work I do now for something less interesting.

I’ve turned down those offers and stuck where I am, even though it means less money. As my wife told me when we were talking about this: This is the work that you’re going to be doing every day, and that has to be worth it.

That said, there is a cost to my career sticking here instead of moving around.


There’s a phrase I heard while back, I don’t live to work, I work to live.

High performance software engineers negotiate for higher salary and the type of work environment and type of projects. They work to live by taking control over their salary and project assignments.

Sometimes, they have to work on less interesting projects. They deliver solutions. At the same time, they regularly have conversations on other more interesting projects. Make sure they line up more interesting projects in the roadmap.

There’s more risk in stagnating position than taking control and regularly switching jobs for higher salary and more interesting projects.

There are significantly more software engineering problems than people that can deliver solutions. High performance software engineers can have their cake and eat it too.


> because so many of the programs you depend on are written by dicks and idiots

Out of all the problems with programming as a job, this is around the bottom of my list.


I'm working on an app that calls other internal services inside our company, one of them is a call to update an account balance. We were running into this issue where we were getting a 504 Gateway Timeout on the update balance call so I eventually found the Slack room for that team and asked about it.

They ignored me for a couple weeks, but I kept asking and eventually someone answered and said yeah you'll get the 504 Gateway Timeout if you try to update the account balance to the same value that it already has.

OK, that makes sense to you? What if there was an actual gateway timeout?

You would also get a 504 Gateway Timeout in that case.

They apparently have no plans to modify this service's behavior.

I let it go, I just moved on with my life. I did not find myself awed or stunned with the mountains of work and talent and creativity and foresight and intelligence and luck that went into it.


I can guarantee you that 5 other teams rely on that specific behavior and don't have the will/independence ("budget") to implement that change if the api was fixed. Not only that, but if they did make that change, their manager would instantly have a handful of directors down their throat demanding an explanation why they just added work to their teams that are busy with Feature Work (TM).


don't have the will/independence ("budget") to implement that change

So, dicks and idiot middle managers. I think you made his point.


No. This is such a small issue who honestly cares if it gets fixed? I guarantee you this is not the most important thing anyone involved could be working on. Too many perfectionists on this website.


"We were running into this issue where we were getting a 504 Gateway Timeout on the update balance call so I eventually found the Slack room for that team and asked about it. They ignored me for a couple weeks,...."

Someone could have documented this and/or simply answered a damn question instead of wasting weeks of opportunity cost. Too many dicks and idiots on that website, it seems.

"who honestly cares if it gets fixed" - everyone that comes after this and has to deal with it and waste weeks of their life trying to pry some required nugget of info from a passive aggressive group of maintainers of stuff which actively ignores industry standards?


Put yourself in the shoes of the team who was asked to fix this. They probably have a dozen feature requests, two dozen support tickets, and now this guy wants this bug fixed because it does t follow a standard and he had a hard time understanding it. Yes, that is a real issue, and in the ideal world it would be fixed along with every other issue on the list, but in the real world it is unlikely to ever be important enough to deprioritize the other important issues I imagine this team faces. At the end of the day, some bugs are just better to live with.


again, part of the problem was lack of communication and documentation. waiting 2 weeks to be told "fuck off" (in essence) is shitty all around.. it's not JUST that a (stupid) bug exists, it's how it was handled in this case, and, apparently, how they choose to handle it going forward, affecting who knows how many more people/teams in the next few years, and how many more weeks of wasted time. And if this team handles this sort of thing this way, how much more time is being wasted and projects delayed? This is at least as much a communication problem as it is a technical one.

And yeah, I can put myself in those shoes, as I've been on both sides of this. Treating newcomers in your communication channel (slack, etc) with the same level of urgency YOU would want (or need) when you ask for help from some other team is a bare minimum.


I agree that the devs were needlessly uncommunicative, but I disagree that the right decision is necessarily to fix the bug. I think it’s perfectly reasonable to leave the bug as it is, even if it miffs some devs on hacker news.


This is a total failure to follow any sort of standard.

A 504 is a gateway timeout due to the server failing to complete the action, hell, a 400-level for "you fucked up" would be preferable.


4xx would be what you want anyway, no?


What you described:

  let x = 2 // runs
  x = 3;    // runs
  x = 3;    // runtime error, you made a mistake
No, I'd want a balance update to succeed. Even if it's to the same value that it already had.


Or at least return a "no change" message, and not a failure result in the 400s or 500s.


I don't think it's clear from the OC that even if they weren't using the wrong HTTP response they would want an update to succeed if it is the same value, at which point 409 could be a reasonable response code.


2XX level is for the action succeeding. 4XX level is for the action failing due to the user. 5XX level is for the action failing due to the service/code/infra.

In the real world, updating your balance to the same number should be a 200, however in some weird financial world, it may be a 400 because you may not be allowed to set the same balance due to some financial rule. A 500 is a terrible choice unless setting the balance caused an error at your code/infrastructure level.


304 would be fitting.


Nobody competent wants to spend extra time and work dealing with junior level mistakes. If the basic stuff can't be done right, then the complex stuff definitely isn't done right. Little issues like this cause ripple effects and now guaranteed you've got incorrect behavior in other parts of the system because of this broken API. It's a time suck all around.


The person who brought up the story mentioned account balances. Someone will definitely care when a latent combination of bugs is triggered and the company loses money because of it. See Knight capital and the more recent Citi debacles.


...And once you walk a bit in their shoes, you realize they're equally pressured. In the end, they are neither dicks nor assholes, they're just clever enough to see that corporate words have no meaning, and maybe they turned a bit cynical because of it. And certainly, if their own boss is bullshitting them and their reports can read their bullshit, why should they be the ones taking the hit?

A shitty environment can't foster good work relations.


Yeah, I'm sure there are valid reasons for why it behaves the way it does and there have been staff reductions in the last few months. The point is that it is pretty typical to spend huge amounts of time figuring out why things work they way they do, and it turns out to be some minor detail that isn't going to help you be a better programmer, it is just work that needs to be done to keep things from falling apart. It isn't very romantic.


Too real.


Similarly a colleague just told me yesterday about a data vendor who is sending data over on a almost nightly basis. They changed the process/format - without notifying anyone - and things broke.

End users of my colleague's application were now saying they were seeing inactive client data coming up in their app, and it was causing confusion.

During the time trying to figure out the new behavior, the main client finally got something in writing about "here's how it works" from the data vendor...

* Rule 1...

* Rule 2...

* Rule 3: If a client record has not had any data updated, we will only send over the client name and header info, but no additional data records will be sent over.

* Rule 4....

* Rule 5: If a client record is no longer active in the system (for example, has been deleted), we will only send over the client name and header info, but no additional data records will be sent over.

Questioning back to the original data provider - if we get a client name and header info, but no additional data records - what does that mean? Does it mean the client is inactive/deleted, or simply that they've had no data change since yesterday?

Absolutely no coherent response, and I doubt there will be one. The defense of "no no, we have to keep stupid behaviour around because people rely on it!" doesn't even stand - this change came about in the last couple weeks, after having worked this way for more than a year.

It's both maddening and frightening how fragile so much daily data exchange is.


Oh man, we had a connection with an API recently where if you sent it some incorrect data it would just hang. No errors, no closing of the connection. Just hang. And ofc they don't offer a heartbeat over that channel.

That would still be fine... if the data was static. But it's not - and changes are communicated; but not to the relevant tech teams.


Awe and contempt are basically the same feeling, but with the charge flipped. The author is amazed that it works to the degree that it does, you're amazed a how things don't work the way you want them to.

Such is the power of framing, I guess.


I used to get emotional like this about programming, both the awe and the contempt depending on circumstances. Now, after 30 years, it's just work. I don't really feel anything about it. And that's kind of the way everything is. Nothing is new or exciting. I wake up, work, do household stuff, eat, go to bed. That's life. Not interesting, not depressing, just neutral.


>Not interesting, not depressing, just neutral.

The absence of feelings sounds exactly like depression.


Depression is a bit more complex than that though. You can be emotionally neutral if you're just not strongly affected by what you're doing, it's probably the default state if you've done something for a while. I'm emotionally neutral when I brush my teeth.


True, let me rephrase what I meant then, if everything, day in, day out, feels emotionally neutral, that's very depressive sounding.


Yeah for sure. Anhedonia (no longer enjoying things you used to) is a strongly associated symptom. Of course it could just be a rut and you need to shake up your routine, introduce some variety, but that's matter of severity rather than category.


But it doesn't seem that way. I'm not unhappy, or suicidal, or gloomy about the future. I just don't find that anything really feels "new" and therefore nothing really seems exciting. It's like if I got that cliche question "what are you passionate about" in an interview, my answer would be "nothing."


I think it's fair to not be passionate about programming. As long as you have some sort of creative/passion outlet.


> As long as you have some sort of creative/passion outlet

I used to feel that I did, when I was younger. Not really these days. But I'm not sad about it.


Ma, the passion police is at the door again.


you have 24h to present evidence of sufficient artistic hobbies to your local station.


Don't you have the feeling you want something exciting?


I'll put it this way, I have no real burning desire to do anything that I haven't already done.


Oh yeah, life goes on, long after the thrill of living is gone.


The glass is half full.


So all the difficulties in engineering are due to "dicks" and "idiots", unlike like the author who is presumably the only clever person in the entire industry. Here is an example of one thing I actually don't like about this profession: too many emotionally stunted egomaniacs.


To be fair, it's actually a pretty entertaining article, and if you haven't read it, it's definitely worth taking the time for it.


Write more code - solve fewer problems.

Engineers solve problems. We use our expertise to take stressful and difficult problems and reduce them into simpler ones. You cut through bureaucracy and a healthy amount of talky bullshit to solve problems. The better you are at this, the more you're rewarded as an engineer. But this is a taxing process.

Writing code is creative. You find your own problems, and solve the ones you want to solve. If you don't want to solve something, you let it fester - or nurture it - as you wish.

Take a look at Racket. Read a book about Lisp games programming. Find an old C64 and learn some BASIC. Check out PICO-8. Or see Inigo's SDF website and try out some shadertoy. Ignore practicality, or focus only on your individual practicality.

Engineering is a discipline and that makes it tiring over time. You don't always have to be improving something.


> Read a book about Lisp games programming

Any recommendations?


https://nostarch.com/lisp.htm

Land of Lisp by Conrad Barski. I picked it up in a humble bundle for a couple of bucks and really enjoyed it. It was unabashedly nerdy and fun, and I really liked being exposed to that again.


I don't know about most people but devs should have their own personal knowledge management system ( do it on any tool, notion, evernote..) but it's an absolute must. These facts you talk about are fleeting and in the moment the revelations of the learnings seem so clear, but 4 weeks and all the little details go out the window. Save all your little Linux command pipe chains. Config values that worked and few sentences of caution to your future self of what to do and not to do. Otherwise you're just going to make the same mistakes in an years time...


Can I get a raise of hands for folks who think "Dream Machines" is the #1 book on software? How about for those who believe that Engelbart's Augmenting Human Intellect is a driving force for humanity? And that software is a radical embodiment of that all? I think we can get a modest show of hands; I've seen enough confirming points of view from about. (Would that I have a memex to highlight all the mentions I've seen, all the other endorsements!)

Elsewhere I've talked a bit about whether we are romantically engaged in software development. Or whether we are justifying ourselves, merely up to fun.

And I think this comment hones in a lot on what the real chase of this all is, on where we can be radically romantic & hopeful & builders of enduring meaning. It's good advice, for just trying to get better. But this act of enhancing ourselves, learning, cobbling together pools of wisdom: it's the meta-act, it's what software development enables, for software & for other areas. A push for excellence. Software both requires us to improve ourselves, to learn, but it's also a tool for learning, for augmenting ourselves, for becoming more than what limited things we might otherwise be constrained to develop into.

Working not just with but on personal information systems, is, in my view, a nearly sacrosanct act. I see developers like Karli Coss[1] as vanguards of humanity, a bringer about of higher orders & new ranks of human development, via software. Don't merely just use a knowledge management system, develop them! This is the core point, the core enablement of software, and it's not automation or products or ai that has ultimate relevance: it's this human development, this getting better at getting better. Invest yourself into knowledge management systems, build them to further reaches. Pick up really good open source tools like Foam (built as a vscode extension!) & build plugins, expand, grow! Excel! Keep expanding the reach that your mind can travel, by actively engaging yourself in building better bicycles of the mind.

[1] https://github.com/karlicoss

[2] https://github.com/foambubble/foam


I've felt both ways at different times. Both are true. The fact that anything ever works is part of the magic.


Even the smartest programmer will eventually fail to understand every detail and implication of a system due to cognitive load limits, and thus bugs.

Which is why languages that feature less cognitive load to understand (such as functional immutable languages) are a better direction for tomorrow’s code.

If a function called from your known scope cannot modify anything you pass to it, that’s an entire class of bugs made impossible to create.


I feel both, depending on how my day is going. They're both true.


Most programmers are not idiots, and whatever degree they are dicks, little of the dickish behavior is directed towards leaving traps for future developers.

That poor code gets written is due mostly due to the constraints (both technical and non technical) around writing code.

As a further aside, I've never been in fear of losing my job if I couldn't solve a bug. If you have been (for any other reason than the fact that not solving the bug would be an existential threat to your employer), then may I suggest finding a better employer?


Or this:

“Find creative ways around standards, limits, laws, processes, morals, etc. so I can make a quick buck and pass you some table scraps”


Or worse than table scraps: pieces of paper that may be worth something someday if you keep working hard enough.


I just treat startup equity as a lottery ticket: but, I find the work itself interesting and would be programming even if it wasn’t my career.


Try buying some FDs on the stock market for an actual lottery ticket that might pay better than startup equity ever will.


The system and forces that make this table scrap arrangement possible are the same forces that generally drive the salaries and perks of tech workers much higher than the average for other professions. It's healthy to be cynical but it's also important to look at the overall balance of power of the social classes. The 9% versus 90% makes more sense than the 99%


Yes but if you go from 99% to 90% you increase your number of enemies 10x.


That’s my favorite essay of all time, and an incredibly accurate.


> There’s a scene in Moneyball in which Brad Pitt’s character, the manager of the Oakland A’s

This is how you know the article was written by an European. Billy Bean is of course the GM, not the manager, a subtle and pedantic, but very important difference in baseball clubs job titles.


CRUD.


The true wizards of today are the AI engineers and scientists.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

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

Search: