I do love the weird new world we're in. I feel as though I've been a player in an orchestra all my life, doing a little one-man-band act on the side, and suddenly I've been handed the baton and now I get to conduct the whole show.
The downside is that of course the further you stay away from actually playing your instrument, the rustier you will get; this might or might not be an issue, but it is a significant downside, also being away from the technique side means that as the years go by, you might not be able anymore to have an intuitive understanding of "this sounds wrong" and why it does.
I don't want to stretch the metaphor too far, but it does feel that agentic coding is a bit like building skill tech debt, the more you do it, the more you'll have to work later to bring back the skills you lost. The meta could be that models will get so good so that only a small percentage of developers will ever need to sully their eyes again with looking at code (same as while when we started most people had at least a passing familiarity with assembly, nowadays nearly nobody does), jury's out on that.
Either way, what before needed a full orchestra of developers, now could be doable by a good conductor and maybe a couple of soloists: how many orchestras will be needed? and what will the section musicians not good enough to be soloists and that don't have an interest in becoming a conductor will do? and how are new conductors going to develop their technical chops if there are no more orchestral jobs?
Many more. There isn't a fixed amount of software needed in the world: the amount will expand to fit the capacity. There's a reason it's been consistently difficult to find good programmers: there's more work than the existing population can handle. By expanding to use AI, I expect that the amount of programming work will grow, not shrink. However, the amount of programmers may decline.
If I were to guess, those devs are at least half of the readers of HN, if not the commenters as well. That's why there's so much push back and arguing against LLMs.
Software like that is almost entirely maintenance work. The requirements trickle in slowly and the changes are small but precise. They require deep knowledge of the broader topic, not just programming.
The deadlines are generous now, but what happens longer term? In the future nobody knows how to code without LLMs, most of the topical knowledge is long gone, and the deadlines are always urgent.
But hey, maybe the slopocalypse will incentivize us to disconnect and engage with the physical world a bit more.
I don't want to be a typist, I want to make things.
It's not much different from assigning a task to a more junior dev. I'm the architect, it's my goals we're working towards, but I don't need to be the one to go wire it together.
I never said anything about pride. I was talking about whether terms like "build" apply when the act of building is outsourced to an AI agent.
Also, I would seriously scrutinize the claim that a person vibe coding an application is really getting into the nitty gritty details. These days it seems like people are merely describing what they want and a few high level guidelines, and then letting the AI agents to do the rest of the planning + architecture.
The joy comes from the problem no longer existing, being solved, not from the physical act of typing.
Anyway, let's burn the data centers and become Luddites. Wait, first become Luddites, the we can burn things.
I am not a "programmer", I do "programming".
Good for you!
But for most people, their identity is often strongly influenced by how their community sees them
If you get paid to be a programmer, then society treats you as such, which often causes you to perceive yourself in kind.
Good news: It doesn't.
I just don't have to do the typing, pre-acceptance testing, fuzzing, etc.
People are famously terrible at analyzing their own behavior. I would bet that people who "no longer write code" are actually way more hands off about their work than they believe they are.
Good for you!
To which the obvious answer is often: then why didn't you think of it? And if you thought of it, why didn't you iterate on it and polish it to achieve a proper product that actually matched your vision?
For some people, they seem to believe that an idea isn't worth anything, and only the building is. And, even then, they don't really understand that building a proper product (even with vibecoding) takes a lot of effort to get right, because as you build you find more about the domain, about how the product should work, etc. Sure, loads of people vibecode crap, but many don't. They build things with real care over the course of many many many hours.
It's not that I love agile, but this is one of the reasons it exists. I wonder if the people who so openly bash solving a problem through vibecoding (with multiple iterations) also fail to see this value of agile?
To answer your question (acknowledging I don't really know): If all you had to do was get Claude/Codex to work and it came out perfectly very fast, then I believe you did commission it (and I have no problem with that), but, more often that that, you will have built it by iterating on product decisions.
When I "build" products for clients, I am not doing commission development work. In fact, I'm not building it for them -- we are building it together, learning requirements, failing, iterating. Otherwise, I would have just been a code monkey, and that I have sincerely despised for years.
Lastly: at least for now, the impact of knowing how to guide the AI is still very relevant. Good problem solvers who embrace AI completely blow "regular guys" out of the water. Maybe, as models get better, this will not be as prevalent, but you can clearly tell when someone "knows" what they're doing with the AI, even if they NEVER look at the code. The knowledge from the coding days is definitely partly transferable.
But most software engineers I’ve worked with are not like that. In fact, they want to be as far away from the customer/user as possible and they love the coding for coding’s sake. I’m afraid those are the first to be replaced by AI as their skills don’t extend beyond writing code, which is probably why they are screaming so much now.
Look, you like AI, that's fine. But stop lying to yourself for fuck sakes.
Building things with LLMs is the closest I can get (perhaps even surpass?) the feeling I had as a kid, learning to code.
I feel rather sad that most (though luckily not all) of my friends despise AI, as I feel a (small, but relevant) part of the connective tissue we had is sort of gone. I'm in love with what I can do, I've re-gained the superpowers I had back in college (and even before that) and I can't really share that with them (and they can't really share their concerns and frustrations with me). In two weeks of vacation (actually: in 1 week of those) I finally got around to tackling 5 different projects I had in the back of my mind, mostly for fun (but one of them is genuinely generating some income as well) -- this is amazing, but I have actively avoided talking about this with them, bar sharing a link to some of the things (and even that I'm feeling some regret over)
It's so fun to tinker around with everything! Modding a game, revitalizing abandonware with custom patches, building a harness to know how it works or just...you know...building what is in my mind, whenever, wherever, without it taking foreeeveeeeeeer.
I used to think what I loved was coding, but I have really come to realize I liked both building and coding. The latter I haven't really done much of in more than a year and....it doesn't annoy me at all? I know for a fact I loved doing it, but I can't really say I _miss_ doing it? Maybe after 20 years it just wasn't the same? Maybe the rush from watching my mind materialize into real things so fast is camouflaging it? Who knows...
Not to mention that most everyone else in my surroundings outside of the tech bubble is doing amazing things with AI. Cool websites, music that moves me to tears, random fun games and just, in general, clearly managing to focus more on what they want, on their goals, on their imagination and less on their work. There are exceptions, but the trend is that AI has enabled them to do more of what they want and less of what they have to, and I love that.
I completely accept that, for some people, the fun is/was in coding by hand. And that it's terrible that they'll likely not be able to earn a living just doing that relatively soon. What I have difficulty accepting is the outright bashing and hating on everything AI-related (and, yes, I hate hype too, but have you LOOKED AROUND AND SEEN THIS NEW WORLD?!). I can sort of accept it based on ethical grounds, but very rarely is it actually that. I guess people are just venting and firing in all directions due to how much this has shaken their lives and livelihood (and that, indeed, I can understand).
Anyway, this world is AMAZING! I am 100% with you. Especially because I don't even type (to the agents) anymore. I just voice-to-text, with barely any filter. I've often described it as the closest I've ever felt to truly controlling the computer with my mind, because I don't have to slow down my thoughts to write them. Sort of incredibly liberating.
Unfortunately, LLMs have been shoved everywhere in a years-long desperate scramble to capture the market, so we might as well get used to them while the bubble pops and the winners cash their bets.
> What scares me most is how they allow people who don't fully know what they're doing to deploy software, especially corporate software.
Which is why I also think some people get such disparate experiences. If your organization is allowing clueless people to confidently throw stuff built by LLMs at mission-critical problems, that does seem more like an organizational problem than an LLM problem. (A related problem: the amount of people who keep shoving claude shit in front of us, thinking they've "edited" it enough to not sound like it came from it. I can spot it from a mile away and usually make myself loud about it if I have the power to stop it. AI is not an excuse for mediocrity.)
There's so much to hate about LLMs, and there's so much to love. And since we've sort of ended up in this world of constant false dichotomies, this kind of nuance gets lost in the trenches.
Of course LLMs in the wrong of clueless people are bad. Of course the way in which these models were trained is shameful and it's criminal that people are having their work stolen. Of course we need to find ways of dealing with slop. Of course it's bad for the environment at the moment (and so on). The list goes on and on, I know that.
But on either side of this debate (which SHOULD NOT HAVE TWO SIDES -- that's THE problem), people just tend to lump everything together. Your example is one some acquaintances repeatedly throw my way, and I'm left wondering if they have even thought that they're just showing me how broken their org is, not how bad the tech is? But, nope, they turn to me and go "AI bad bad"...
We can't seriously expect medium-size businesses to become (and stay) unbroken without significant, continuous investment and effort. They will always be broken, and AI is the sprinkle of crack they didn't know they wanted.
Absolutely!
But is there much more to "building with AI" than chasing dopamine? I would say for many, the answer is no.
(I will say, though, the people around me I mentioned getting immense benefits from AI outside of tech are most definitely not addicted to it)
AI tools amplify existing coding experience, and reward management experience too. Engineers with a decade+ of experience are more likely to have been engineering leads or spent time in engineering management.
Related observation: Anthropic are developing a reputation for hiring former CTO/CEO/founders and putting them back to work as individual contributors.
For me it's mixed. There's aspects of coding I do enjoy but also there's tedium that I don't. What I don't like about vibe coding is it has turned me into just a code reviewer in a lot of cases.
Now it's just work. There's not a ton of pride in it.
I wish to ask you for some feedback and clarity and further concrete resources because I feel a little confused/lost regarding the whole vibe-coding situation, I wish to say thanks in general though as nonetheless your comment finally made me concretely express all the nuances brewing in my stomach about vibe-coding and how I often nowadays feel as if I may be falling behind if I don't know how to do it "accurately", I would love and really appreciate to get a more in-depth response if possible.
I have said the same thing as you have said as well sometimes if not mostly that AI is a tool which should be used sensibly (as I think that this is what you are intending to say as well)
Within the contexts of vibe-coding though, I would really appreciate it if you could explain to me in more depth about the whole process and workflow that you follow if possible and how much drastic change has that been in. I would love some concrete examples or repositories or just some pointers that I can help to improve myself further.
Here are some other thoughts that I have on the matter:
When you mean design review, are you just architecturing suggesting it the main architecture itself, for example. I mostly do "create me a golang web application which uses htmx/templ/modernc sqlite about XYZ" and then create a more detailed prompt from it which I then pass onto the agent to complete and give me a single binary at.
Most often than not though after this point, I haven't felt the need to change the architecture after the first initial setup and afterwards I point the changes that I wish to be done like "I want X1 Y1 Z1 changes" and if it breaks something then just showcasing what breaks, and taking feedback then "it just works"
The architecture sounds solid to me, I love golang as a language and I run multiple such apps on same 500mb/1gb ram servers and use cf tunnels in the middle.
For styling, I mostly prefer monospace-web theme because that's what I personally really like a lot but recently I found that giving first prototype to chatgpt and asking it to generate image then it can create a decent UI as well.
An example website that fits the pattern: https://mirror.forum
So what are the things which I should do though now? Should I attempt at reading the code and trying to understand it completely (I think that golang's mostly standardized method of doing things helps in reading AI code) or should I treat myself as thinking more about (seams?) or other technical terms that I found described within obra/superpowers or matt-pocock and other skill driven development oriented stuff.
Can I learn these stuff through AI itself as well and I wish to generate my own projects as well because I still believe that there's some joy in that as well as I find vibe-coding to be sometimes a bit hollow[1] [not sure though as the atmosphere has changed, earlier people used to be extremely critic of it whereas now more accepting]
I can be wrong, I usually am but what I am finding the most shocking is that although we are constantly seeing new tools and I try to be more well aware of them and always curious about it, yet I don't know at the same time where to actually proceed because the projects are just being built enough yet I don't know if I am doing standardized practices enough or how to really meaningfully improve such practice if vibe-coding is really such valuable then I would prefer to learn the more technical way of doing so and how experts within the field actually do vibe-coding.
Thanks and have a nice day and I would love to hear your/the community's response.
You want to learn web dev? Start typing HTML and JS. You want to learn how to use AI? Start typing specs and prompts. You'll need to learn both. But, you can't learn web dev by typing specs and prompts.
You can learn using AI as a research assistant, a tutor, a reviewer, a critic. You can use it to bang out quick tools, prototypes, deal with the hassles that are not your focus at the moment. But, whatever you are trying to learn, you need to do the actual implementation manually. There is no such thing as passive learning.
What is the exact learning of the topic that I have to do in it, for example. I can (and I will) learn webdev about valuable if vibecoding becomes the norm (as it is becoming nowadays)
Now I will learn the basics, then intermediate, then expert. Where exactly do you think that the value lies in?
ie. are the advantages put within getting from beginner -> intermediate or to complete beginner -> intermediate -> expert
Another thing is the level of fields that you have to be in or the whole question could perhaps be framed as being the jack of all trades or the master of one? Is this going to be like typing speed [90 wpm vs 130 wpm is somewhat negligible effect] or like chess [ 2100 vs 2400 isn't negligible and becomes exponentially harder when you become expert yet the difference will have genuine real impact maybe?]
Also within the process of vibe-coding, what is the actual value that I am adding given that I have learnt the skill, what I think might be is that I can actually verify if its good or not instead of asking a chatbot [which might be sycophantic or might miss the devil in the details], and say its okay.
Also, how do people naturally move away from the natural tendency to just... not read what AI is saying (when I tried obra/superpowers etc.), this video[0] tries to showcase what I am suggesting perhaps but I feel as if its still quite a slippery slope.
I hope that this question can be taken in good faith (because I like learning about CS for the sake of learning itself) but aside from that, why learn HTML/CSS is still a question that I can perhaps ask, similar to why learn assembly[1], and to what level, and will it help me in getting a job and if that helps in what I will actually do in job, and if so, then how? if the job done via vibe-coding as well. [I think this might tie to the previous questions that I have asked]
I do agree with the overall premise and learning can't be passive granted. Learning requires some form of active involvement which includes the phase of struggle (I think), yet that struggle is done for something meaningfully better and has a purpose. What AI does to many is question that purpose, why learn?
The issue I find which is why I am coming to this again and again is this, I am unable to find how the improvement within this corresponds to actual work/job or in actual terms how so.
Also, what happens if suppose the difference between an expert person with extreme knowledge and a normal~ish person is that it might take normal person is some more time/prompt/tokens to debug the issue with the models itself. Like it might take 2-3 more prompts to fix the issue.
I am finding people with varying opinions on how even the most expert people on some topic are agreeing that most AI can do it good enough already with vibe-coding, whereas some generalists who might not know the other language are porting their projects in it with vibe-coding.
In general, when approaching learning as well, I am not sure which to approach first: the thing which might be approachable (so for example: after HTML/CSS/Js Python, Django [thanks @simonw], golang's complicated full stack application)
and what if I might not like JS so much and python only enough but golang the most ideologically but my skill level still matches mostly python and its what I am most proficient in writing by hand?
I am personally going to go the learning path (the hard way?), I don't know if its the hard way or not but I wish to learn programming quite deeply even if just for the sake of itself and making my brain think about problems better
but my mind does still wonder if people on the other side could be right as well, does everyone need to learn deep ends of programming if programming becomes simpler or operates via just words, similar to how in previous times we used to have a lift operator and now we have all become a lift operator with the press of a button.
My opinion on vibe-coding has been this for quite sometime now: I do vibe-coding not for learning but for if/when the end results/prototypes matter more than the process but I absolutely DO NOT want to do vibe-coding if learning is the goal. before college, I didn't even have time to properly pursue the learning phase but I will now have the time and I will chose the learning path.
Also, when someone suggests that vibe-coding is all good if done right and alright when you do it this particular way or that particular way which causes my mind goes to this chain of thought and I feel a little confused.
As such, many of these thoughts float into my head when someone mentions this and it makes me wonder what should I do to achieve that and the other goal as you mentioned which was learning itself, it makes me question both sometimes if I am feeling p(doom). Learning as in, for all the reasons that I explained above and vibe-coding as in feeling shallow and hollow.
I am extremely sorry if I am being unable to succintly convey what I am trying to say and for the longer post. I really don't know how to express this particular thought because its all over the place. I hope that it's okay though and I might not have wasted the time and thanks for commenting and have a nice day.
[0]: https://www.youtube.com/watch?v=ZumXpZzDsgo
[1]: (although there are still good reasons to learn assembly imo, I recently vibe-coded/[vibe-forked?] a scratchpad application in assembly as a way of messing around with AI.): https://github.com/serJaimeLannister/rhunpad
My advice would be, as hard as it might seem, let yourself go slow and just do things. Spend a few weeks on webdev, or learning aseembly, or playing with AI. As long as you are engaged with whatever you're doing, that is enough. You will, via repeated exposure to smart people doing hard things, learn how to navigate and overcome all kinds of problems.
I actually disagree a little with the previous commenter about learning how to use AI. While that is useful, AI becomes second nature once you have been exposed to all these other things.
I write a lot of high-performance code. To do that, I had to learn the details of how devices (drives/NICs/GPUs) work, how buses (PCI) works, how RAM, CPU caches, instruction pipelining work. Now I know how to structure data flow to work well with the machine instead of against it.
I write a lot of APIs. In doing that, I had to learn the hard way about how different API trade-offs drive client decisions. How to foresee problems in the future stemming from interfaces I'm writing now. How to argue with clients to get them what they need in the long term and not just want they want for the next milestone.
At all of these levels, I had to learn how each level works by doing it. By trying it lots of different ways. And, by optimizing it all the way down from "More productive client discussions" to "More performant assembly instructions" :P
Now whenever I do vibe-code, it's because I know exactly what I want and I can get AI to type it faster and with less RSI (carpal tunnel). Or, I know I want to prototype a few options rapidly before committing to implementing one design for realz. In neither of these cases am I telling the AI "Make it performant and easy to use." Because I know how I want to structure the code to make it performant. And, I know how to set up the API to make it easy to use. So, I'm telling the AI how to structure the data flow and how to set up the API. Because, if I didn't, I'd just be generating a big ball of noisy mud that's neat to gawk at, but has no long-term value.
So, what should you learn? You need to learn how the stuff you are interested in actually works under the hood by experimenting with it manually. Not just "Hey chat, make it work somehow..." You need to focus on architecture and systems thinking because otherwise you won't know how to prevent AI from holding your hand deep into a maze neither of you can escape from. And, you should be spending the majority of your tokens on step-by-step refactoring, never one-shotting. One-shotting is for AI tech demos. Not for learning or production.
My uid was < 32768.
Would I want to build a business around products that are built this way? Not yet. I'm definitely not comfortable supporting a vibe coded heap of code in a production setting.
I love AI coding because I can use it to automate all the parts that are not fun or that would take far, far too much time to implement by hand. It puts things within reach that would formerly be unthinkable without millions of dollars and a gigantic software development team.
I still also enjoy coding things by hand... interesting, original things.
The technology itself is also absolutely fascinating. I've followed AI research for a long time and played around with it a lot, but the incredible breakthroughs of the last 5-10 years have blown me away. I've been working through the math on attention layers and feel like I've almost got it, and it's genius. Very cool stuff.
(The companies behind marketing and scaling it are, to varying degrees, not cool, but the tech and science and math is.)
Robots are much easier.
Also they have feelings and off time and stuff.
My first program was in BASIC on a Sinclair ZX Spectrum with 48K. I used to sit for hours typing "listings" from gaming magazines and save them on cassette tapes, like this: https://www.youtube.com/watch?v=AuVBX5Iu18I
I love coding manually, and I love AI! This is the first time I've felt the same excitement about computing since the 1980s, when there were new computers and new platforms and new operating systems and new programming languages coming out almost every month.
I use AI where it makes sense, where a quick output matters more than the fact that I manually coded it, like map editors and other internal tools, or quick proof-of-concepts.
I used Codex to convert some of my old Visual Basic 6 apps and games and it was a joy to see them running again after so many decades. There was no way I was going to convert them manually since Microsoft abandoned VB.
Bro with <500 karma in 10 years thinking he knows something
You're the middle of the bell curve meme :)
bro ran out of tokens halfway through the comment