I no longer care to work on any Ruby gems so I've archived all my repositories
po-ru.com478 points by phoronixrly 18 hours ago
478 points by phoronixrly 18 hours ago
I was chatting with a friend who commits on a very well known open source project (~80K stars). He is disillusioned not because the robots aren't good at what they do -- they totally are. The sad thing is that he enjoyed writing code and working with the community on improvements because it was a very human, collaborative thing to do. So, while the robots are great at pushing the project forward even faster and doing fantastic things for security and performance, the joy is gone.
I can totally identify with that feeling. It must be how professional mathematicians are feeling as well.
Everyone in SWE (who got into it for the love of writing code) is experiencing this. I've been direct with my team about it being a legitimate feeling of grief and the grieving process that comes along with it. It's been helpful for folks to hear that they aren't alone in that feeling.
And also that on the other side of that grief is something new and potentially exciting, but very different than what we're all used to.
Like many, I became a SWE because I loved writing code. Ruby, in particular (whatever one thinks of its other strengths and weaknesses) can be very expressive and beautiful.
However, most code is corporate CRUD stuff. The world sort of runs on CRUD. But it's rarely particularly fun, or beautiful, or fulfilling. It tends to be pretty ugly because there's rarely time to make it beautiful. So I'm not losing much joy there.
Additionally, even with an agentic workflow, my team still thinks deeply about architecture issues. We believe that well structured code is better for bots and humans alike. So I am still exercising my engineering brain; I'm writing blueprints and supervising the bricklayers now instead of laying bricks.
Does that match your teams' experience at all? Sometimes I feel like folks on these threads are working in a parallel universe where the majority of coding tasks and somehow fulfilling and fun and not 99% tweaking reports, trying to implement arcane and contradictory business logic, or fighting with shitty and frustrating externalities. Maybe people found joy in those aspects. I guess there are all types of people in the world. I mean, I'm a sicko who loves writing SQL, something that most coders seem to hate.
I've been direct with my team about it being a legitimate
feeling of grief and the grieving process that comes along
with it. It's been helpful for folks to hear that they aren't
alone in that feeling.
This is super great. God, I wish all leaders had half this much empathy! Good on you.I am one of those weirdos that found joy in business software. The clear specifications, reasonable timelines, and enough technical freedom, let you focus on clean, secure, resilient architectures.
I find that I struggle more with personal projects, as I tend to take things where I'm not even in the skirts of the learning curve, and consequently redo my work a few times.
> The clear specifications, reasonable timelines, and enough technical freedom, let you focus on clean, secure, resilient architectures.
I have no idea where you work but 90% of companies are not like that. In fact, it's the opposite: filled with awful management, terrible timelines and legacy code.
Engineering had always been a nuisance to them and getting basic approval for maintenance regarding technical debt has been an uphill battle.
Wow. That was hardly ever the case in my experience in ~30 years in the industry. I enjoy(ed) what you’re describing too but… how common was this for you?
Different person but I’ve been a SWE about ten years now - my favorite work has been improving the CRUD stuff people have left behind. Like the time I took a proprietary document they were using to document their REST apis and wrote a converter to turn those into OpenAI spec compliant yaml files, taking a single tenant application and making it a secure multienant application so instead of 80 different app services we had two, coalescing all their data sources into one normalized DB. There’s a lot of work I’ve done I’m really proud of. I’ve always found myself being the “in the muck” guy fixing up and bettering legacy code, I’ve always felt that was really rewarding and interesting.
Thats badass! I like doing that kind of work, but I got very jaded about it over the years, because management generally acted as if the engineers took a shit on the conference table in the middle of a Zoom call with their most important customer whenever anybody attempted to address technical debt, as opposed to delivering more more more features. Unless it was billable agency work, in which case they’d hate it even more.
With massive amounts of effort and strong communication it was usually possible to get some tech debt time, but management acted like they were doing YOU a huge favor. It was kind of a career killer, generally.
Alternatively it was possible to get this kind of work done on my own time… but that’s a marriage killer instead of a career killer.
I burned out on trying after decades.
The fun thing is: I don't think this will change that much with AI in the mix ;)
Shitty devs without AI are slowly building BS that wants to be cleaned up.
Shitty devs with AI are much more fasterly building BS that wants to be cleaned up.
I have a similar experience as yours, just add another 10-ish years to the timeline. Literally my first job out of uni, I got to work on a legacy code base that was another 15 years older than that which had a ton of reports all built differently over time with slight variations in both code and end user output that really all wanted to be "the same" both on the code and end user side. So I slowly but surely, one user/PM requested change at a time would build out a common layer of abstractions and shared code that both made the code shared and easier to maintain (great for me!) and consistent for users (great for the PM/users).
Heck, I built a rudimentary TransactSQL parser that'd output stored procedure call graphs to graphviz and then I printed it and hung it on the wall to get through all this and having an LLM to just make a mermaid out of this in 5-ish minutes would definitively have been faster than I was ;)
With an LLM all of that would just have been faster to do but still worthwhile and useful on both levels. I.e. both code abstraction/reuse and PM/user level. Similarly there was a report that one of the devs had to actually run manually and it took him a full week, so users that wanted the report would only request it once a year-ish. When I was asked to learn how to run it from him I was appalled and just took that week to put it into a script that we ran and emailed the report out once a month automatically. They ran that report manually like that for like 10 years prior to that :mindblown:
None of this is an "AI thing". It's a good dev vs. not so good dev thing. And none of it really has to do with coding as in "writing source code" as much as "solving problems for humans" somehow and the "language" you do that in changes over time. If you're the guy that's tied up with the particular language: yeah LLMs are gonna eat your lunch. If you're the problem solver type that uses whatever tools they have available, you're still in demand.
Sure. If you get pleasure in fixing really badly broken shite, there’s tons of opportunity for that, but no money in it. Only money in new features, which is why the codebase is what it is. I have, on rare occasion, been the fixit guy called in temporarily to fix another teams work or get it out the door: that was fun. Short lived , but fun.
About 80% of the time. It wasn't all about setting a new foundation, even making the existing one solid enough so you can have time to refactor the cruft was enjoyable. I had more trouble in my youth, as I didn't understand why the business didn't change to accommodate my 'masterpieces', and I'd like to think I started enjoying it more as I became wiser.
Disclaimer: I had to take an opportunity at management in cybersecurity, and haven't coded in about five years. It helps a lot when talking to developers about risk mitigation, though.
I’ve enjoyed it too.
One of the fun things to do would be to use the 8 hrs of work to spend about 4-5 hrs working on deliverables, which was usually sufficient to exceed expectations, using 2-3 of the remaining hours (I’d keep 1-2 hrs for myself), to make significant architectural improvements.
I’d bring in an improvement every 6 months or so and suddenly the app would get significantly better and I’d get credit for it.
> The clear specifications, reasonable timelines, and enough technical freedom, let you focus on clean, secure, resilient architectures.
The nicest thing was when you nailed down the architecture and then you are mostly twiddling your thumbs while waiting for the PM guys to have the next feature idea. Maintenance and bug fixing is a breeze.
>I am one of those weirdos that found joy in business software. The clear specifications, reasonable timelines, and enough technical freedom
Where do you work! :)
I asked the same question, so that I could apply..
Sorry for the delay. Mostly midrange (AS/400) consulting at manufacturing plants, then full time jobs at a heavy machine dealership, and a bank. Changed to PC development after about 15 years of that, then management, and it hasn't been the same after that, ha ha.
I think the technical freedom plays a big part, not because you're chasing the shiniest, but because you're choosing the tools that will hopefully outlast you. One of my former employers was 'modernizing' their IBM i (former AS/400) systems by porting them to Java and Windows Servers, and they were having all kinds of problems. Couldn't even get the EBCDIC to Unicode conversion quite right. I was lucky not to be there anymore.
> not 99% tweaking reports, trying to implement arcane and contradictory business logic, or fighting with shitty and frustrating externalities.
Those are the parts the LLM is bad at. The 1% of stuff that was interesting was worth looking forward to.
I’m unconvinced about architecture mattering much. I used to think that, but these days I’m leaning towards it being the product of a problem we don’t have anymore. Architecture used to be dangerous and time-consuming to redo. If an AI can do that safely for $100 or $1000 in tokens (one day), that ROI is maybe negative
In a big production codebase with lots of active customers and data, architecture changes still feel pretty difficult even with LLMs accelerating them by an order of magnitude — migrating and backfilling data and all of that. That’s more complex than pointing Claude at a repo and saying “rewrite this in Rust.”
I guess you’re right, though - what is the ROI of keeping the architecture clean? It certainly saves time and money later, but it’s unclear if it’s a net win.
(It’s of course also significant to note that the upfront work of figuring out the right architecture and keeping the code clean has also been correspondingly reduced as well. Both sides of the equation are affected…)
The industry never really figured out a way to reliably answer this question in the pre-LLM days either, so… I suspect it will continue to be hard to determine.
in my experience it takes more than a day to sufficiently migrate bad architecture to a good one. like, many more days than it took to vibe the original implementation. having the prototype is good to understand what you want, but then going back and rebuilding it properly is a longer task. which is fine.
I think this is not "parallel universe". Selection bias: people who love to code often choose non trivial frontier work. They tend to grirf about agentic workflow the most. Myself included.
I got into SWE because I like solving problems. I like solving problems using code. I also like solving problems using AI.
I have very mixed feelings.
- AI lets me plough through issues which previously would require debugging, troubleshooting, googling, stackoverflow
- my coding abilities are starting to atrophy
- not having to deal with low-level language quirks is nice (parameter differences of subString in C# vs Java).
- but I'm seeing the same as OP: when working on a team, the sense of ownership and community is gone. You have AI un-AI-speak for you to properly read the Jira ticket another dev created using AI. Pull requests are echo chambers between the AI used to create it, review bots, other devs using AI for PR reviews manually.
- there's little denying that we devs are feeding the very machine that will replace us
There's a lot of code I never wanted to be an expert on. I might care about an algorithm. I might care about the UX. There are other things I might let an AI tackle because I don't care about them.
That is a problem though with AI currently. E.g. I've found a severe issue with Claude Code and prose writing when trying to make an explainer site. Instead of "plain" english it likes to use "flowery" phrases and "punchy" statements. This forces the user to spend extra time thinking about it.
And code comments are terrible. It can use 3 paragraphs to describe something when only one sentence is enough. Then further agents (or humans) have to waste their context window to figure out what the "riddle-ly" worded sentences mean.
But the things you care the most about, the AI doesn't unless you tell it to care. And even then, you have to be very careful because it acts more like a contractor with the potential to stop in the middle of a project (lack of tokens) and leave it in a very bad state until it's complete.
Or worse, it forgets what you want and does it's own thing for a while until you remind it.
Devs were always feeding the machine to replace everyone else.
We were always replacing ourselves: Every "reusable" function or class or library you ever wrote represents lines of code won't get paid to write again. Every compiler takes jobs away from assembly coders.
The looming thing today is qualitatively different, because it's not formalizing something to reliably mass-produce.
> We were always replacing ourselves: Every "reusable" function or class or library you ever wrote represents lines of code won't get paid to write again
In theory, but not in practice. Instead, somehow we ended up writing essentially the same app over and and over, usually without reusing libs. You know because this time we'll use vue, or svelte, or phoenix, or htmx, or go, because this time we actually know what we're doing. so gotta start from the ground up and figure out how to store a row in a db as if we haven't done the same thing a million times before.
And that all under one roof. Now multiple that by thousands of roofs.
At least the devs were having fun and making good money writing all that code.
It’s a point that isn’t made often. AI is mostly saying the quiet part out loud.
The big money valley bros figured it out just before they embraced regressive conservatism for their politics. There’s a reason we went from massages and pet daycare to rentier agriculture executive style management of the peons.
> There’s a reason we went from massages and pet daycare to rentier agriculture executive style management of the peons.
And that reason is "service businesses are too expensive in California because of high housing costs".
> Everyone in SWE is experiencing this.
Obviously this is not true for every SWE. A lot of people feel liberated now that the burden of actually writing the code is being replaced by molding it through the interaction with AI. I see people that struggle because they've identified with the writing code part a lot and that's gone now that the machine is doing it, I bet that's hard.
Yes. The people that didn't enjoy coding say that.
AI is great enabler for stuff that you don't want to be good at, it cut a ton of chore type jobs out of my workflow, but for stuff you do want to get better and care for, it's both joy killer, and if you're not careful you will only learn how to prompt, not how the stuff works.
I enjoy coding deeply, and my feelings are not that simple.
I love code as a craft. I love spending time designing the perfect abstraction. I love seeing it come together in the implementation stage. I love the troubleshooting process and the understanding that comes when you finally engage with the root cause of the issue. I love all of this so much that I ship little, all my time is spent in process.
I also love code as a tool. I love working tirelessly towards describing a goal and then watching it come to completion. I love knowing my projects consume terabytes of data and spit out useful results. I love seeing my assumptions on the outcome proved right or wrong.
Now I can do the latter without the former, and it leaves me deeply conflicted. A large part of me is more excited than I've ever been. Another part of me is quite sad, and this is unfortunately the part where my ego lives. For now, I keep it in check by asking the LLM to describe the pros/cons of alternative architectures. That way I stay learning about the products I create.
As I like to tell others: before my job was 70% architecture & patterns and 30% coding & algorithms. Now my job is 100% architecture & patterns. While I still spend the majority of my time on architecture & patterns, and while I enjoy this aspect more than coding and algorithms, I am still working a "different job" than I was when my hands steered the code completely.
People say stuff like this all the time, but what does it actually mean? Like, isn’t the details of the code, at least at some level, part of the “architecture”? I’m so curious about what people who say this are actually making where they just sit around all day and dream up new lego structures without ever having to look at any of the bricks.
The bricks are pretty standardized? I mean, you're not reinventing singly-linked and doubly-linked lists from first principles no? When I program I think in terms of data structures, data hierarchy, and algorithms. I want to use a queue here, a lock here, a double linked list there, an array list over here, maybe a hash dictionary with linked-list chaining for collisions. It's only a few times in my career that I built a bespoke data structure from the ground up and they were all for very hot loops and one case involved working on a lock-free algorithm.
I've done a lot of functional coding in the past (in academia, in Haskell as a hobby, and Scala for a unicorn where I was an early hire.) This probably affects how I think. But I find it quite natural to organize my code this way. After all the fundamental data structures and the hierarchies relating them are what often determine core properties of your programs such as being CPU, Memory, or IO bound.
I also work as a pretty senior engineer and my tasks before agents were usually about leading a team to implement something. I would often do the v0 implementation to make sure we met customer requirements and then take a step back and help the team scale the service up. These days the team is a lot smaller and maybe just another engineer; the agents make up the rest.
I may have it wrong, but I think 'architecture' can include relatively low-level details: you could even design a program down to the level of what each function does, and still only be doing 'architecture', not coding, so long as you're not writing the code or specifying exactly how it should work.
> you could even design a program down to the level of what each function does, and still only be doing 'architecture', not coding, so long as you're not writing the code or specifying exactly how it should work.
So it all wishes and prayers? no wonder software quality is down.