One side of it is the advent of open-weights models. This alleviates part of my fears, fears of my free software and open-source tools being made irrelevant by black-box machines built by American corporations that absorb infinite capital, with capital gaining infinite power against labour.
But the other side, is that I am slowly witnessing how LLM's are not diminishing my value as a software engineer, more on the contrary. I see the outcome of projects that are vibe-coded to oblivion, immediately turning into unmaintainable messes no matter how many tokens you drop into them. Architectural insight, establishing proper processes, properly trading off features, applying engineering restrain, are more important than ever. I see my influence in projects even more crucial than before. Furthermore, the skills that I gained by sculpting code with my bare hands are only gonna become more and more rare, as I belong to one of the last generations that wrote code on their own.
I realized this weekend that a good analogy, is that we are like airplane pilots. Modern commercial planes run mostly on auto-pilot; the job of the pilot is nonetheless of uttermost importance, and is remunerated accordingly. We are code pilots with auto-pilot for code, and because of that a small team can build systems with levels of complexity before unimaginable used by thousands or millions of users, and for this reason, our responsibility and impact on projects is greater than ever.
I do miss some of the craft. As others wrote here, I can visualize in my head codebases I wrote even two decades ago, I even remember the color scheme of the editor I used for them. This won't happen with the code of the new era. I miss hand-optimizing a clever algorithm, designing elegant abstractions using rare language features, obsessing about a crucial piece of code. I worry about some of my brainpower atrophying. But maybe, if I open my heart to it, there will be good things that come on the other end of all this crazy time. Even if I sometimes feel like I am "just" a manager now, if I look closely, I can notice how I am still an engineer, perhaps, more than ever. And with my intelligence I can build great things, perhaps, greater than ever.
I made this argument yesterday that this is the real breakthrough for coding. Languages, syntax, frameworks, etc. no longer matters. ASM, Fortran, even punch cards are back on the menu if you're bold enough to prompt for it.
As a swe i've always enjoyed the process of designing solutions to problems: design a great architecture, find the right abstractions that make everything fit naturally, write good clean code, etc ... that's what i enjoy doing.
Now there's the part where i've had these ideas for years that i've always though that i'd be cool to work on. But basically it would have required a 10 person team for months, out of reach. Now i have Claude, Codex and Grok and i've already built many projects.
The code isn't pretty, i didn't enjoy it as much as i would have if it were done manually, but i did something i never could have done otherwise.
There's some fun in the process though. I feel like a team manager and i occasionally step in to push for some architectural changes or code rewrites because things become too brittle because of not good enough architecture.
It's the loss of understanding. When you make something, you gain a deeper appreciation for the nuance of all that is required to breath life into it. When you outsource understanding to another (agent, contractor, w/e), you're losing the nuanced understanding of the creation.
>After all, you create the prompts, don't you? You said you were proud of doing things. Isn't that doing a thing?
This feels like the difference between putting together an ikea futon and building a hand-hewn table from logs. The fidelity of your understanding is different depending on how deeply you're engaging. But not felling and drying your own timber doesn't mean you can never make something from dimensional lumber.
I'd take the author's word "making" to mean something more like "having enough understanding of the implementation of the task, that you could recreate the output without recourse to the same set of tools".
Tested against their examples:
>I had a new front deck put in [by a contractor]
As a consequence of this addition, did you learn enough about decks so that you could you reproduce this feat if no contractor were available? If no, you didn't make the deck. If yes, you were probably watching/helping the whole time, and you can claim (at least partial) makesmanship.
> any more than using a hammer to drive nails does.
If you didn't have access to the hammer, could you still accomplish the task of attaching two boards together with a nail? Likely yes, use a rock. It's harder, but the understanding of driving the nail is transferable to other implements.
> What if I had an AI-powered hammer and asked it to hit a nail for me? What's the difference? But at that point, I can't say that I hammered it.
This one contradicted his compiler example. He says that he did write the Fibonacci program, even if the AI-powered compiler translated it to assembly. So by similar reasoning, you can claim you hammered a nail with an AI hammer, so long as you understood the aspects of hammering which the AI took care for you to such a degree that you could reproduce the effects even in the absence of the AI hammer.
The crux of the tension is around "what did you learn from the implementation of this task". If you learned enough to reproduce the objective without the assistance of AI (perhaps much slower), then you can claim the high fidelity understanding that came from making. If you didn't internalize anything, and the AI/contractor managed complexity on your behalf, then the output was commissioned, not made.
I think where people get worked up about this, is that it's not easy to tell what understanding other folks are taking away from their AI usage. It does seem like a bifurcating event where some people are going to net gain understanding of their world due to these new tools, while others will net lose understanding.
In the code scenario, I most likely won't go over the final result: for various reasons, I often lack the interest and drive to understand the nuts and bolts of it. So I'll just try to assess whether it's sufficiently good for my goals, and then move on.
But in the circuit design scenario, I only use it as a "technical expert" to bounce ideas back and forth with, and to explore concepts I don't fully grasp. I use it as a sort of ELI5 machine, and never ever ask it to do something for me - just to explain.
The fundamental difference in outcome is that I remember next to nothing about the code, and have no feeling of "ownership" over it, nor do I feel proud or care about it at all.
Conversely, I am incredibly proud of the PCBs and circuits I design, even if technically some parts of it came straight out of AI recommendations. I really feel like I did the job, and AI was just a helper tool to get the tough concepts untangled quicker in my head.
Ultimately I think if you delegate 100% of the work to AI, and don't care enough to use its output to at least learn something, it's only natural that you'll never feel any connection to it, let alone any sense of ownership over its output. Being the prompt author is simply not enough. That's why I think you hit the nail on the head there: deeply understanding the output is the key, I just couldn't put my finger on it before, and now I can. Thanks for that.
Alongside understanding, you also loose taste and perception. You can still say whether some things is good or bad, especially if you interact with it, but you can no longer articulate why. And with perception loss, you can no longer preempt a bad situation as you lose your awareness of things.
So for you a car may be a vehicle that you drive around. But for a mechanics it's a much complex system. When something doesn't work, you will lack the vocabulary to express what's wrong. And even when everything works, you may not be able to explain how.
The thing is, LLM are very buggy translators. Agents in software development help because they provide a way for LLMs to verify their output. But correctness is very hard to express. OK for a simpler task, but not really for a complex systems. Just like fluency in a foreign language is not about knowing the rules of grammar and a lots of words, but also knowing the idioms and other figure of speech.
Is his required knowledge of metals, assembly complexity, tolerances, just waved away because he doesn't turn the dials or change the tools any more?
To some degree, some folks esp. for "lights out" machining are just pushing buttons and loading/unloading pallets of stock/parts, but usually the job description for that is "machine operator".
A machinist is expected to understand feeds and speeds and how they interact with toolpaths and materials and tooling.
The big question of course will be how things fall out with the on-coming generation of 5-axis machines which are intended to be AI-driven:
https://toolguyd.com/new-ai-powered-desktop-cnc-machines-202...
There's a line there somewhere that gets crossed.
Part of it has to do with direct one-to-one determinism. I pull that lever, the excavator bucket pulls up a ton of earth. There was no extra decision made in the middle. And it was completely reproducible.
We might even go so far as to say, "I moved a ton of earth." Even though it was the backhoe that did it.
Back to CNC, consider the manager who orders the machinist to use the CNC to make a widget. Does the manager qualify as a machinist?
I think most people would say, "No. Not unless he coincidentally was one."
There's another person in the middle in that case. That level of indirection is somehow making the manager not a machinist.
I speculate it has something to do with the fact that the machinist in the middle is an independent being that holds knowledge to make things go. The manager gives a very high-level instruction and doesn't instruct the machinist on how to do it.
And I think LLMs are starting to feel (to folks like me) a bit like that machinist. They're not deterministic like the backhoe and the compiler. And they seem human, convoluting the matter further still.
Instead of saying "create instructions for CNC to make me a _thing_, then instruct the CNC machine to actually create the _thing_" they went and created the instructions themselves.
Yes. The CNC doesn't act on its own.
If I ask the CNC "make me a widget", am I a machinist?
Because I absolutely feel I made entire SaaS products, cool ones, by hand and they sat on a multitude of packages and infra I but glued together.
For frontend, I tailored templates, and instead put energy and time into making modern frontend toolchains and Django backends work together. This was satisfying to understand and build.
Being at ease with the minute details of Django or latest flags of esbuild felt like knowing the various modes of my Dewalt or Dewalt-colored power tools.
Building with AI is not a passive activity, and doing so well and efficiently, there is a ton to master and it evolved a great deal in the past six months.
So leveraging the tools using custom skills, custom CLIs, etc this is very important and very valuable thing to do. I would classify it as a serious contemporary computer science skill that should be taught in addition to the fundamentals.
Presume now, you're making and leveraging all of the modern bells and whistles of Claude Code and Codex. That is, you're reading the release notes and you have personal tooling so you can switch between them easily.
You can build incredible things with sustainable release workflows and reasonable security and possibly more than what a solo dev's "production quality" of yore.
I know this because I had Fable look at an entirely "hand crafted" SaaS I built over two years and it found about a page of bullets just in p0-p1 that I had not caught in my artisanal best effort. They were real issues, maybe unlikely but still things that I would have fixed if I had known.
But what can not be replaced is *taste*.
You can build all day and night and if it ain't good people won't use it. If you can't describe it in a way that makes sense to people they won't care.
If you build something people don't want you've not really made anything more than we did before we had AI as a tool.
I do think it can still achieve the same level of satisfaction if it is built well. Because it actually does take a lot of skill and knowledge to make something well using agentic programming. This is regardless of whether people want it.
> TLDR: I gain a lot of fulfillment by making things. I don't consider things built by others at my request to be made by me, and are therefore much less fulfilling. And then I feel sad. This article starts strong and then heads off into the weeds.
Secondly, maybe this conversations boils into: what level of abstraction are we comfortable working at?
I mean that to the tune of "To bake an apple pie, you must first create the universe".
Few people will create the universe (please introduce yourself, if you are one); some will buy the apples and the crust and put them together; some will make the crust from scratch; some will grow the apples from seed; some will follow a recipe; some will buy a frozen pie; some will simply buy the pie.
I think we can all agree that buying the pie is not baking it. But what about the others? To me, there's an argument that all of them are "baking the pie", just taking place at different levels of abstraction. And I think you can take pride in any of them, and hopefully more pride in whether the pie is delicious and well-shared.
Maybe a hot take, but I do think, that even from seasoned developers, the idea they've been doing the 'logical' part so long they'd have it done anyway without AI and it'd only take more time is delusional, when, from personal experience, even when I code something I 'know' and I've 'done', I have to remember stuff, google what isn't ingrained in my brain, and so on.
I don't know if the author would consider this a part of making, but a single thing you build is, obviously, a mix of things you've built. I no longer sense this minor feeling of 'making' when I'm doing something. To make a logic that's part of a bigger system and see it running, thinking how it's gonna be once it's all done... I no longer feel that.
I think there's a lot of parallel with experienced programmers using LLMs and that idea about steroids that it just gets you there faster. I'm pretty sure I could eventually program most of the things I've used AI to write, and what it produces at the top end I/you can't really prove that I wouldn't have thought of it. But is that really true?