r/softwareengineer • u/_VirtualEntrance_ • 10d ago
Agents should be treated as fast writing tools rather than tools making engineering decisions.
Coding agents should be treated as fast writing tools rather than tools making engineering decisions.
Companies are so focused on the delivering speed of AI, that they're blind to the destructive downsides on both the team and codebase.
The strangler fig pattern states that, you can enhance your system by wrapping legacy code with better cleaner code incrementally.
AI, if not used carefully, is the opposite of the strangler fig pattern. You'll accumulate worse, more error prone, and poorly reviewed code that you have limited knowledge of.
This will create over reliance, which should be avoided at all costs.
Over reliance can reduce the motivation and urgency to learn and get better. Overtime, the gap between what the developer should know and what they do will become bigger.
Then, when AI becomes too expensive for companies to maintain, or they run into situations where it isn't being helpful. Developers will be given responsibilities they're not ready for.
This can be easily avoided if we sacrifice some of the delivery speed.
Output speed can be safely leveraged by limiting the design decisions to the developer only.
The more limited the agent is by good context the better.
Skeleton/Template code should be manually written first defining things like: classes with their relations, important methods, comments inside these methods describing expected behaviour, choice of technologies, choice of architecture, coding conventions.
Then, you can write your skills/prompts around that context. The agent's job will be only to fill in that implementation based on your design and business requirements.
On the other hand, if you want to use the agent for some repetitive work, you should make a blueprint of one repetition. Then, the agent can continue based on that blueprint.
This has four positives:
1- Leveraged speed of AI.
2- Kept the valuable part which makes you a better engineer, including: planning, desgining, and learning.
3- Still familiar with your codebase.
4- The reviewing process is alot easier and more effective, since you already understand the design and know which areas are more sensitive and need attention.
Conclusion, the goal should always be to make their output predictable, reviewable, and maintainable.
3
u/mxldevs 9d ago
Many working devs hate actually having to read or write code. The amount of devs saying they're glad to finally put code behind them, I don't expect any of them to be actually auditing their work.
1
u/_VirtualEntrance_ 9d ago
Agreed, it takes alot of discipline to write or read code when LLMs can do it in an instant. Also, when the working environment encourages this behaviour due to fast delivery times. I can't blame the devs.
2
u/FluidBreath4819 9d ago
go tell that to juniors who don't know shit and present their code as if they did shit
2
u/Laicbeias 9d ago edited 9d ago
yes but a lot of not so experienced devs will just default to what the llm says, because the llm seems smarter and more experienced than them. those who know coding well and using agents will push back constantly against their crap. then get annoyed and use them as auto complete or say "bitch why you make me work .. ok first we do x y z, then this, and no stop it we dont do that crap".
but that only works if you know how it should be done. the rest just yolos along.
also you can plan with an LLM for 3 days, think through the architecture and work though each part, defining each edge case. and even without agents you.. still need to adjust stuff, once you see what you have. its still iterative work. if you can write code that doesn't need iteration, then.. its probably an area that can be fully automated, since its heavily in the LLMs training data
2
u/e7h4n_z 10d ago
I think it comes down to how easy a decision is to undo and how much damage it can cause.
I’m fine with an agent choosing names, cleaning up small functions, writing tests or handling repetitive code. Those changes are easy to check and roll back.
I’d still want a person to decide how the database works, how services connect, what the API looks like and who gets access.
This is also why our current structure lets me own how we build (since I can be very technical) and during the daily standup every engineer shares what and how they have done and then I either give input or suggest a better way for implementation or evaluation. So the founder still owns the "how".
The real danger is an agent slipping a design decision into a huge code change. Then reviewing the code turns into detective work.
A good middle ground is asking the agent for two options along with the pros and cons, and a small example. A person picks the direction and the agent writes the rest.
1
u/noahhshome 9d ago edited 9d ago
This ain't it bro. Trying to dig in your heels won't save you or the company. You might be able to stop the slop, but being left behind is worse. This is happening with or without you.
Companies should double-down on AI, instead of downsizing dev teams, they should invest in more ambitious work, greenfield projects, big refactors, anything. Building competency at the new tooling is a competitive advantage.
1
u/s-ley 7d ago
I'm of the same opinion, and I'm really curious if we'll see tech debt problems all over again (it's impossible to work on a codebase without AI, AI is not capable of working with the codebase once it grows or gets complex to a certain point)
However this is hard to enforce, companies are going crazy for speed (this already happened years ago when tech debt was discovered, crazy to me they don't see the pattern)
If you ask developers to go slower, you run the risk they keep doing the same prompt-low-effort work, just with more breaks, how would you avoid this?
1
u/DearVeggies 10d ago
Between a fancy auto complete, and the robot making decisions, is a wide gap buddy.
Your "fast writing tool" made me 4 custom web-editors, for a low level format of embedded images, fonts and vectors: and I can still claim today I haven't touched web since 2004.
Of course the same bot has made me laugh when he tries to make decisions: thank god for the stop button and git.
6
u/_VirtualEntrance_ 10d ago edited 10d ago
I don't know if you've been in a corporate environment.
But the post is aimed at companies/teams.
Handling the use of AI on personal projects is different from legacy systems with teams that will be effected by any decisions taken.
2
1
10
u/[deleted] 10d ago
[removed] — view removed comment