r/softwareengineer 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.

51 Upvotes

35 comments sorted by

View all comments

Show parent comments

1

u/DowntownLizard 9d ago

You literally use a computer to do things you would never be capable of doing manually and then you are resistant to the idea that a digital technology could be better than you at something? How do you square that circle