{"id":3033,"date":"2026-05-26T13:57:23","date_gmt":"2026-05-26T13:57:23","guid":{"rendered":"https:\/\/www.castelis.com\/insights-ressources\/ai-augmented-development\/"},"modified":"2026-05-28T21:43:18","modified_gmt":"2026-05-28T21:43:18","slug":"ai-augmented-development","status":"publish","type":"article","link":"https:\/\/www.castelis.com\/en\/insights-ressources\/ai-augmented-development\/","title":{"rendered":"AI Doesn&#8217;t Replace Developers: It Amplifies Their Good and Bad Practices"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The arrival of AI in software development is not just about writing code faster. It transforms how developers explore a codebase, resolve tickets, document their changes, and validate what they ship.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Its real value is therefore not measured solely in time saved. It is also measured by a team&#8217;s ability to frame, review, and validate what it produces with AI.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is where the topic becomes interesting: AI genuinely augments the developer, but it also amplifies the consequences of their working methods. When tickets are clear, objectives well-formulated, and validations well-organized, it becomes a powerful lever. When requests are vague or validation responsibilities are implicit, it can accelerate technical debt production with remarkable efficiency.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Expanded Scope: The Immediate Benefit<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The most immediate gain from AI in day-to-day work is not just speed. It is the expansion of scope.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A concrete example: a ticket flags a display error in a backend-generated document. The cause is a date calculation logic that does not account for a specific business case: a status depends on two distinct events in time, but these events are incorrectly combined in the query. The project runs on a stack that the assigned developer, primarily frontend-oriented, does not fully master, even though they know the project and its business domain.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Without AI, this ticket would probably have waited for the right expert. With AI, the developer can move forward: describe the business rule, share the relevant files, request an analysis of the existing logic, then precisely identify where the calculation breaks down. The diagnosis is reached quickly, the fix is targeted, the ticket is resolved.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A second case, more radical: a frontend ticket on a project the developer has never touched, whose business domain and structure they do not know. A notification points to content deleted from the back office: the user lands on an error with no explanatory message. The fix involves three elements to coordinate: display a readable error message on the frontend, delete the orphaned notification from the database, and correctly decrement the counter displayed in the interface.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">These three points could easily have been handled separately, with the risk of missing one. AI made it possible to quickly identify the relevant code in an unknown codebase, propose a coherent implementation across both layers (frontend and API), and not overlook the counter detail. What could have taken a day of exploration was resolved in a few hours.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">These two cases illustrate a broader logic. Understanding a project&#8217;s structure, its implicit business rules, and its conventions usually requires several back-and-forths with the team. AI significantly reduces this onboarding time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The scope expansion goes beyond application development. With the right access and the right guardrails, it can also help query a database to verify suspicious behavior, inspect server logs to isolate an error, or automate repetitive tasks that would otherwise have taken disproportionate time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This matters. It means a team can handle a more varied backlog, assign tickets more flexibly, and reduce certain dependencies on individual expertise. On paper, this is both a productivity gain and an organizational gain.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But this gain comes with a trade-off: the wider the scope of action, the more structured the validation must be.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">AI&#8217;s Footprint in Git History<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The Git history of a developer who integrates AI into their daily work changes in form.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Commits tend to become broader. Where a developer would naturally break their work into several small successive changes, AI frequently addresses multiple aspects of a problem in a single response. A commit may then simultaneously touch several files, mixing a business logic correction, a data layer update, and a display adjustment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On documentation, the observation is almost the reverse. An experienced developer tends to be concise in commit messages. AI generally takes the time to detail the changes, their justification, and sometimes the associated points of attention.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Git therefore reveals a new asymmetry: <strong>denser commits, but better documented<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This shift is not neutral. A better-documented commit is not necessarily a more manageable commit. When a single change touches business logic, persistence, and the interface, the review must adapt: logical decomposition, description of assumptions, identification of sensitive points, and validation by someone capable of evaluating the functional scope.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In other words, AI often improves the declarative readability of a change, but it does not guarantee its technical or business readability.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This raises a methodological question: should one accept larger commits because they are better documented? Not necessarily. The better practice is to avoid letting the commit structure passively reflect the AI&#8217;s output. The decomposition must remain human-driven: a functional intent, a coherent scope, a reviewable unit.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For a team, this can translate into a few simple rules:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>separate changes by functional intent rather than by generation sequence;<\/li>\n<li>make the assumptions made by the AI explicit in the commit message;<\/li>\n<li>flag areas that require business validation;<\/li>\n<li>avoid multi-layer commits when they make the review too costly;<\/li>\n<li>strengthen human review whenever a change touches multiple parts of the system.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Git does not lie. It records the pace, size, and declared intent of each change. With AI, it also becomes a governance indicator: it shows whether the team maintains control over what it ships, or whether it lets the tool structure the work in its place.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Blind Spot: Knowing What You&#8217;re Validating<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The scope expansion AI enables is real. But it introduces a new responsibility: knowing precisely what you are in a position to validate.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The first case worked well because the developer had sufficient business understanding to evaluate the proposed fix. They could read the diff, understand the date filtering logic, and confirm that the fix covered the problem in depth, not just the visible case.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It is this judgment capability, combined with AI, that produces a solid result.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The risk is not only that AI produces bad code. The risk is that it produces a technically plausible fix that seems correct in a quick review, but does not cover all business cases. In this scenario, no one sees the error immediately: the code compiles, tests may pass, the interface seems to work. Yet an important assumption may have remained implicit.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is not a question of individual competence. It is a structural problem. The wider the scope of action, the more explicit the validation responsibilities must be.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The question is therefore not: &#8220;did AI do the work correctly?&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The right question is: &#8220;who is in a position to validate what it produced, and at which stage?&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Integrating AI into a team workflow means answering this question clearly. Several levels of validation must be distinguished:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>technical validation<\/strong>: is the code consistent with the architecture, maintainable, tested, secure?<\/li>\n<li><strong>functional validation<\/strong>: does the behavior genuinely respond to the expressed need?<\/li>\n<li><strong>business validation<\/strong>: are implicit rules, edge cases, and operational impacts properly covered?<\/li>\n<li><strong>scope validation<\/strong>: does the change not modify more than what was planned?<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">This is where AI ceases to be solely an individual tool. It becomes an organizational topic.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Input Quality Drives Everything<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">AI does not fix a poorly written ticket. It executes it, and amplifies its imprecision.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The ticket mentioned earlier is a good example: it was precise. It provided concrete cases, identified the exact condition causing the problem, and explicitly distinguished the display error from the underlying calculation, which was correct. This precision enabled a rapid diagnosis and a targeted fix.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A ticket worded &#8220;the column is sometimes wrong, please fix&#8221; would have produced a far more speculative exploration, and probably a partial fix.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Feeding a ticket as-is to AI amounts to hoping it will interpret ambiguities correctly. It may. But it will not always. And when the developer does not sufficiently master the scope to evaluate the result, a misinterpretation can go unnoticed until production.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The practices that make a real difference are simple, but require active discipline.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Reformulate Before Submitting<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If the ticket is vague, reformulate it until it is precise, not only for the AI, but for yourself. Understanding what you are asking before delegating it remains a quality condition.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">State the Global Objective Before Starting Development<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For complex tasks, it is preferable to first describe the final objective, request a plan, evaluate its relevance, then iterate. Launching AI directly into code on an ambiguous ticket is like starting a sprint without framing the user story.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Decompose Complex Tickets<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;We will first do X, then Y, with the final objective being Z.&#8221; This structure gives AI the context needed to arbitrate correctly, instead of treating each subtask as an isolated problem.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Make Non-Negotiable Constraints Explicit<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Some rules must be stated upfront: naming conventions, forbidden scope, compatibility to preserve, sensitive business rules, expected tests, dependencies not to introduce.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A good AI request is therefore not just an instruction. It is a mini development brief.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">AI as a Final Look Before Shipping<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">One simple practice consistently produces good results: once development is complete, submit the code to AI and ask whether it sees any inconsistencies, omissions, or potential risks.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Not to validate the business substance. Not to replace a human code review. But to detect what can slip through: an unhandled edge case, a poorly initialized variable, an overly restrictive condition, a naming inconsistency, a missing test, an implicit assumption to verify.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Regularly, this review surfaces a useful point. Sometimes minor, sometimes more significant. In all cases, it forces the developer to step back from what they are about to ship.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This practice works well provided it is framed. The goal is not to ask AI: &#8220;is this good?&#8221; The question is too vague. It must be directed:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>what edge cases are not covered?<\/li>\n<li>what assumptions seem implicit?<\/li>\n<li>could this change have a side effect?<\/li>\n<li>does the code structure remain coherent?<\/li>\n<li>what tests should be added or completed?<\/li>\n<li>what parts require human or business validation?<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">AI then becomes a complementary reviewer. It does not decide whether the deliverable is acceptable. It helps better prepare that decision.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Fragmentation Risk on Long Features<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Another blind spot appears on features spanning multiple tickets: fragmentation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AI does not naturally have reliable memory between sessions. Two tickets related to the same feature, handled a few days apart, can produce two independent implementations, slightly divergent in their conventions, data structures, or naming.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Individually, each piece may be correct. Collectively, the whole becomes incoherent.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is not theoretical. It is precisely what happens when continuity is not enforced: endpoints that do not quite communicate, states managed in duplicate, small variations between tickets that seemed harmless and become problematic once the pieces are connected.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The fix is simple, but must be systematic: for each new ticket in the same feature, the context of what has already been produced must be explicitly re-provided, established conventions must be recalled, and consistency must be imposed as a constraint.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AI will not maintain this coherence on its own. It must be driven.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For long features, the best practice is to maintain a short shared context document:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>overall feature objective;<\/li>\n<li>technical decisions already made;<\/li>\n<li>naming conventions;<\/li>\n<li>endpoints or components involved;<\/li>\n<li>business constraints;<\/li>\n<li>non-negotiable points;<\/li>\n<li>arbitrations already made.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">This document can then be re-injected at each new AI session. It avoids starting from scratch, reduces divergence, and makes collaboration more reliable.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">When Technical Complexity Takes Over<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">AI is not equally effective on all tickets.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On well-defined subjects (a display bug, a business rule to fix, an error handler to add) it quickly produces usable results. On tickets that combine several intertwined technical issues, the dynamic changes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">An offline mapping ticket is a good example: displaying points of interest via Leaflet and StadiaMaps, tile caching for offline operation, calculating the number of tiles to download to cover the relevant points, filtering points that are too remote to avoid overloading the cache.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Each issue taken in isolation is tractable. Combined, they form a system where each fix can destabilize another.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In other words, the problem is no longer just producing a piece of code. It is maintaining the coherence of a system composed of several interdependent constraints: performance, storage, user experience, offline operation, network consumption, and business relevance of the displayed data.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On this type of ticket, even with detailed and precise prompts, iterations multiply. AI proposes a solution that resolves one aspect and degrades another. Reformulation, re-contextualization, testing, and starting over are required.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The tool remains useful. It structures thinking, suggests leads, generates base code, helps explore alternatives. But it cannot replace the developer&#8217;s ability to hold the entire problem in mind and arbitrate between constraints.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is a real and useful limit to know: the more cross-cutting and interdependent a ticket is, the more decisive human steering becomes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What This REX Changes for a Team<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The lessons from this hands-on account go beyond the individual developer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The first effect is immediate: AI reduces certain day-to-day dependencies between developers. A question about a part of the code one doesn&#8217;t know, a bug in a stack one barely masters, a skill one doesn&#8217;t yet have: situations where it was necessary to wait for a colleague to be available. Today, one can often unblock independently, move forward, then involve the other person only when truly necessary.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is not a replacement for collaboration. It is a reduction of the friction that sometimes made collaboration costly.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But for this gain to last, the team must adapt its practices.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>For a product team or startup<\/strong>: AI allows each developer&#8217;s scope to be broadened, but also creates a risk of silent debt if review practices do not follow. The merge criterion can no longer be limited to &#8220;it passes CI.&#8221; It must also integrate input quality, assumption readability, and business scope validation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>For a CTO or IT director<\/strong>: traceability of AI usage becomes a governance issue. Who produced what, in what context, with what validation? Git keeps a partial trace, provided that commit, review, and documentation conventions genuinely allow changes to be understood.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>For an agency or consulting firm<\/strong>: industrializing AI practices across multiple client projects requires shared rules on input quality, ticket decomposition, validation criteria, and review responsibilities. What works well for a single developer in a controlled context does not automatically generalize.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A simple grid can help translate these observations into operational practices:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Situation<\/th><th>Best Practice<\/th><\/tr><\/thead><tbody><tr><td>Vague ticket<\/td><td>Reformulate before submitting to AI<\/td><\/tr><tr><td>Unknown codebase<\/td><td>First request an analysis and a plan<\/td><\/tr><tr><td>Long feature<\/td><td>Re-inject the global context at each session<\/td><\/tr><tr><td>Multi-layer commit<\/td><td>Document assumptions and validation points<\/td><\/tr><tr><td>End of ticket<\/td><td>Use AI as a complementary reviewer, then validate humanly<\/td><\/tr><tr><td>Sensitive business scope<\/td><td>Explicitly identify who can validate the result<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The challenge is therefore not simply to authorize or prohibit AI usage. The challenge is to define the practices that allow benefiting from it without losing control over the quality of what is shipped.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">AI does not automatically make a developer more competent. It amplifies their existing practices.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When tickets are clear, objectives well-formulated, changes reviewed, and validation responsibilities explicit, it enables saving time, exploring a codebase faster, and genuinely broadening the scope of teams.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Conversely, when used on vague requests, without proper framing or review, it accelerates technical debt production with remarkable efficiency.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The topic is therefore not only whether a team uses AI. The real topic is whether it knows how to organize quality around this new way of producing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is precisely where Castelis intervenes: helping technical teams integrate AI into their development practices without losing control over what they ship.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>AI widens developers&#8217; scope of action, but the real risk is validating deliverables you can&#8217;t properly evaluate. A hands-on account of practices that make AI genuinely useful in a team.<\/p>\n","protected":false},"author":2,"featured_media":3019,"template":"","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[63,77],"tags":[85,92,88,93,89],"class_list":["post-3033","article","type-article","status-publish","has-post-thumbnail","hentry","category-dans-les-coulisses","category-ia","tag-agents-ia","tag-developpement-augmente","tag-gouvernance","tag-productivite","tag-rex"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.castelis.com\/en\/wp-json\/wp\/v2\/article\/3033","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.castelis.com\/en\/wp-json\/wp\/v2\/article"}],"about":[{"href":"https:\/\/www.castelis.com\/en\/wp-json\/wp\/v2\/types\/article"}],"author":[{"embeddable":true,"href":"https:\/\/www.castelis.com\/en\/wp-json\/wp\/v2\/users\/2"}],"version-history":[{"count":1,"href":"https:\/\/www.castelis.com\/en\/wp-json\/wp\/v2\/article\/3033\/revisions"}],"predecessor-version":[{"id":3043,"href":"https:\/\/www.castelis.com\/en\/wp-json\/wp\/v2\/article\/3033\/revisions\/3043"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.castelis.com\/en\/wp-json\/wp\/v2\/media\/3019"}],"wp:attachment":[{"href":"https:\/\/www.castelis.com\/en\/wp-json\/wp\/v2\/media?parent=3033"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.castelis.com\/en\/wp-json\/wp\/v2\/categories?post=3033"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.castelis.com\/en\/wp-json\/wp\/v2\/tags?post=3033"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}