AI Coding Rant
I don't know if everyone here has collective amnesia, but programming before AI didn't always result in clean, streamlined, idiomatic code. We all have different backgrounds but I've worked at a few different startups at this point and I've seen man-made horrors beyond your comprehension. Single-file monstrosities, egregiously bad workflows, and brittle architecture. AI is very good at churning out code that works, and in the startup environment where things change all the time, that's almost all upside.
We seem to have forgotten the times before AI, when shitty code was still prevalent. Not understanding systems was common. Bloated, brittle messes that eventually needed to be refactored or thrown out were always there. You might read this and say, “I never wrote shitty code!” Or “My team is made up of disciplined rockstars and we nail everything on our first try!” And to that I say, well...

Recently I've been seeing more and more backlash against AI programming with arguments that it ruins your focus, you don't understand the system you're building, you lose your skills etc. My gut reaction is: not necessarily true, and if it is, so what? I'm more productive. I'm shipping more. More features, and I'm clearing bottlenecks faster than I would without it. It is simply faster. You can utilize AI to speed up your work without losing much quality. The equation we have to solve for is whether this is a net benefit. Even if the code going out is worse quality (measuring code quality is its own can of worms but I digress). If I output 5x as much code and as many features as I would myself, doesn’t that also give me lots of time to investigate and fix issues? You could then bring up “but what about skill atrophy?” To that, I’d have to question your premise. Is it skill atrophy, or is the meta shifting? I'm producing more code than ever, but I'm writing less of it by hand and judging a lot more of it. This requires different skills, not a total loss of them. Even if I get slower at writing code myself, I'd call that swapping one set of skills for another.
Let’s stop pretending the models are stupid. They’re not. On small to medium complexity tasks that are well defined, AI can one-shot many of them. Hell, it can even one-shot things I assumed would be too complex. A working solution doesn’t mean you’re done though. It’s still up to the programmer to interrogate the AI and validate the quality of the work. Look for signs of a poor implementation, look for signs of misaligned architecture and any other tells of sub-optimal solutions. You can literally get AI to code review and performance profile for you. Think of yourself as an engineer (we call ourselves that sometimes) stamping a drawing. However, usually the stakes for us are much lower as we can just, edit our code after the fact. There is a happy medium where we can use AI to augment our work, and not lose quality. It is possible; it just requires a bit of effort.
Vibe coding is valid. These days I’m able to make so much progress on my side projects that have single digit visitors and I’m having fun doing it. Use your brain and adjust how hard you want to rely on AI for your situation at hand. How you program at work will be very different from how you program recreationally, depending on your job. Hand coding (sounds weird calling it that) is also perfectly valid. Programming is fun, engaging, and many of us got into this field because we wanted to challenge ourselves with solving difficult problems. We can still do that.
Things will never be the same. I do mourn that so early in my career machines arrived that can do the biggest part of the job. I wish I'd had more time working professionally before LLMs, but alas… we have to adapt.