Remix.run Logo
tptacek 3 days ago

I didn't become a software developer so I could write the same SQL queries, the same plumbing code, the same boilerplate beginnings of programs, the same repetitive error handling, the same string formatting, the same report generation, the same HTML templating, and the same thread cancellation logic. I also didn't become a programmer so I could gratify myself by yak-shaving elegant helpers for those SQL queries, plumbing, boilerplates, error handlers, formatting, reports, templates, and cancellations.

Bloggers have been kidding themselves for decades about how invigorating programming is, how intellectually demanding it is, how high the IQ demands are, like they're Max von Sydow playing chess with Death on the beach every time they write another fucking unit test. Guess what: a lot of the work programmers do, maybe even most of it, is rote. It should be automated. Doing it all by hand is part of why software is so unreliable.

You have a limited amount of electrical charge in your brain for doing interesting work every day. If you spend it on the rote stuff, you're not going to have it to do actually interesting algorithmic work.

aaronbrethorst 3 days ago | parent | next [-]

I worked on visual studio at Microsoft 20 years ago, and once had the opportunity to go to a trade show to represent the company.

While I was manning a booth, this software developer came up to me and said VS had gotten too good at code generation to automate data access, and we should cut it out because that was the vast majority of what he did. I thought he was joking, but no, he was totally serious.

I said something to him about how those tools were saving him from having to do boring, repetitive work so that he could focus on higher value, more interesting development, instead, but he wasn’t having it.

I think about him quite often, especially these days. I wonder if he’s still programming, and what he thinks about LLMs

qsort 3 days ago | parent | prev | next [-]

I think I partially agree, your first paragraph is exactly how I feel. Boilerplate and trivial stuff absolutely should be automated. It's also true that people have been pushing a narrative where programming is some dark art and you should use Methodology X or Theory Y. Bro, chill, you're writing a website.

On the other hand software development in the high sense, i.e. producing solutions for actual problems that real people have, is certainly intellectually demanding and also something that allows for several standard deviations in skill level. It's fashionable to claim we all have bullshit jobs, but I don't think that's a fair description at all.

potatolicious 3 days ago | parent [-]

> "producing solutions for actual problems that real people have, is certainly intellectually demanding and also something that allows for several standard deviations in skill level"

Absolutely agreed, but I think the idea is that coding tools (or languages, or libraries, or frameworks) frees us to do the actually hard, skill-intensive bits of this, because the thing that's intellectually demanding isn't marshaling and unmarshaling JSON.

theshrike79 3 days ago | parent [-]

This is exactly why we moved from Assembly code to higher level languages and then to using frameworks.

Nobody is paying you to make a CRUD web app in Assembly, they're paying you to solve a problem.

You're not getting any extra points for using plain vi(m) with no autocomplete to write a Java application. Making stuff the hard way is just stupid performative crap.

LLMs are just the next iteration of autocomplete -> intellisense -> language servers.

Now instead of autocompleting a method or property, they can autocomplete full unit tests and functions by looking at the patterns across the codebase.

potatolicious 3 days ago | parent | prev | next [-]

+1, and also to add: this isn't even a new phenomenon. My hot take is that AI coding is only the latest in a trend that has been running in the industry for literally decades. The technology itself might be novel but what it's doing is very, very old!

You used to have to write tons of real code to stand up something as simple as a backend endpoint. Now a lot of this stuff is literally declarative config files.

Ditto frontends. You used to have to imperative manage all kinds of weird bullshit, but over the last decade we've gradually moved to... declarative, reactive patterns that let the some underlying framework handle the busywork.

We also created... declarative config files to ensure consistent deploys every time. You know, instead of ssh'ing into production machines to install stuff.

We used to handle null pointers, too, and tore our hair out because a single missed check caused your whole process to go poof. Now... it's built into the language and it is physically impossible to pull of a null pointer dereference. Awesome!

We've been "putting ourselves out of work" for going on decades now, getting rid of more boilerplate, more repetitive and error-prone logic, etc etc. We did it with programming languages, libraries, and frameworks. All in the service of focusing on the bits we actually care about and that matter to us.

This is only the latest in a long line of things software engineers did to put themselves out of work. The method of doing it is very new, the ends are not. And like every other thing that came before it, I highly doubt this one will actually succeed in putting us out of work.

globular-toast 3 days ago | parent | prev | next [-]

Me neither, that's why I write higher level abstractions or use libraries and languages other people have written. I don't get how you were writing so much boring stuff manually before LLMs. What do you do?

rstuart4133 3 days ago | parent [-]

I'm not the OP, but from what he said I can tell you two things:

1. He is using computers to solve other peoples problems, and they are similar problems so all the code looks the same, and

2. He is NOT using computers to solve his own problems. Every top notch software engineer I've met does not write the same code more than a few times, because doing repetitive stuff is something a computer should be doing.

tptacek 3 days ago | parent [-]

What a weird set of claims to make. I like how you worked backwards from "couldn't be a top not software engineer", whatever that means.

kasey_junk 3 days ago | parent [-]

It’s the standard response anytime someone claims they get productivity boosts from ai. Either you are inexperienced or bad at your job.

On a board that would deride any other no true Scotsman take, this one happens on every ai discussion.

It’s no longer worth engaging with. I’m now just posting basic statements like “I’ve been programming professionally for 25 years and I find ai to be extremely helpful”. That way there is at least someone claiming the opposite. But you aren’t going to convince anyone as they already shut that door with their statements.

rstuart4133 3 days ago | parent | next [-]

For what is worth, it had nothing to do with whether he uses AI. I'm north of 60yo, started on punched cards and paper tape and have been programming ever since. My experience suggests if you aren't keeping up by using AI now there is a good chance you won't be a relevant software engineer in a decades time.

The bit that triggered my response is this:

> Guess what: a lot of the work programmers do, maybe even most of it, is rote.

Yes, I know a lot of programmers who do that. In fact it seems most programmers I see in the industry do that. Many of them are very good at it, in the sense that a good brick layer will be content to devote his lifetime to laying bricks in a straight line and will be far more reliable and conscientious at it than I could every be. However, that personality type is unlikely to become a top engineer or architect. To be good at those jobs you need to get bored in a couple of years at most. You have to be internally driven to try new things, and experiment with new ideas.

When such a person is confronted with the prospect of a lifetime of churning out code that almost follows a template (and I daresay could easily be produced by today's LLM's) he doesn't sit still and do it. He finds something more interesting to do. Since he's a computer programmer and the task is well suited a computer doing it, he probably take up a skunk works project of churning out the repetitive parts of that code, so he didn't have to do it. It's far more fun, saves time in the long run, and if he is a good software engineer in the long run the systems it produces will be more reliable, and use less code than something programmer code have produced by churning out the same stuff every day for years.

Going by the OP's comment, he hasn't done that, despite apparently being bored shitless with what he does do. There is a solution, but it isn't the LLM's he suggests. All using LLM's change is the language are giving to the "compiler". The end result is still him creating the same CRUD app using the same platforms, libraries and tools his is using now.

kasey_junk 3 days ago | parent [-]

There are lots and lots of us who have gone down the road of generalizing code and have decided the outcomes, for the business that pays for the software, are worse. Frequently it devolves into code that is hard to reason about, architecture that is overblown for purpose or that does something just about, but not exactly, what you want it to do.

But more importantly, by dismissing the comment that way, you’ve made an implicit claim. You are claiming to be able to judge a persons capability or the challenges they are working on off of a couple hn comments. Thats bad engineering and anti-social behavior.

Imagine telling someone that learning to touch type was the sign of a bad software engineer because you don’t type that much because your libraries are all named with single letters. Thats what these arguments sound like to me.

rstuart4133 2 days ago | parent [-]

> But more importantly, by dismissing the comment that way, you’ve made an implicit claim. You are claiming to be able to judge a persons capability or the challenges they are working on off of a couple hn comments. Thats bad engineering and anti-social behavior.

Somewhat true. But it did make me smile, because it reads very much like the pot telling kettle he's black.

But only somewhat. @tptacek also said this:

> Bloggers have been kidding themselves for decades about how invigorating programming is, how intellectually demanding it is, how high the IQ demands are, like they're Max von Sydow playing chess with Death on the beach every time they write another fucking unit test. Guess what: a lot of the work programmers do, maybe even most of it, is rote. It should be automated. Doing it all by hand is part of why software is so unreliable.

Seriously?

As I said, I've been programmer for decades now. He's coming from the perspective that the code dribbling off my fingertips without too much thought is "programming". It is, of course, in the same sense that the brush strokes of Van Gogh are what constitutes "painting". But the painting created by Van Gogh consisted of thousands if not millions brush strokes, all placed with precision, purpose and a great deal of thought. If placing the loaded brush on canvas is all there was to painting, all our houses would be adorned with Van Gogh's. He says we should all be using LLM's, but the idea that brush strokes placed by an LLM would produce same outcome is laughable. You might well use a painting LLM to paint 1000's of houses, but never a single Van Gogh.

To the people who delight in creating new and unique computer systems from code, the puzzle to be solved is arranging the code in just the right way to create their personal Van Gogh's. An immutable object here, a touch of recursion there, combined with an atomic compare and swap and in some truly heroic cases an FPGA thrown into the mix to get some extreme parallelism - crafting these in just the right mix is the challenge of programming. Overcoming that challenge is what makes it invigorating. Not writing the "fucking unit tests" as tptacek puts it, which is almost universally disliked. Although now I look back on it, it is almost therapeutic - it's like going for a jog; it's downtime, when you get review what you've done, and ponder your next moves while pounding the keyboard.

It's a shame, and somewhat insulting to see tptacek treat these efforts many find enjoyable with so much derision. But I've spared with tptacek here, when said similar things before. Again, he confidently said something completely wrong headed, and I could not let it go. Some things don't change I guess. As a fellow at a Linux meetup said to me a long time ago, "you wrote all those words because someone was wrong on the internet???".

tptacek a day ago | parent [-]

I've been shipping software since we had to write it in C, send it out to be burned onto CDs, put in boxes, and put on shelves.

camgunz 3 days ago | parent | prev [-]

I agree; I think there's a huge veil of perception thing happening here like. I've worked directly with dozens of coders and indirectly with hundreds, and like, no one does their job like I do? It's like we all show up to the job site, you have a drill, another person has a hammer, and I have a feather duster and a bottle of glue, and we all have the exact same job. No wonder what makes the drill person more productive doesn't do shit for the feather duster/glue person.

IanCal 3 days ago | parent | prev | next [-]

I massively agree. Huge amounts of coding isn’t wild new inventions, it’s not unknowable work like so many seem to suggest when asked to estimate time. Frankly it’s not even conceptually hard, it’s just that computers are fast and accurate and dumb so you need to be annoyingly precise. Imagine if a human refuses to read a manual because a comma should have been a semicolon. Plenty of people are smart enough to do it, but lack either the knowledge about this or the desire to deal with it.

Most of this work should go away. Much of the rest of it should be achievable by the domain experts themselves at a fraction of the cost.

tptacek 3 days ago | parent [-]

If you made all this work go away with a new functional programming language, like if finally someone contrived the perfect type system where you could just declaratively lay out all the rote bits and evaluate them to the imperative steps you wanted taken, everyone would be thrilled. There would be people going around dunking on all the developers who didn't use that language.

Instead, it's the opposite.

jimbokun 3 days ago | parent [-]

But that’s the problem.

The LLMs are still generating all that rote shit, that at some point must be maintained and read and understood. Potentially at a higher rate than any human could.

A lot of what AI coders are being praised for could be accomplished just as well with some good Lisp macros with much less technical debt.

tptacek 3 days ago | parent [-]

I understand what you're saying. But in the programming environments I work in, the rote stuff that LLMs are automating is marginally better than the rote stuff I would write given the same parameters. Obviously, we could all do better if only we were writing the right Lisp macros. ;)

skydhash 3 days ago | parent | prev | next [-]

Programming is about not doing all of these things. You have a powerful machine that is quite good at doing those things. You just have to notice those patterns and then build the tool that will be doing those kind of works. And the most simple one is a snippet generator and editors macros. Then you have project generators, and code reuse thingies from the programming language.

3 days ago | parent | prev | next [-]
[deleted]
camgunz 3 days ago | parent | prev | next [-]

I agree with this take, insofar as I interpret it as "we do a lot of bullshit that doesn't matter". Like, do you remember people arguing Rails vs Django, or even worse Rails vs Sinatra? I do and did, and my meager defense is that I was young and naive. The list of "I can't believe we spent any time building/doing any of that" is just so, so long. I mean, how many times are we gonna reimplement node ffs.

cbrozefsky 3 days ago | parent | prev | next [-]

I always thought programming as being a touch more like two imbecile brothers outsmarting Max Von Sydow's plan to control the world with tainted beer and hockey arena organs.

tptacek 3 days ago | parent [-]

Holy shit, I completely forget he was in that. What a get.

rustc 3 days ago | parent | prev | next [-]

And now you spend the same time verifying/reviewing AI output?

yomismoaqui 3 days ago | parent | next [-]

If before I did a thing in 60 minutes and now Claude Code does it in 5 minutes I will not spend 55 minutes reviewing that code.

I will maybe spend 5-10 minutes reviewing and refining the code with the help of Claude Code and then the rest of the time I will go for another feature/bugfix.

potatolicious 3 days ago | parent [-]

Worth adding that sometimes I will spend an ~equivalent amount of time doing something in Claude Code, but the result is better.

Case in point recently I was working on a mobile app where I had to check for a whole litany of user permissions and present UI to the user if any particular permission was missing, including instructions on how to rectify it.

Super annoying to do manually, but Claude Code was not only able to exhaustively enumerate all possible combos of missing permissions, but also automatically create the UIs for each edge case. I reviewed all of it for accuracy, which took some time.

I probably would've missed some of the more obscure edge cases on my own.

Overall maybe not much faster than doing it myself, but I'm pretty sure the results were substantially better.

tptacek 3 days ago | parent | prev [-]

I spend a fraction of the time verifying LLM production of rote code --- which I do in fact do, I'm not a vibe coder --- than I would writing it. I don't understand why people always expect this to be a mic drop rebuttal.

boredtofears 3 days ago | parent [-]

Do you feel like you end up with as clear of a mental model reviewing it as you do if you wrote it?

I'm still trying to figure out the answer to that question for myself. Maybe the answer is, "Probably not, and it probably doesn't matter" but I'm still trying to figure out what kind of downstream effects that may have later on my judgment.

tptacek 3 days ago | parent [-]

Yes, of course I do. It's rote stuff. To the balance of time we're accruing to me dealing with generated code, add "stripping off all the comments", "fixing variable names to be like I like them", etc. My fingerprints are still all over everything. And it's still radically faster than doing this all by hand.

Mental expenditure on programming is also not linear through a task; it takes much more energy to get started than to do the back half. Ever stared at an empty function for a minute trying to come up with the right variable name, or choosing which value to compute first? LLMs are geniuses at just getting things started.

whateveracct 3 days ago | parent | prev [-]

My job pays well and I create real stuff but most of the work is honestly just slop. So maybe I should use AI to save myself the effort..I could salvage more free time for myself that way..