11 ms·
We are going from the era of manual, line-by-line mental model transcription to one where software engineers can focus on data structures, software architecture
by glimshe 4d ago
We are going from the era of manual, line-by-line mental model transcription to one where software engineers can focus on data structures, software architecture and algorithms.
I love being able to quickly bring out the program that is already running in my head without having to worry about the grind of typing it into a format that the compiler understands. Dealing with API names. Syntax. Language quirks. Library gotchas. A sizeable portion of my successful career as a software engineer was spent on the tiresome process of interacting with a text editor/IDE to get a program to do what I wanted.
I was there when people were still coding assembly. A slow torture where the simplest things took forever to get right.
Once I've mentally solved the problem, the fun is mostly over for me. Pure vibe coding is dull and unsustainable with current technology for all but the simplest systems; AI-assisted coding, on the other hand, rekindled my passion for computers.
- archagon 3d agoAI is not an abstraction and is not like moving up from assembly at all.
- dtj1123 3d agoWould you mind elaborating on where exactly the boundary between vibe coding and AI assisted coding lies?
- abathologist 3d ago> We are going from the era of manual, line-by-line mental model transcription to one where software engineers can focus on data structures, software architecture and algorithms. This is what declarative programming gives us, not what LLM-based generation offers. > I love being able to quickly bring out the program that is already running in my head without having to worry about the grind of typing it into a format that the compiler understands. Using natural instead of a formal language to get probabilistic results based on token fields is not bypassing arbitrary constraints of the compiler, it is dereliction of the responsibility to know and articulate precisely what you are specifying.
- Seattle3503 3d ago> one where software engineers can focus on data structures, software architecture and algorithms. I see this a lot and I'm not sure why people don't think AI will be able to do this too. The self-play training that got them writing code can be used for this too.
- unethical_ban 3d agoIn the long term, I think you're correct. In the medium term, AI still won't know your business-specific workflows and data relationships, and humans are needed to define those things and let the AI build the scaffolding around it.
- Daishiman 3d agoGiven enough context for a business problem, sure. But LLMs are not in a condition to judge how you should pick the technical solution to a business problem with several stakeholders, risks, and so on.
- Seattle3503 3d agoWith the speed AI moves, a lot of technical decisions become reversible. And while engineering often makes decisions that could lie elsewhere in the business, outside of engineering, I could imagine those decisions moving elsewhere in a fully AI world. Do you have examples of things that would be hard to train for? One that could be compensated for with changes elsewhere in the business process?
- SoftTalker 3d agoI'm exactly the opposite. I like knowing how the code works, what the data structures are, what APIs are being used, and yes even typing the code into the editor. When I'm working with LLMs there's less thinking. I'm bored. My brain is not fully engaged in the task. There's less sense of accomplishment in the finished product. I also prefer to drive cars with manual transmissions.
- KronisLV 3d ago> I like knowing how the code works, what the data structures are, what APIs are being used, and yes even typing the code into the editor. I'd say it probably depends on the kind of work you do - if the low level details are exciting then that's totally understandable. But if you're dealing with more rote CRUD work or soul sucking enterprise bullshit, then probably less so and the low level details are obstacles to getting things done, alongside sometimes unreasonable workloads. I'm reminded of: https://www.stilldrinking.org/programming-sucks https://www.stilldrinking.org/programming-sucks > Every programmer starts out writing some perfect little snowflake like this. Then they’re told on Friday they need to have six hundred snowflakes written by Tuesday, so they cheat a bit here and there and maybe copy a few snowflakes and try to stick them together or they have to ask a coworker to work on one who melts it and then all the programmers’ snowflakes get dumped together in some inscrutable shape and somebody leans a Picasso on it because nobody wants to see the cat urine soaking into all your broken snowflakes melting in the light of day. Next week, everybody shovels more snow on it to keep the Picasso from falling over. That said, AI will probably saturate most CRUD work first, which doesn't make for great job prospects.
- locknitpicker 3d ago> I'd say it probably depends on the kind of work you do - if the low level details are exciting then that's totally understandable. Even those who work with CRUD apps need to know things like computational complexity of standard container types, and how to pick basic data structures or choose which basic algorithms to use. Otherwise you'll end up implementing things that have an unreasonably high computational cost that will rear its head at the wrong time. > That said, AI will probably saturate most CRUD work first, which doesn't make for great job prospects. I think so too. Today's AI models excel at makeshift plumbing. The boring CRUD jobs are the first ones to go with a prompt.
- skydhash 4d agoHave you tried live programming (smalltalk, LISP)? Or a proper Edit-Compile-Run cycle with a good editor? A lot of people are bashing old practices, but from y standpoint, it always seems like a lack of proper (usage of) tooling to streamline the coding phase of building software.
- glimshe 4d agoDear sir, I appreciate the help but, as I mentioned, I've been around since the Assembly days... Been there, done that. I currently have a crazy efficient Edit-Compile-Run setup and a great VSCode personal config, all of which were made a lot more crazy efficient with Codex.
- corv 4d agoI like your constructive outlook and I want to believe that we can now focus on the bigger picture, but I'm not really seeing it around me. Most everyone I know that's "AI-pilled" has spent the newfound capacity on throughput instead of altitude. Is anyone actually seeing a shift towards improved structure rather than more code, faster? We seem to be living in the Gatling-gun version of the picture John Carmack drew when modernity also ushered into precision marksmanship...
- lowbloodsugar 3d agoMiyamoto having an assault rifle doesn’t exclude 19 year old cannon fodder also having assault rifles and spraying them liberally to little effect.
- enraged_camel 4d ago>> Is anyone actually seeing a shift towards improved structure rather than more code, faster? Yes. At work we recently finished a complete rewrite of the platform. The old codebase got abandoned and two new codebases got stood up. Previous stack was Phoenix LiveView and the new one is Phoenix API + Vue /w TypeScript. Zero code shared between the two. We took the opportunity to re-architect a lot of the core functionality and get rid of the tech debt that had been hounding us and killing our velocity for the past six years. We finished the rewrite in two months. A little over 700k LoC total. 95% of it was planned, orchestrated and written by AI. We could have gotten it done faster, but we were well aware of the potential for slop and thus paid an absurd amount of attention to (and tokens for) code quality. For example, there is a 100% test coverage requirement in both server and client, combined with AI-driven review rules that say all tests must be non-vacuous, plus a ton of invariants enforced via deterministic checks. Everything from standard linting and formatting rules to AI-necessitated stuff like "comments cannot be more than five lines each" is in there. At the end of each week, we get together for ~30 minutes to review each bug that was fixed that week (there haven't been that many) and try to figure out if more deterministic checks can be added (or new ones extended) to prevent that class of bug from re-appearing. We actually have an Architecture epic with a dedicated Fable agent orchestrating all the initiatives and tickets in it and keeping track of improvements (and the occasional regression). So things like accessibility, usage of shared helpers, enforcement of common patterns, etc. are all kept track of. The difference between the old codebase and the two new ones has been night and day. The new codebases, combined, are ~35% larger than what we had before, and yet there are way fewer bugs (we actually got suspicious at first and had to check to make sure our logging instrumentation was configured correctly). Performance is also stellar, features have been a lot easier to add and extend, and everything is a lot easier to find. When someone asks a question or has an issue we have a pretty good idea of what part of the codebase to look in and we're usually right. It wasn't all unicorns and rainbows. Not everyone on the team was proficient with AI-driven development, so they had to be brought up to speed quickly and taught the tools and also what works and doesn't. Code reviews were also difficult and time-consuming. We had to deal with our anxieties about working in two new codebases none of us had authored much code in ourselves. What made all of it worse was that we were racing towards a deadline imposed by external factors so we all ended up working a lot of hours. It was essentially between getting it done this summer or waiting until next summer and we bit the bullet and did it. It absolutely would not have been possible without AI.
- agentultra 4d agoI’m the opposite. I don’t believe there is a royal road to understanding anything. For me, the process of programming involves frustration. That is usually when I find my greatest insights. Syntax isn’t a big deal. Names either. You can look them up. Remember them. Language gotchas are annoying and sometimes problematic. To me, our job is understanding problems. And for me, understanding the problem involves wrestling with the code. I learn much from modelling problems in code, building theories, testing them. Once an LLM system has generated some code I haven’t learned anything. Even when I read through the solution. It doesn't require the same activation of my brain. There’s nothing quite like working through the problem yourself. LLMs definitely feel like they are draining my passion for computers. There were plenty of folks who checked out or were never truly passionate about programming. Now they’re louder than ever. “Nobody cares about code,” and, “optimizing is a waste of time.” Now we don’t even want to understand how it works, or whether it works at all. They repeat the lines their master have told them: get on board or get left behind. I’m pretty sure I am risking getting, “left behind.” But I’m okay with that. The tech is truly the least interesting thing to me. If I don’t have a career in 10 years… oh well. I’ll still be programming.
- acedTrex 4d agoya i find all LLM output to be incredibly boring and unskillful, I can ship vibe bugs fast with the best of them but it brings me no joy. I'll never let myself be left behind but the joy professionally of writing quality software is 100% gone.
- fragmede 4d agoThe possibility to have an agent implement every little thing that comes up in your mind as you're building doesn't spark the tiniest bit of joy? Previously, "ooh it would be cool if" had to answer to "yeah but it'll take too long". Now, it's more like, "how important is that really?" to stupid ideas that never would have seen the light of day before.
- skydhash 4d ago> "ooh it would be cool if" had to answer to "yeah but it'll take too long". Now, it's more like, "how important is that really?" to stupid ideas that never would have seen the light of day before. My answer was it to "ooh it would be cool if" has always to build a PoC of the thing or a MVP, then I can flesh it out when I need more features. Sometimes a web app can be a single PHP script, and a cli command can be as simple as a single file C program. Or using tkinter with python for GUI. The answer to "ooh it would be cool if I can travel fast" is not "yeah but it'll take too long to build a car". It's "let's build a kick scooter first".
- ghthor 4d agoThis is where I’m at as well. It is incredibly liberating I feel very empowered
- turpentine 4d ago> We are going from the era of manual, line-by-line mental model transcription to one where software engineers can focus on data structures, software architecture and algorithms. Focusing on data structures, architecture and algorithms is what competency in programming has looked like since forever. Building systems out of smaller pieces gets you there. If your complaint above is that you were struggling with syntax and reading documentation, one might ask if you failed to progress past beginner levels, and now AI is just your cheat-code?
- kaffekaka 4d agoI think you are not interpreting GP in the most charitable way. He simply said that not having to manually write all the code lets him spend his energy on bigger things. That is different from "struggling with syntax".
- fodkodrasz 4d agoIt is the same. I mean many mainstream languages made thinking in datastructures hard. Not a coincidence why functional languages, Haskell, F#, OCAML, Scala, Clojure, LISP, etc. had their enthusiast, as they felt just like what you claim. The datastructures already did the heavy lifting. The syntax was not something to struggle with, but it was the natural way to stick the bits together. JavaScript for one never gave me this feeling, and I always felt that either the language, or the libraries, but something was always a struggle to overcome. (Python too... seriously, working with collections is a pain in the "pythonic" way for someone who has experienced LINQ... and for most line of business apps it is all about working with collections.)
- turpentine 4d agoSyntax is listed right there in the GP comment. They've given plenty of rope to hang themselves by. Someone who says that programming is not about working at the level of about data structures and algorithms without LLMs raises red flags.
- staticautomatic 4d agoDo you remember how bad documentation was? I still have nightmares about Twisted.
- flyingshelf 4d ago> AI-assisted coding, on the other hand, rekindled my passion for computers. AI-assisted coding isn't a thing. Why would anyone pay you to code when your competitor spends 1 minute spelling out a problem and doing the same thing for 59 more problems? As far as I'm concerned coding is dead as a profession, now we are Harness Managers.
- flyingshelf 4d agoYou guys can downvote all you want. If you don't already realize this you'll realize soon enough.
- teiferer 4d ago> We are going from the era of manual, line-by-line mental model transcription to one where software engineers can focus on data structures, software architecture and algorithms. That exact sentence could have been said 20 years as well as 40 years ago. I don't know how you programmed pre-LLM, but line-by-line has long been a thing of the past, if it ever existed. I'm sure the folks creating the Apollo software were thinking a lot about data structures, software architecture and algorithms.
- yvdriess 4d agoThey weren't. A lot of abstraction concepts like ADT, modularization, structured programming had to be developed over the following decades.
- throwaway893257 4d ago> We are going from the era of manual, line-by-line mental model transcription to one where software engineers can focus on data structures, software architecture and algorithms. I prefer an AI that is good at data structures, architecture and algorithms. Then, finally, no more leetcode.
- 0trip 3d agoleetcode and data structures are 2 different things. Just like a marathon and jogging in the park
- _zoltan_ 4d agoa lot of people don't understand that the joy of making something is not coding but actually being able to build anything I want. AI just made it 50x better, as exactly as you said, we don't need to deal with the useless junk (what's the API syntax? what's the library syntax? oh it changed in the last 3 versions, let me look up the new API, this and that...). it's great.
- omnicognate 4d ago> a lot of people don't understand that the joy of making something is not coding but actually being able to build anything I want I expect "a lot of people" understand perfectly well that that's where the joy comes from for you. Do you not understand that other people have different motivations?
- _zoltan_ 4d agocoding for the sake of coding is, well, dumb.
- stavros 4d agoIs painting for the sake of painting dumb too?
- _zoltan_ 4d agothat's a dumb comparison. are you equating writing code to painting like Michaelangelo?
- SoftTalker 3d agoDid Michaelangelo paint his works himself, or did he buy a bunch of slaves and give them some prompting?
- _zoltan_ 3d ago
- epolanski 4d agoYou're describing software developers, even better, coders, not really engineers.
- Yoric 4d ago> We are going from the era of manual, line-by-line mental model transcription to one where software engineers can focus on data structures, software architecture and algorithms. That would be lovely. It's sad that we're being forced to vibe code, though, because my day-to-day experience of that is that the agent does not respect the data structures I feed it, nor the architecture, nor the algorithms. > Pure vibe coding is dull and unsustainable with current technology for all but the simplest systems; AI-assisted coding, on the other hand, rekindled my passion for computers. Agreed.
- hermitcrab 4d ago>AI-assisted coding, on the other hand, rekindled my passion for computers. I would be interested to know what you mean by AI-assisted coding. I've been coding for 50 years (40 professionally) and maintain several largish C++ code bases for commercial apps. There is no way that I am going to let an AI scan (train on), let alone edit, my code. But I do ask MSCoPilot questions, basically using it like turbo-charged StackOverflow. And I do get some value from that, even if it is often wrong. Is that what you mean?
- flohofwoe 4d agoI kinda of agree, but still believe that writing most of the critical(!) code yourself has long term benefits. IME the initial mental model hardly survives contact with reality and all those little micro decisions that come up during implementation are good to do on your own and have in your own head instead of being buried in an LLM managed decision record where no human ever ventures. It all depends of course where the code sits between "low level mission critical code" and "high level throw-away code". every non-trivial project has code across that entire range. E.g. the lower level the code, the more I want to get directly involved, and that may mean typing each line manually to get that code directly into my head (IME for that purpose, writing is better than reading - have that manually written code reviewed by LLM instead). Of course that only works if you don't have a manager breathing down your neck who insists on prioritising implementation speed over quality ;) Also you should try assembly coding with modern (non-LLM) tooling, it feels incredibly more productive than with the primitive tools on slow machines of the past. Also: > software engineers can focus on data structures, software architecture and algorithms. Come on, this is was already "normal" decades before LLMs, that's why an entire zoo of high level languages was created which allow to describe a solution in a highly abstract (yet still precise) way. Replacing this high level problem specification in a programming language with a "sloppy" human language specification is arguably even a step back. (also tbf, I'm writing this comment while sitting in a cafe while the LLM at home is busy coding a GL mocking library ;) (which is exactly the boring type of throwaway code which should be automated)
- Ekaros 4d agoHow can you have proper real understanding of data structures and algorithms without at same time having line-by-line mental model? Or do you blindly trust what machine tells you at whatever time you are communicating with it? Architecture I might give not needing line-by-line model. But I really doubt the same with data structures and algorithms. Those are in the end build from lines.
- jampekka 4d agoDjikstra seemed to manage? https://en.wikipedia.org/wiki/Edsger_W._Dijkstra#Use_of_technology https://en.wikipedia.org/wiki/Edsger_W._Dijkstra#Use_of_tech...
- Ekaros 4d agoSeems to indicate to me that he had full mental model of everything. Whole thing in his head at once. Clearly having it in mental model sentence by sentence. AI would here be the word processor.
- layer8 4d agoHe still thought in terms of what the actual code would need to be, at that level of precision, and also wrote pseudo-code.
- penguin_booze 4d ago> AI-assisted coding, on the other hand, rekindled my passion for computers. "Walking on stilts made me taller"?
- Daishiman 3d agoMore like, not having to read the docs of a library or a domain with a million gotchas is a bummer and best avoided if possible.
- lelanthran 4d ago> We are going from the era of manual, line-by-line mental model transcription to one where software engineers can focus on data structures, software architecture and algorithms. Why? What makes you think your data structure design, architecture and algorithms are ever going to surpass AI in the near future? You honestly can't see a (near) future where those 3 elements are done by AI, not by you?
- glimshe 3d agoI can and I'd be okay with that too. The world doesn't have carriage makers anymore. Nobody is entitled to doing what they love or what they are good at. I certainly didn't as my job as a software engineer, despite being profitable, was far from what I like in the discipline. That said, I think AI is still many years or decades away from completely replacing the Software Engineering profession. My kids are entering college right for a CS degree and that's what I tell them. I have skin in the game as I'm ultimately responsible for them. I could be wrong, but anyone's opinion is at most an educated guess at this point.
- deleted 4d ago[deleted]
- GoblinSlayer 3d agoArchitecture is the first to be outsourced to AI, because AI shepherds have no idea how to do it.
- Chris_Newton 3d agoWe are going from the era of manual, line-by-line mental model transcription to one where software engineers can focus on data structures, software architecture and algorithms. Hadn’t good developers been focussing on those things, and other high-level modelling that relates the software system back to the underlying real world domain, for many years before the LLMs were in the picture? I’d even say that it’s one of the most reliable markers of a more senior/experienced developer that their code reads like a clear and logical explanation of what the system does and why, with concerns well separated and minor details and technicalities abstracted away so they don’t clutter the rest of the code.