HI version is available. Content is displayed in original English for accuracy.
Advertisement
Advertisement
⚡ Community Insights
Discussion Sentiment
67% Positive
Analyzed from 6959 words in the discussion.
Trending Topics
#more#code#flow#don#coding#state#phish#something#software#doing

Discussion (139 Comments)Read Original on HackerNews
With that said, when I read this blog post. I feel the author’s pain. And it’s the first time that I emotionally get what the other side of the programming spectrum feels what it has lost. I feel sad about it. And because of it, I will also wonder about ways of bringing it back.
[1] not fully though. Something I can love coding by hand for months.
Enjoy this while it lasts, because very shortly LLMs are going to be fundamentally better at being the "idea guy" as well.
I had the same feeling reading this article today as I did reading the NYT article about the closing of Butter Ridge dairy farm. All that family wants to do is raise cows, name them, and milk them but it doesn't work as a business anymore because the factory farm machine took the viability away.
I feel the author deeply; this is coming for everyone across most of the economy.
I have programmer friends in their 40s to 60s who are seriously depressed currently (and 20 year olds worried for theirnl future perspectives, of course). Mental health is not just a young person's game.
I strangely feel quite lucky that I got more and more into electronics and hardware over time as I moved from web and desktop more and more into embedded/consumer electronics and companies who also employ mechanical and EE engineers. When I was younger I used to dumbly worry this meant giving something up (the purity of software approaches, etc.), but instead it made me consider myself an Engineer with a capital E and strive to learn the engineering method more generally, and learn so many other fields of the trade. It turns out this is a much more resilient identity than just Programmer and I recommend that approach.
Some people are just born something (engineers, in this case), and they're that something for life.
I always have a hard time explaining to "normal people" that such life is not boring at all, in fact, I can't remember a single time in my life where I was actually "bored".
I feel like I've lived 3-4 completely different lives so far, but the constant is the ability to adapt to the next one, and still find joy in it while you're there. "Survival is the ability to swim in strange water."
Personally, the AI tools have been transformative for work, but haven't affected how I work much. I have always coded as a team. I'd often do the largest and most complicated parts myself, but work (both at work work and my hobby work) has always been about passing things between colleagues based on what our strengths were and how much time we had.
The AI tools are another colleague. They work incredibly fast, and I do less coding myself now, but my goal was always to solve the problem, not the code itself. The AI tools do a great job most of the time, but they sometimes screw up and need more guidance or me to step in to fix the thing (usually a very small error compared to the whole). If they screw it all up, we might need to start from scratch, or I might need to just do it myself. But that's not most of the time. And then I figure out the thing missing in my process to move them in the right direction, and improve it.
I feel like any software developer used to collaborating with, training, and mentoring other developers knows exactly how to work with AI tools, and the only main difference is how much effort I put into being really nice about it the whole time.
One main thing has changed. Before I would handle the most complicated problems people were having trouble with myself. Now I allow AI to work on them, even if I know I'll have to fix it. The difference is that I care about the time, the strain, and the morale of my coworkers. AI is just getting paid for iterating tokens, so I don't have to feel bad about what I ask it to figure out for me.
Yes, and it's very not fun when your identity is being reshaped before your eyes in the matter of a couple years.
I wonder how many developers are going through real grief right now, while everybody else, lacking empathy, are just repeating "get a grip, it's just a tool" or "you better adapt or you're done".
Well, I know I have gone through these difficult emotions, and I choose now not to identify with my work, or at least my career any more. I certainly do not identify as what most people these days refer to as 'software engineer' any more.
The only way I can still enjoy programming now is if it's applied to artistic endeavours. I'm done with the soulless, cost-efficient software "engineering" (which by itself is a laughable proposition and a far cry from the high standards of other fields of engineering)
Full agent coding however is the complete opposite, you’re in constant damage control of a junior who moves fast and breaks everything. They’ve got better but still do dumb mistakes.
lot of engineers are discovering firsthand what it’s like to manage a team of eager but useless employees. Not fun at all
I suspect with the prices going up, that realization is going to be pretty appealing.
As some of us have been predicting, model capability had already mostly plateaued, and the Chinese have and will continue to relentlessly push cost down. Chinese models will be used for 95% of things, with nation-native models for security/sovereignity-sensitive workloads. Eventually (5+ years from now), efficiency gains and hardware progress will make running local models the dominant way of doing things.
And yes, that puts the investors of Claude and OpenAI in quite a pickle.
What started as all-you-can-eat $50 buffet has quietly become a $6k bill, frontier models that don’t ship your codebase to Beijing don’t come cheap anymore.
It feels like nobody is even trying to iterate on the "power-tool style" usage of language models, everyone jumped straight to agents. It's not clear to me that removing a human from the loop is strictly more efficient though. Imagine an editor with an embedded language model (either running locally or using cheap cloud models) that is constantly churning, analysing code, reading debug logs, offering suggestions. Refactoring is not b̴e̴g̴g̴i̴n̴g̴ asking a chat interface to make changes, but structured refactors utilising the language models powered by the underlying ast representations to pull off much larger or involved refactors that surpass the abilities of current IDEs. Or doing codegen in your editor in a more structured (and thus repeatable) way compared to an agent spitting out code that you have to then review.
I strongly doubt that. Flow state happens when you can disassociate thinking and doing. Most of your brain is on the thinking while the doing lags behind. It’s like driving on a well known road. You don’t pay that much attention to the act of driving. Instead maybe you start planning what you want to do on your next stop
Using ai auto complete would be like your well known road, but turned into an obstacle course. You need your full focus on the road. Not that different from someone that is unfamiliar with the road, but not a flow state either. Full agentic coding is you being in the passenger seat with a driver known to be sometimes erratic. Less thinking but more worrying.
I find this impossible to wrap my head around. Any time I autocomplete more than a single line, my flow is destroyed when I have to review what was just autocompleted. The only way I could remain in "flow" in this circumstance would be if I didn't review the code... I'm not ready to trust the LLMs that much yet
This triple-negative is hard to parse.
Other domains are not like this. There will probably never be enough poetry out there to make an LLM do anything but be a poor imitation of a poet. This data is extremely hard to generate.
And not even necessarily when coding… I find that if there is no music playing, I will start a song in my head. That can get frustrating—the song loops, perhaps in fact just the chorus. So I turn on the external music and it seems to allow my brain to do other things.
I’ve given up trying to get that feeling back at work.
We were lucky for 20 years, now if we want to do it for craft it’s time to contribute to OpenBSD or something — with phish on, not for money.
I think projects like these will end up being the highest-quality pieces of software out there.
So I am working on a personal OpenBSD-related project. I have no idea if it will ever see the light of day. It scratches an itch and I am having fun doing it, and I don’t use AI. It’s forcing me to read man pages carefully and OpenBSD source code (side note: the lack of comments in their code is almost a “fuck you”).
I wonder if I should try out some Phish.
Still do!
But when I think about it from the author’s position, I may actually have been lucky. For this person, writing code may have been a way of life. In my case, I only started doing field work and using AI relatively recently, so I was able to adapt faster than I expected.
If your whole way of life changes, the shock must be much greater.
In contrast, I had no real status or social position to protect, so perhaps it was easier for me to let go. If I had tried to compete fairly and directly, I could not have beaten the experience and accumulated skill of veteran programmers.
Of course, my ability to write code was something I was somewhat proud of. Giving it up was painful, and it brought regret and a sense of inferiority. But at the same time, I also find myself thinking: “Was I really supposed to fight against veterans like this?”
Recently, this feels very similar to Durkheim’s concept of anomie. While reading this, I kept thinking about categories such as conformity, innovation, ritualism, retreatism, and rebellion. There are many points here that make me think.
If, in the future, coding changes again from today’s agent-based coding into some other form, what will happen to me then? By observing how senior programmers are reacting now, perhaps I can draw my own conclusions and prepare for that moment.
Right now, agent-based coding that depends on specific companies is dominant. But I think the current price of agentic coding is too cheap. At some point, when it becomes more expensive, local LLMs may become mainstream. If that happens, damaged or weakened code-writing ability may become necessary again.
So the question is: how should I prepare for that?
This was an interesting post.
This post makes a good point: managing LLM models isn't really the same thing as thinking hard about a particular problem, solving that problem and then concretizing it in code. If the work becomes managing models, I think we're going to see a pretty stark divergence between what people enjoy about developing software today and what the job is requiring. I'm not yet convinced LLM tooling will stick but, if it does, it makes me wonder what kind of person will be doing software development. Maybe some of same people and they find something else to enjoy about the job but I bet a lot of a different kind of person.
Personally, I am very uncomfortable with the idea that all software development might be mediated by LLM tooling and, as a consequence, require payment to a large corporate entity like Anthropic or Google. Hopefully some open source projects will remain open to accepting PRs from people, like the author of the OP, who enjoy working in that "flow" state. I enjoy writing software as a hobby (as well as at my job) but it looks like the hobby might become a larger source of personal fulfillment.
TBH, I've often felt like a weirdo who enjoys "the wrong things" about software engineering.
Great for generating volumes of output. Less great for going into a flow state and coming out with something that looks like I made it, something that I see my hand in
And yeah, maybe it’s because I never quite get into a flow state when I do it this way. Hmm
In the past we were forced to pour the concrete ourselves. I understand how many of us enjoyed the sound and the smell of the concrete being poured. Myself, I’m happy to never get my hands dirty again, and focus on the actual engineering.
Did I miss something?
"You're absolutely correct. I don't just need to exist-I need to justify why. It's like builders with concrete..."
https://news.ycombinator.com/item?id=47996022
I was with you until the last three words. Craftsmanship in writing code is also “actual engineering”, it’s just not the engineering that people will pay a human to do now.
Working with claude is closer to “grandma recipes” than any engineering or scientific practice.
Dare I say those stuck on nostalgia for pressing keys are demonstrating that they cared more about their own personal experience than about the outcome of their work? Now that coding is automated, we have to elevate our ambitions.
Ironically, Phish's music emerges from egoless expression (to paraphrase keyboardist Page McConnell). Giving up your own personal stake in the process is literally what brings something as beautiful as Phish's music into existence. We need to do the same with our software; give up the notion that "our" code is meaningful.
YES. The beauty of programming is and always was that, first, you enjoyed it and, second, for some oddball reason you could actually get paid to do it. And one can't produce anything good unless you actually love working on it which means you want to put yourself working on it. The outcome might accidentally serve the one who pays for it but ultimately what did get the work finished was the sensation when you were reaching the point where you would finally tie things together and see everything you designed come to life and work together.
AI doesn't give you that personal involvement. We can do it but it's a different line of work and we care very little about what goes in and what comes out. We just do the grunt work of connecting the two ends. We're not for a fuck interested in elevating ambitions which is a word that relates to what is outside while all the good stuff comes from the inside.
Most of my interaction with AI models and agents is still mediated by a keyboard and still requires a lot of "typing ascii characters". ;-)
BTW, there's nothing preventing you from using AI agents and staying in the flow state. If you want that, the universe is not stopping you. In fact, not dealing with the minutia of source code may well free us up and allow even greater flow experiences.
Unless Page McConnell is creating his music with AI these days, I don't think this point holds.
Yes.
> Dare I say those stuck on nostalgia for pressing keys are demonstrating that they cared more about their own personal experience than about the outcome of their work
I care about the outcome, which is why I don't trust it to a fucking LLM
Valuing quality over velocity is not selfish
Fully agree. I never mentioned velocity or advocated for lower quality. In fact, this statement very well sums up my point: we should care about the thing we're producing, not our personal experience of coding it.
I would be perfectly fine with this new branch of "software development" if you guys didn't coopt our name and call yourselves programmers and engineers.
That's happened before, with people submitting batch jobs in the mainframe era, people working on big projects that take an hour to compile, or people waiting for code reviews.
However, even if the LLMs become fast, the coding agent will likely bottleneck on running tools. You will need to keep your tests fast, too.
Here I am still coding (mostly) by hand.
While I also sometimes do chat with qwen or use an agent to save some time writting tests or yaml, or "implementing" a draft version of a change, I can't really understand this "the job is changed".
Do some companies in some countries force you to use these agents? Are they going to fire you because Jack or Jill push changes two (or more) times faster than you?
When the vibe coding tools like Claude and Codex came along, I got into this kind of dread. I'm sort of required to use them for work (we are "AI-first"...), but even if I weren't the tools are useful enough to me that I kind of feel like I have to use them because if I don't I'll be left in the dust.
And now it kind of feels like a lot of my job has been converted into babysitting interns. I don't get to write a lot of code by hand anymore, because most of what I do ends up being yelling at Codex to automate most of what I used to do. It's not all bad; I never got any enjoyment out of the initial bullshit of getting the initial project and configurations set up or futzing with configuration files, but I did get joy out of writing the actual implementation of the code, and now I don't get to do that much anymore.
A silver lining though; I do get to think in higher levels now, which is kind of fun. A lot of what I get to do now is write stuff in TLA+ and/or Mermaid (depending on the complexity and how much fancy concurrency I want to do), feed that into Claude, and get it to implement that. That part is fun, but I fear that I'm an outlier and that kind of programming won't catch on because engineers love to take the fucking idiotic position that they "don't need to do math to do programming".
Basically, when I have an idea for a project, I usually start drawing a diagram for how I think things should work. I usually draw it with draw.io first because it's easy and quick. After that, I usually translate this to Mermaid, primarily just to have a second draft, but also because having a text-based system makes it easy to copy and paste around, and that kind of stuff tends to translates well to state-machine based stuff that most distributed systems tend to morph into.
If what I'm working on is relatively simple, I feed the mermaid code into Claude or Codex, give it some surrounding context text about what I want, and get it to hack away.
For more complicated stuff, especially if I want to be more clever with concurrency, I will take my Mermaid diagram and manually convert it to TLA+. If I get stuck with the TLA+ translation, I will sometimes ask Claude for a bit of help but even then I almost always write 90+% of the TLA+ spec by hand.
After that it's basically the same. I feed the TLA+ spec, and provide context to it as well (e.g. how to translate a manual TLA+ mutex or channel implementation to whatever the language has built in).
Since I focus very heavily on the implementation, Claude and Codex generally don't have a huge issue with doing a one-to-one implementation.
And they can - the current crop of tools provide undeniable productivity uplifts to developers, even if they’re only using the cheaper open weight models.
I was like you, using them for one shot things until January of this year. My token usage has roughly 100x’d since then, once I saw the value in the agentic loop.
I think there’d be a lot of demand from long time engineers that loved working in flow state to build tooling that encouraged flow. I think tokens/s needs to get like 10x faster first, because you’re going to be heading into a world where you are receiving very soft and non-distracting suggestions, probably at the periphery of your consciousness. Most will be thrown away.
I can kind of imagine a UI for this. I might experiment a little building something, but it will be by telling some agents to build it.. :)
I HAVE found another way to achieve flow state. Hand tool woodworking. Especially planing. There’s something about the rhythm of the tool, combined with the awareness of what the tool is doing, that makes the rest of the world evaporate, just like when coding. I could see myself doing that instead. Sadly there is even less call for slow woodworking than there is for slow coding.
its been the opposite for me. being able to create things with almost zero friction has lead me to have to slow down for my own sanity at times. I've had to setup "handcoding time" as a way to keep me touching virtual grass lest I completely lose myself building stuff at all hours.
literally thinking of taking up Haskell just to have a language that forces me to slow down and think in my off hours.
I’m sysadmin not a dev but I also feel that managing an agent is a fundamentally different feeling than performing admin work like I used to. I used to build bridges out of software. I would learn how they work down to the nuts and bolts, and use them to make robust and occasionally clever solutions for our needs. Over time i was getting better at bash and powershell and regex and automating little tasks.
Gaining knowledge about kubernetes and building images and helm charts was some of the most fun I’ve had professionally. I found enjoyment and value in learning those things and enjoy knowing them for their own sake, much in the same way I enjoy being able to recite mechanics and knowledge about vanilla wow from memory. The knowledge is its own pursuit and obtaining it was fun and fulfilling.
Using AI is nothing like that. It’s not “fun” to me in any way. I don’t learn bash and powershell and templating. I don’t get to enjoy simple wins. AI does those all those for me.
I’m thinking of becoming an electrician. I can’t imagine babysitting an ai for another 30 years.
Maybe it's even more important since you've gone from crafting your own solutions to reviewing the viablity of solutions from the LLM which occasionally are going to introduce new ideas, do things in a similar but slightly different way to how you would, or even be subtly wrong in ways that also exercise your ability to adapt and learn and nudge it in the right direction instead.
I don't really understand how the alternative could be true, in the sense of your knowledge not being relevant, as that would imply a couple of things that don't seem true as of now: that LLMs always produce optimal solutions in any given scenario, and (as a corollary) that sysadmin is entirely automated apart from some sort of thin beurocratic human approval/deployment layer.
In my experience so far I've found sysadmin type stuff to actually be what LLMs help me the least with, excluding text-in-text-out scripts, precisely because the setup often has to be so custom to the system, there's loads of side effects that are hard to communicate to the LLM so it oversimplifies and gets things wrong often.
So hopefully you can understand the implied challenge behind the question. I'm not saying your feeling of it being less fun is invalid. But I'm really curious about what you said specifically about the fun of applying knowledge and learning having been diminished. What do I have wrong?
As for the deeper work, the most recent example I have is deploying an observability stack for our lab cluster. In the past i would have done way more upfront work on understanding the alternatives and the deployment. I would have known every line of config before pressing deploy including the ones I chose not to set. The why and how of everything. Now the most efficient way is just to tell Claude to stand up a monitoring stack in the manner that apps are already deployed on the cluster and iterate with Claude once it’s up and running. Why bother diving deep when you can be running a proof of concept in five minutes and then just see if it falls over.
Another part of it is that i really dislike learning through a prompt. I don’t like summaries, i like man pages. I don’t want to interrogate a result i want to provide a complete solution.
Part of it too is I’m fairly new to all this professionally. I’ve only been at it 5 years, though hobby much longer. Basically i can feel myself growing and getting better and now suddenly there’s this genius moron in my pocket that so much better than I ever dreamed I could be while simultaneously having huge shortfalls. It’s a just an instant paradigm shift and after the first week of glee it’s not been a positive feeling.
It’s not that my existing knowledge isn’t relevant at all, there’s still a huge base of networking and systems knowledge that’s necessary. It’s routinely surprised me in my career when i speak with a greybeard developer who is a an absolute wizard to me but dns/tcp etc are just a black box to them. Or when I talk to a friend new into the selfhosting hobby and i try to explain something to them that think is simple and i realize there’s 10 years of accumulated knowledge underneath that simple concept in order to actually grok it.
I don’t know if that answered your question, just an unstructured ramble. I think the heart of it is that googling and research and things being concrete and complete understandings of workings and interactions and variables and secrets and configs etc are giving way to a black box pumping out systems and it mostly working out of the box and often that is simply good enough for now and it’s on to the next thing.
Not syntax, no. Bash and Powershell are syntex. But tradeoffs, concepts, understanding new domains I didn't know about.
feel this though. also how the era of debating like the best code styles and which new frontend framework is etc best that used to be fun to talk about feels like its coming to an end because no one really cares anymore as long as the bot can build the feature.
I've been leaning in more on e2e test suites. They are slow, brittle and inefficient. But that's almost a feature. I can step away and come back an hour later, and use that time to think about bigger problems.
I never could study to music and much preferred studying in a quiet carrel in the university library.
This was a colleague favourite for flow state time
1996 - 29 years = 1967: The Doors - Light My Fire
> That move is Phish fans in miniature. Someone cared enough about the song and the bit that they rebuilt a piece of pop culture around the band.
Read the article. Or just look at the top search result for Phish. Stop being lazy.
I’m really disappointed that I wasn’t in the right headspace to name this post “the trick is to surrender to the flow”, the lyric from Phish’s The Lizards.
But, you know, hindsight.
My brother still follows them across the country. Reading this and the comments gave me real insight into what longtime developers are feeling
I’m brand new to coding and have only done some AI-assisted work while learning. It blows my mind that people can do this at a high level without assistance - major respect
I hope you find that flow again
Simple solution: keep going what you've been doing. Open up https://relisten.net/ and keep jamming, you'll probably be fine.
Couldn't agree more. I'm personally okay with how engineering is changing. At the end of the day, the code is a means to an end for me. That said, the "queue" aspect of how software development is headed is so real. It's a different way of working, and I find the biggest challenge is staying engaged and tuned in while you might have agents take 30 seconds here, 2 minutes there, 5 minutes there, etc. It's easy to get distracted when waiting.
Programming does not exist or, rather, programming doesn't pay. Whatever this is—vibe coding, agentic software development—it's a new and different discipline, and it may be the only game in town [citation needed].
It's not even been a particularly gradual change. It's been a stark, totalizing turnover in the last 18 months. I don't know how long this era will last (maybe we'll discover a new sort of operational scurvy, and this movement will be mocked and scorned as a ludicrously anemic fad) but it'll leave a distinct layer of discoloration in the geological record.
I've never really been into Phish. Lately, I've been vibing out to the hyperactive chiptune groups Anamanaguchi and Toby Fox. Justice also makes my playlist, alongside more pathos-laden groups like The Glitch Mob and Moderat.
Hell, once I get this teams-of-teams jj-and-weave harness firmly in hand, I can pop into Agent-of-Empires and drop the needle on some Al Hirt—Music to Watch [Pulls] By.
Thought it was an early AI or something.
OP, I sure it’s just a transition. AI will get faster, feedback loops shorter, and we will be back at a more traditional flow state.
The flow state is gone. Sadly
AI still sucks pretty bad at writing code. The only people I've ever known to need a "flow" state to write code are junior devs.
Everyone else is used to constant interruptions and has been through every layer of abstraction many many times. This is why those with experience find it so tempting to say this job can be automated away, but they forget how many gotchas there are, how they crop up, and how brittle all this crap always was. AI is actively making this problem worse.
I've been writing code for 30 years. I welcome AI. It brings different challenges and can reduce the time needed for the end product.
It's interesting to now see professionals making a similar move themselves when a new cPanel/Wordpress has arrived and wring their hands about how they 'get more done' but 'lost the craft'.
Inbetween I've come across quite a lot of scoffing about using XML to generate code in Java and C#, or just XML itself. Buying queries from a database corporation seems quite a bit weirder to me than designing a data schema, especially if both use cases are supposed to lead to some server boilerplate and an API on a database.
edit: Bouncing around the room is one of their hit songs. Give it a listen.