I wonder: if the AI is writing all the code, what value am I bringing?
In an attempt to keep my critical thinking and coding skills sharp, I sometimes foolishly try to debug errors or implement a feature myself. But it feels like wasting time when an agent can do it in a fraction of time.
What is gonna be sought after in the coming years: someone that persevered with manual coding and debugging but is slow and uncomfortable around agents, or someone that has little coding and debugging skills left but knows how to orchestrate dozens of agents effectively?
I'm curious to hear what other software engineers on HN's approach is.
AI opens up new forms of debugging. You can trace through a bug on the OS level and understand what it's really happening - we traced some bugs to how Android handles wifi based around location access on different versions. We give it a 20k line log to reproduce the exact flow when certain bugs happen. We make it write hypotheses on why it's happening and how to fix it, and break that down into logs.
There's plenty of engineering work to do with production code, especially on front end where you're dealing with different manufacturers, multiple cultures (some using , or . as decimal separators), RTL languages, broken abstraction layers, hardware permissions, etc, etc.
Someone needs to fully understand the big picture around how all these pieces go together. AI is still poor with writing larger things. Your uniqueness is in how quickly you can pick up the big technical picture.
My goto is "AI is a tool, you are still accountable for the result". I work on a fast-and-loose AI first team, where we have debate on whether AI doc writing and PR descriptions are acceptable. IMO they are not, the communication is human to human.
AI is a game-changer for writing debug tools, understanding code and quickly prototyping. But I'm tired of pretending that the code and docs I'm reviewing are not AI generated.
What wouldn't an average person off the street be able to do?
I think you're mistaking typing characters on a keyboard for coding. Designing a system is coding. Knowing what refactorings to do to ensure things evolve in the right direction is coding.
Being able to recall all the syntax has lost value due to AI, but designing and leading the feature development hasn't and that can't (yet) be trusted to AI.
I'm not too worried about keeping skills sharp - if I'm ever put in a situation where they become relevant again I'm confident I can just relearn them.
Anyway, when it comes time to make a project, I first figure out what I want to build. Then I research the steps I would need to take to build it. For example, if I wanted to make a webapp that has a deliberate SQL injection for a CTF, I would need a database, a login page, and a dashboard to navigate to after logging in. For larger projects, I might use AI to help me figure out the components required.
Then I save those notes and then focus on a single component. Continuing with this example, I'll start with the login page. I'll get AI to generate the code on that. Sometimes it doesn't cooperate and makes the SQL query secure, so I have to manually go in there and fix it myself, rather than ask it to redo it again. I get serious imposter syndrome whenever I use AI to generate code, so I make sure I can understand some of it before I run it, and I try to manually fix bugs before I ask for help.
Once all the components are built, I tie them all together and start testing the program.
People are kidding themselves thinking they fully understand what is going on at a deep level for 3-4 (or more) parallel tasks constantly context switching. It's also an anxiety-inducing way to work and has led to a proliferation of agent management tools enabling max efficiency.
Focusing on systems thinking/observability/knowing when NOT to build something/using agents to fix/learn new things quickly seem to be where I see devs still bringing the most value compared to any other cowboy.
Where it does not helps, software engineering is a field where you have to actively practice it to make sure your mind remembers the trade offs, different paths you have evaluated before, sort of building muscle memory. Using LLMs mean that eventually your debugging skills, ability to understand some one else code would degrade and moving to the next level in terms of software competency may never happen for you.
A concrete example, the ability to remember 10 digit phone numbers was really normal before smart phone, try to push your mind now to see if you are still able to do that?
Lastly, at any given point of time 90% of the engineers were working on managing the existing code base, so career wise with so much code being written the job safety should not be an issue if you have skills to understand and debug some one else code
But would you tell anyone in the early 2000s to keep practising 10 digit phone number memorisation knowing that it will be completely useless skill in the coming future? How do you know what telling OP to be more hands on and spend time on active practice isn't the same thing?
Doesn't happens that often, though I have seen them struggling when maps are unavailable, same for people struggling to call some one in need if their phone battery is out or if they loose their phone.
Frontend stuff for me, which I'm bad at, I let agents do all of and I test the end result.
Other things are in-between, but time wise it's probably mostly me writing code. Lines of code is the LLM for sure.
to answer directly, i live in claude code now. and while it's a different shape of daily work, i'm still engineering, still evaluating those 3 factors and figuring out how to triage and solve user-problems much faster than i could 5 years ago.
If I can get laid by a fine lady, I'd prefer that instead of watching someone else doing that, whether that guy can do it better or worse, is irrelevant.
I guess many people on HN are already on a level above me, so that they are getting tired of coding by hand, but is always thinking in "system" or "bigger picture".
But hey, I'm glad that I still enjoy solving those little puzzles because there are so many of them that I don't know how to solve. If I want to write a parser for some language, I'm sure AI can build it faster and better than me, because there are so many examples in the training set -- but hey, why should I let AI build it? This is fun! I also enjoy tracing the code and debugging a weird problem throughout the whole night -- sure I could throw the whole log to AI and it could probably find the problem faster than me, but as long as the company is OK, I'll just be me.
A side bonus is that it keeps me sharp for the next interviews. Strangely, companies where people just vibecode most likely do not allow AI in interviews. How interesting.
All in all, I think there are people who are more interested in solving problems and building products with computers, and there are people who are more interested in computers themselves. I'm of the latter.
However soon you will find have no real advantage over AI in any task. Therefore caring about the skills which are of fading value today makes almost as little sense as caring about the skills that mattered yesterday.
> What is gonna be sought after in the coming years: someone that persevered with manual coding and debugging but is slow and uncomfortable around agents, or someone that has little coding and debugging skills left but knows how to orchestrate dozens of agents effectively?
Neither. If your concern is your career or income then you should have a real plan based on how the world is realistically going to look in the future.
So its still fairly involved and low level but a lot less manual typing
I also don't use auto-mode when they write code, I review the diffs immediately as they come and approve/deny as I find it stops the agents going too far down the wrong path.
I think the term automated programming captures it best