I sometimes wonder if people get into this to create an actual working something or they just enjoy sorting colored blocks for the heck of it.
I am on the other extreme end: I don’t give a rat’s ass about the code itself. The spec, the intent, the architecture, the contracts are what I find interesting. All the “file handling” and “logging” and syntax wrangling and caring if some “variable” is on the “stack” or the “heap” I can live without very happily. It’s not that they are uninteresting in and of themselves but I find it hard to justify keeping my focus on these microscopic issues again and again and again and again.
I am becoming a better architect with AI, because I am spending more mental energy in that lane, getting less embroiled in the nitty-gritty of the code.
If your goal is to become better at writing code, it almost certainly is a net negative.
If you define growth as shipping stuff and getting things done that you previously wouldn’t have had the time for, then it might be a positive.
Hell, it’s probably both at the same time and what each person cares more about is the deciding factor.
Think of the recent bun rewrite from zig to rust, around 1M lines of code. If you would have a team do that migration they would very likely have to become close to Rust expert, and develop an intimate knowledge of the codebase, its tradeoffs, have ideas for future improvements, good understanding of the technical debt they accepted, reliability of tests, etc. That's A LOT of expertise you can then apply to other things in your professional life.
Instead they went the AI way. The got the artifact (the migration) in ~1 week. But that's pretty much it? What did they learn from that project, other than the fact the AI can do that work? My guess would be pretty much nothing. And pretty much any other software engineer could have done the same migration. There is zero personal growth here.
Be careful with that claim. Abstractions more or less leak especially in CE where the OS and hardware you built on are already full of leaky abstractions, e.g. performance traits. It is still important to look through and comprehend code.
I don't believe this, every architect ive ever worked with that was not regularly in the weeds on various things in the codebase were universally terrible and out of touch.
When you are good at it there can be craft in it still.
A programming language is a formal intermediate language for turning human comprehensible instructions into machine instructions by means of an interpreter or compiler. We've now allowed that intermediate language to be English, because that's preferable to most people, and the "compiler" has become very complicated indeed as a result of that.
You still have to be able to express what it is you want in a way the machine can understand, it's just both simpler and less deterministic now.
You don’t need a precise definition of a term to know what a thing is and isn’t (Wittgenstein has taught us that much at least). We just need to know that programming languages are used to express an executable computer programs (usually by translating to simple machine instructions) and that a natural language has never been used in this way in a significant manner.
A case in point. I bet you can‘t find a definition for a fish which includes cods and sting-rays, but excludes dolphins and shrimp. And similarly the IAU were unable to come up with a definition of a planet which included Pluto and Mercury but excluded Ceres and Sedna.
I mean, a quarter century ago Dijkstra argued your point compellingly, and he was right back then. If you read his "On the foolishness of “natural language programming”" (1978) you'll find that all of his most compelling arguments are gone now. Things have changed, and the machines can now largely cope with the ambiguity of language as well as the average human being can.
Since human language is the original source for the specifications we turn into formal code most of the time anyhow, we're really just asking if that original specification the programmers turn into formal symbolism is a form of code or not, and whether a good spec is equivalent to good code. I think it's difficult to argue that it's not, especially given that we now have these handy Natural Language to Formal Symbolism compilers.
> We just need to know that programming languages are used to express an executable computer programs (usually by translating to simple machine instructions) and that a natural language has never been used in this way in a significant manner.
I did that like 30 times today. Maybe it wasn't in the past, today it is. The path is now Specifications->LLM->Formal Symbolism->Machine Code, it used to be Specifications->Human->Formal Symbolism->Machine Code. The inputs and outputs are the same, and I would argue that the process is still "programming" regardless of syntactic games with semantics.
Eventually we'll find a more efficient version of that formal symbolism and stop using code designed to be human readable at all. Still nothing will really changed besides the input method.
You did no such thing. You fed some text into a statistical machinery which was able to infer another text from it. The first text just so happens to be a natural language and the inferred text was a formalized programming language which the statistical model had had its weight tuned to produce.
Statistical inference is a completely different process then compilation. Inferring is a completely different verb from compiling. Two different verbs which mean different things.
If we take your logic and explore its implication, we can just as easily claim that a project manager writing JIRA ticket is programming, and that JIRA is a programming language. The project manager wrote a ticket in natural language which was picket up by a developer who translated it (by your defintion of translation) to a formal language which got compiled to machine instruction and executed by a computer. This is obviously silly. And as silly as you find my description, I find yours equally silly.
There is nothing in the AI photo worth re-looking at later, because there is nothing there. There is nothing to take from any of the 'details' in the image.
I am not a proponent of AI images, believe me, but I find it interesting to think that people would not like AI images. People don't really care if something is real or not. They just want to be told a good story.
i.e. we are fucked, but we have already been fucked for years without knowing. Call me a luddite but selfies is the fakest shit ever. I would rather take pictures of plants, rocks and animals than people.
That said, I wouldn't let AI build my Lego sets for me because the point of that is the building. But for work? As long as my boss is happy enough to keep funding my Lego hobby, I'm happy.
> I sometimes wonder if people get into this to create an actual working something or they just enjoy sorting colored blocks for the heck of it.
So yes, to be honest, some people write software for the "heck of it". Will my implementation of Lisp interpreter matter at all in the grand scheme of things? No. It is in fact a waste of time, because you _could_ have learnt how it works and implement it in less than an hour with LLM.
> The spec, the intent, the architecture, the contracts are what I find interesting.
To me, this is like saying the financial of the company is what determines the company's success, not whatever the engineering team is doing. So instead of thinking about the "The spec, the intent, the architecture, the contracts", just give the right monetary incentives and you will come up with a successful project.
From this perspective, can you empathize with the "low level" developers?
On the other hand, it feels like what people who weren't great software engineers say.
It's kind of a craft. I can't imagine an exceptional artist saying "screw the craft, I just want the painting that vaguely resembles what I requested".
I _can_ imagine artists that were not exceptional saying "it's so great that I can just prompt and get the damn painting, who care about how it's put together".
Up next, an architect who doesn't understand how concrete pours or how steel bends under stress? Hope the AI gets it perfect?
Interesting times we live in - and I realize this is an elitist take.
For my own sanity, I never allow AI to do everything. Either I write some code and turn to AI for debugging help and code review, or I let AI write the initial draft and I debug the AI-written code.
Instead of void shit, empty pleasure.
Some people got into software development because they love to code. Others got into it because they love bringing ideas to life and coding was the only means to do so.
I am of the latter. I love software development because it allows me to bring my idea to life. Yes, I love to code but it's a means to get to my ultimate goal. I don't have a lot of time outside of work and family to work on my ideas. They usually just sit in my head until I forget about them.
Being able to use AI to assist in feature planning while I'm on the go, break everything down into organize phases, put those phases into the structured tickets, work on architecture design, and have things come to life around my requirements and within my constraints has been a complete game changer.
At the end of the day I do not put my skills on a pedestal either, I can learn from AI the same way I learn from reading open source code.
I agree with you completely.
I started at a new company in February and was able to use AI to get fully on boarded 3 months faster than their typical onboarding cycle.
I use it to learn new things all the time and to enhance my existing decades of experience. Very humbling when it shows you how much you don't know.
Also I’ve been thinking that ai code is like cheap amazon furniture and hand crafted is well… hand crafted.
There was always some subtle quirk, a bug that irks me once every so often, something I'd never want to unleash upon masses and although these people made their work available through various channels, paid or unpaid, for some reason I felt more of a grudge than gratitude.
And I tried to fix things I did. It was a breathless, thankless exercise of working through someone else's code line by line for decades while hardly being able to lift my head because of actual work I had to do to support my life. And thus a villain was born.
I am so glad it is over. It is all ingested into neural network weights and high-pressure sprayed to the masses through RNG. I am finally free. I don't have to learn your stupid aws commands, your helm configs, your systemd antics, your http api. I don't have to care about your life times, your gc params. I tell the computer and it clinks and clanks and eventually gets the job done like gene rodenberry intended.