I keep hearing programmers say they no longer read the code they ship. I'm curious. What do you read instead?
I learned programming by reading other people's code. And the quality of my code is a direct result of the quality of the code I read. How do you keep improving if you don't read code? How do you keep your system sustainable if you don't read the code it's built on?
Maybe a little bit of a controversial take - I'm starting to think that the attitude toward vibe coding needs to change a little. Making a software product probably shouldn't be about making perfect and elegant code. I've spent most of my career as a software developer, and I love building and making things that I hope become products. BUT, if I'm serious about competing with other projects and products, I have to vibe code large chunks of code. And I do mean vibe. Sometimes there is just to much generated code to process every line manually. Sometimes, admittedly, the code isn't the most easy to follow, or even in a language that I'm fluent in. However, the competition is pumping out products that people are paying for today using these tools, so you simply can not do things tho old way and and be competitive. You'd need a whole team of developers and QA.. and it's simply just faster, cheaper and easier to do it with AI and fix whatever needs fixing later.
Don't get me wrong, though.. if you are writing anything critical, like banking software or a lightning app, I want it human approved/understood/written. But for the latest saas or mobile game, just vibe it until it works and then push to production... nobody cares how spaghetti it is or if you did something interesting behind the scenes. Developers already use frameworks and libraries that they didn't read the source to, this is just the next iteration of that.
You're making a good point. Competition is hard. It always has been. If vibe coding or vibe engineering wins, we'll all adopt it anyway.
I'm only asking this. If it seems you no longer need to write the code, and for some you don't even need to read it, what control do you really have over the software you're building? Maybe it doesn't matter. Maybe it never did. Still, I'm wondering.
And if you lose control over how the software is made, where do you get the confidence you'll be able to fix it later when it breaks?
I think this is the real inner strength of devs. You know you can fix it anyway. You sleep well. You work in peace.
So with vibe coding, how do you build that confidence? I'm asking for real. It's not rhetorical.
That is a totally real point about confidence! I recently added a feature to an application that I know I won't be able to fix myself. If it breaks, I'll need to 100% rely on AI. On the other hand, I've inherited human written code in the past that I wished that I could just rewrite myself (so that I would confidently understood all of it) rather than try to understand how someone else's code was designed to work and then run into potential surprises. I never liked that part of the job, but maybe that will be the role of professional software developers of the future - less engineering from scratch (my favorite part) and more the dirty work of finding a specific point of failure in a mess of code that you didn't write.
My strategy, so far, has been to vibe small enough chunks that I feel like I at least own and understand the overall design/architecture and can pinpoint the general area that is failing/needs work. I am starting to feel like what I enjoy about software is the "owning" and controlling the direction of development part, not so much typing out lines of code and looking up syntax. But maybe I'm just getting old and lazy :)
😅
Yeah this is why I stopped learning how to program seriously. With all these AI tools and vibe coding trust me bro approach to development didn’t sit well with me.
Like I still want to learn but just the time and all the confusion out there left me in a confused state
Still worth learning imo.
I think so too
It still is. But IMO it is exposing a lot of lazy people. And lazy thinkers.
Yeah this is why I want to learn to improve my thinking skills
I'm a big fan of skill stacking. Adding programming to a set of other skills has massive value. I'd argue that AI makes it much easier to learn as well as execute on ideas.
Making a proof of concept for an idea has never been so easy.
True. I think your knowledge level can be pretty basic and still vibe code some useful apps, especially if they don't have to maintain complex state. Predyx Buddy and SN Graph Explorer were both vibe coded in less than two hours, with pretty rudimentary HTML/CSS knowledge from me. (I was responsible for the mathy stuff under the hood, but the interface and webpage elements were basically vibe-coded from scratch)
Here's the true story
Totally agree
Not investing in your knowledge and skillset right now is a mistake. The dumb fucks are right about one thing: we are in a bubble right now, but it's what you 🫵 just mentioned. It's "vibe coding" and "trust the machine, bro."
There's no substitute for real skills and authentic ingenuity. They're releasing shit software and not doing their due cybersecurity diligence, and they're setting the internet up for a problem only real skills will fix.
I agree
Same. But I'd note that for decades I have been reading other people's code because they didn't. The new thing is that there is no more
LGTMeither, which meant "I glanced this over, let's go!"You don't. But you no longer need to improve because you're mostly typing in the chat box, not the editor. You just bitch at Anthropic for Claude being a dumbass.
By throwing more GPU time at it.
I've been thinking about what is needed on the systems consumer side if this persists (likely, I think!), and to me it seems that the real challenge will be in adapting architecture and interfacing. Because of the decrease in attention to detail on the vendor side (which in the median has already been awful in the last 2+ decades) not being vendor-locked now becomes essential. As we observe the increase of
did-not-readmerging, on the consumer side I hear: "we want to get rid of<x>, but this will take forever because our entire process depends on it".Perhaps, having a staff coder in-house will become a necessity again, like in the 80s/90s, but now maybe more of a staff systems architect? Getting your overall framework balanced between interface rigidity and implementation flexibility is becoming a key (critical?) success factor.
Interesting point. In the future it might be something similar but with AI generated code in a much bigger scale. At least before humans couldn't couldn't generate that much.
I'm curious to see how it goes.
Anyone that doesn’t read the code they ship is just asking for trouble. AI is a great tool to use but if you don’t maintain ownership, you’re fucked long term
What do you mean by this?
I assume you mean if you don't understand the code or maintain the mastery of it. A counter to that is there are many times, most in my case where the code I write will eventually be someone else's job to maintain. And I have lost count of the times I've had to maintain others code.
Another counter to this is on large projects you cannot know all the code. You can't keep it all in your head.
The problem I see with AI written code is making sure it is readable and understandable by a human expert. This is a problem with human devs as well. We have probably all seen projects that worked but the code was incredibly hard to grok.
Basically taking responsibility for the code that you merge, understanding how it works, how it plays with other code it touches, and implications of the change, and being on the hook to fix it later if/when it breaks, assuming you're still around.
I agree with you here. Most of the time the code you work with was written by someone who is long gone. I guess the same can be said for LLM-generated code. But generally you are in a better spot if the person who wrote it wrote it expecting they would be around, compared to the alternative (as in, the author expected to have to maintain it, not that they could make it complex because only they understand it).
I agree with this, too. I've worked on both small and large codebases and there is definitely a point in which you can't know it all.
That's true, and I agree that humans are also bad at this. It's something that generally more senior engineers get better at - keeping things simple instead of overly complicated, and therefore more maintainable.
I guess what this really means to me is if you don't take ownership of the code you merge, I might as well not have you as a teammate and instead could just employ AI agents to replace you. I want people who think critically and review what their coding assistant provides instead of just using it to pump volume and close issues faster/easier/without working as hard.
I think you left a comment elsewhere about AI revealing lazy people. This is probably the crux of the issue.
True
Maybe there's a way to maintain ownership without reading the source code.
My coding skills are quite sufficient to implement anything I want. Recently I had llms generate the code I needed. But then I wanted some changes and decided to make those myself. Felt a little silly but it was fun and my changes worked. I guess people who care that they can do something themselves will still code. And PC course if it's a bigger project you're going to have to be more personally involved for the project to stay under control long term.
One shot script used only once on non critical data. I don't read LLM code. If it works, great. But tools that I use frequently, I read.
If you microwave frozen pizza, you are not a pizzaiolo.
🤣