As a staff engineer, it upsets me if my Review to Code ratio goes above 1. Days when I am not able to focus and code, because I was reviewing other people’s work all day, I usually am pretty drained but also unsatisfied. If the only job available to engineers becomes “review 50 PRs a day, everyday” I’ll probably quit software engineering altogether.
Reviewing human code and writing thoughtful, justified, constructive feedback to help the author grow is one thing - too much of this activity gets draining, for sure, but at least I get the satisfaction of teaching/mentoring through it.
Reviewing AI-generated code, though, I'm increasingly unsure there's any real point to writing constructive feedback, and I can feel I'll burn out if I keep pushing myself to do it. AI also allows less experienced engineers to churn out code faster, so I have more and more code to review.
But right now I'm still "responsible" for "code quality" and "mentoring", even if we are going to have to figure out what those things even mean when everyone is a 10x vibecoder...
Hoping the stock market calms down and I can just decide I'm done with my tech career if/when this change becomes too painful for dinosaurs like me :)
> AI also allows less experienced engineers to churn out code faster, so I have more and more code to review
This to me has been the absolute hardest part of dealing with the post LLM fallout in this industry. It's been so frustrating for me personally I took to writing my thoughts down in a small blog humerously titled
I see this too, more and more code looks like made by the same person, even though it come from different people.
I hate these kind of comments, I'm tired to flag them for removal so they pollute code base more and more, like people did not realise how stupid of a comment this is
# print result
print(result)
I'm yet to experience coding agent to do what I asked for, so many times the solution I came up with was shorter, cleaner, and better approach than what my IDE decided to produce... I think it works well as rubber duck where I was able to explore ideas but in my case that's about it.
I sometimes use it to write utility classes/functions in totality when I know the exact behavior, inputs, and outputs.
It's quite good at this. The more standalone the code is, the better it is at this task. It is interesting to review the approaches it takes with some tasks and I find myself sometimes learning new things I would otherwise have not.
I have also noticed a difference in the different models and their approaches.
In one such case, OpenAI dutifully followed my functional outline while Gemini converted it to a class based approach!
In any case, I find that reviewing the output code in these cases is a learning opportunity to see some variety in "thinking".
Basically my job as a staff these days, though not quite that number. I try to pair with those junior to me on some dicey parts of their code at least once a week to get some solid coding time in, and I try to do grunt work that others are not going to get to that can apply leverage to the overall productivity of the organization as a whole.
Implementing complicated sub-systems or features entire from scratch by myself though? Feels like those days are long gone for me. I might get a prototype or sketch out and have someone else implement it, but that's about it.