<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Susmit Tyagi</title>
    <description>The latest articles on DEV Community by Susmit Tyagi (@susmit_tyagi_4d8732f635b2).</description>
    <link>https://dev.to/susmit_tyagi_4d8732f635b2</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2106195%2Fc1acd63a-3dc9-418e-bac3-bcf9953f8c74.jpg</url>
      <title>DEV Community: Susmit Tyagi</title>
      <link>https://dev.to/susmit_tyagi_4d8732f635b2</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/susmit_tyagi_4d8732f635b2"/>
    <language>en</language>
    <item>
      <title>When the LLM Gets It Wrong, Is the Model Really the Problem?</title>
      <dc:creator>Susmit Tyagi</dc:creator>
      <pubDate>Thu, 29 Oct 2026 09:47:13 +0000</pubDate>
      <link>https://dev.to/susmit_tyagi_4d8732f635b2/when-the-llm-gets-it-wrong-is-the-model-really-the-problem-56fp</link>
      <guid>https://dev.to/susmit_tyagi_4d8732f635b2/when-the-llm-gets-it-wrong-is-the-model-really-the-problem-56fp</guid>
      <description>&lt;p&gt;This article expands on the &lt;strong&gt;“Clarify the need and build a shared mental model”&lt;/strong&gt; section of &lt;a href="https://medium.com/@susmittyagi/before-the-first-line-of-code-how-ai-helps-turn-requirements-into-a-shared-design-b4ec9c6ae808?source=friends_link&amp;amp;sk=1131d1e26e828f7d08da8e1a41441b02" rel="noopener noreferrer"&gt;Before the First Line of Code: How AI Helps Turn Requirements into a Shared Design&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Have you ever wondered why an LLM does not return the result you expected?&lt;/p&gt;

&lt;p&gt;Our first reaction is often to blame the model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It did not understand the requirement.&lt;/li&gt;
&lt;li&gt;It used the wrong design pattern.&lt;/li&gt;
&lt;li&gt;It missed an authorization check.&lt;/li&gt;
&lt;li&gt;It returned the wrong data.&lt;/li&gt;
&lt;li&gt;It made unnecessary assumptions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sometimes the model is the problem. But often, the real issue is that important context was never provided.&lt;/p&gt;

&lt;p&gt;When information is missing, the LLM must either stop and ask questions or make assumptions. Because LLMs are designed to provide useful answers, they often choose the second option.&lt;/p&gt;

&lt;p&gt;The result may look technically convincing while being inconsistent with the organization’s architecture, security policies, API standards, or business rules.&lt;/p&gt;

&lt;p&gt;The same thing would happen with a developer.&lt;/p&gt;

&lt;p&gt;Imagine asking a developer who is new to the team:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Build an API that allows a store manager to retrieve customer orders.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The developer would need more information before writing code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What are the organization’s API standards?&lt;/li&gt;
&lt;li&gt;Is there a similar API to follow?&lt;/li&gt;
&lt;li&gt;How is the caller identified?&lt;/li&gt;
&lt;li&gt;How do we determine which stores the manager can access?&lt;/li&gt;
&lt;li&gt;Which customer information may be returned?&lt;/li&gt;
&lt;li&gt;How should large results be handled?&lt;/li&gt;
&lt;li&gt;What performance and availability expectations apply?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We should not expect an LLM to know information that would also need to be explained to a developer.&lt;/p&gt;

&lt;p&gt;The goal is therefore to give the LLM the same domain, engineering, security, and operational context that a developer would need.&lt;/p&gt;

&lt;h3&gt;
  
  
  Build a small context pack
&lt;/h3&gt;

&lt;p&gt;A context pack is a focused collection of sources needed to understand a change. It should link to authoritative information rather than copy large amounts of documentation into the prompt.&lt;/p&gt;

&lt;h3&gt;
  
  
  What the context pack might tell us
&lt;/h3&gt;

&lt;p&gt;The context pack may establish that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The API must follow the organization’s existing standards.&lt;/li&gt;
&lt;li&gt;The caller’s identity and organization come from a trusted source.&lt;/li&gt;
&lt;li&gt;The caller must be authorized for the requested store.&lt;/li&gt;
&lt;li&gt;Only permitted order and customer information may be returned.&lt;/li&gt;
&lt;li&gt;Large results must be broken into manageable groups.&lt;/li&gt;
&lt;li&gt;Customer and payment information must follow the organization’s privacy rules.&lt;/li&gt;
&lt;li&gt;The service must follow existing monitoring and error-handling practices.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The pack may also reveal missing information:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What response-time target applies?&lt;/li&gt;
&lt;li&gt;What is the expected volume for a high-traffic store?&lt;/li&gt;
&lt;li&gt;What should happen when a required supporting service is unavailable?&lt;/li&gt;
&lt;li&gt;Is audit recording required?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Missing information should remain visible. The LLM should not silently invent an answer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ask the LLM to explain its understanding
&lt;/h3&gt;

&lt;p&gt;Before asking for code, ask the LLM to interpret the requirement using the context pack.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Using the supplied context pack, explain your understanding of the store-order retrieval requirement. Reference the source behind each important conclusion. Separate evidence, inferences, assumptions, and unknowns. Identify missing information that could change the scope, security model, API design, or implementation. Do not generate code until this interpretation has been reviewed.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This gives the team an opportunity to correct misunderstandings before they become implementation decisions.&lt;/p&gt;

&lt;h3&gt;
  
  
  What a good response should look like
&lt;/h3&gt;

&lt;p&gt;A useful response might say:&lt;/p&gt;

&lt;h3&gt;
  
  
  Understanding
&lt;/h3&gt;

&lt;p&gt;An authenticated store manager should be able to retrieve permitted customer orders for a store they are authorized to manage.&lt;/p&gt;

&lt;p&gt;The API should follow the organization’s existing standards for structure, pagination, errors, security, and monitoring.&lt;/p&gt;

&lt;p&gt;Only the information required for store operations should be returned.&lt;/p&gt;

&lt;h3&gt;
  
  
  Evidence
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The API must follow the organization’s governance standards.&lt;/li&gt;
&lt;li&gt;The caller’s identity must come from the approved identity system.&lt;/li&gt;
&lt;li&gt;Store access must be verified using the established authorization process.&lt;/li&gt;
&lt;li&gt;Similar store-facing APIs provide an approved implementation pattern.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each conclusion should reference the source that supports it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Inferences
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The new API should probably reuse the design and authorization approach used by similar store-facing APIs.&lt;/li&gt;
&lt;li&gt;The order search should be limited by both the caller’s organization and authorized store access.&lt;/li&gt;
&lt;li&gt;Large order volumes will probably require pagination.&lt;/li&gt;
&lt;li&gt;Existing logging, monitoring, and testing patterns should be reused.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These conclusions appear reasonable but still require review.&lt;/p&gt;

&lt;p&gt;The LLM should recommend resolving the important questions before implementation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why this improves the result
&lt;/h3&gt;

&lt;p&gt;This approach helps the LLM:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Follow organizational standards&lt;/li&gt;
&lt;li&gt;Reuse approved design patterns&lt;/li&gt;
&lt;li&gt;Respect security and privacy boundaries&lt;/li&gt;
&lt;li&gt;Avoid making hidden business decisions&lt;/li&gt;
&lt;li&gt;Identify missing requirements&lt;/li&gt;
&lt;li&gt;Explain how it reached its conclusions&lt;/li&gt;
&lt;li&gt;Produce an implementation that can be reviewed against evidence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also makes review easier. The team can correct a short interpretation before reviewing hundreds of lines of generated code.&lt;/p&gt;

&lt;p&gt;The principle is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Before concluding that the LLM failed, check whether it had the context required to succeed.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;An LLM should receive the same domain, engineering, security, and operational context that we would provide to any developer asked to implement the change.&lt;/p&gt;

</description>
      <category>softwaredevelopment</category>
      <category>technology</category>
      <category>ai</category>
      <category>agents</category>
    </item>
    <item>
      <title>From AI-Assisted Coding to Spec-Driven Development</title>
      <dc:creator>Susmit Tyagi</dc:creator>
      <pubDate>Sun, 25 Oct 2026 13:03:56 +0000</pubDate>
      <link>https://dev.to/susmit_tyagi_4d8732f635b2/from-ai-assisted-coding-to-spec-driven-development-3c61</link>
      <guid>https://dev.to/susmit_tyagi_4d8732f635b2/from-ai-assisted-coding-to-spec-driven-development-3c61</guid>
      <description>&lt;p&gt;&lt;em&gt;Ten mindset changes for development teams&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article is part of my series on development using AI. Earlier articles explore&lt;/em&gt; &lt;a href="https://medium.com/@susmittyagi/making-estimates-more-useful-6b4afbd8c030" rel="noopener noreferrer"&gt;&lt;em&gt;making estimates more useful&lt;/em&gt;&lt;/a&gt; &lt;em&gt;and&lt;/em&gt; &lt;a href="https://medium.com/@susmittyagi/before-the-first-line-of-code-how-ai-helps-turn-requirements-into-a-shared-design-b4ec9c6ae808" rel="noopener noreferrer"&gt;&lt;em&gt;moving from requirements to a shared design&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;AI-assisted development can create an illusion of speed. Code appears quickly, but incorrect assumptions, missing requirements, and operational concerns may surface later during review, testing, and deployment.&lt;/p&gt;

&lt;p&gt;Spec-driven development brings these decisions forward. The team establishes the intended behaviour, scope, constraints, and acceptance criteria before asking AI to implement the change.&lt;/p&gt;

&lt;p&gt;This involves a trade-off. Spending more time upfront may delay the first visible implementation, but it can reduce rework and support longer-term stability and quality.&lt;/p&gt;

&lt;p&gt;That requires a mindset change across developers, product teams, reviewers, and engineering leaders. Clarification, design, and verification need to be recognized as part of delivery. The speed at which code is generated is only one part of the outcome.&lt;/p&gt;

&lt;h3&gt;
  
  
  The specification as a shared agreement
&lt;/h3&gt;

&lt;p&gt;A specification gives the team and AI a common reference for implementation and review. It captures what the change should achieve, the boundaries it must respect, and the evidence needed to confirm that it works.&lt;/p&gt;

&lt;p&gt;It does not have to describe the entire system or settle every future decision. Define enough detail for the next increment, make unresolved questions visible, and update the specification as the team learns.&lt;/p&gt;

&lt;h3&gt;
  
  
  10 mindset changes for development teams
&lt;/h3&gt;

&lt;h3&gt;
  
  
  1. Start with intent, not code
&lt;/h3&gt;

&lt;p&gt;Clarify the problem, intended outcome, and scope before discussing implementation. Check that the proposed change addresses the actual need and fits the existing system.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Make ambiguity visible
&lt;/h3&gt;

&lt;p&gt;Separate confirmed requirements, assumptions, and open questions. Ask AI to identify gaps rather than silently make decisions. Resolve questions that could materially affect the design or scope.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Treat the specification as a living agreement
&lt;/h3&gt;

&lt;p&gt;Update the specification when investigation or implementation changes the team’s understanding. Record important decisions and their rationale so the specification, code, and tests remain aligned.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Specify the next safe increment
&lt;/h3&gt;

&lt;p&gt;Define a manageable change with clear boundaries, relevant dependencies, and acceptance criteria. Avoid overengineering or designing features that are not yet needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Define correctness beyond functionality
&lt;/h3&gt;

&lt;p&gt;Consider security, privacy, performance, reliability, and observability alongside functional behaviour. Include the constraints relevant to the change, including what should happen when something fails.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Set measurable expectations
&lt;/h3&gt;

&lt;p&gt;Replace vague requirements such as “fast” or “scalable” with agreed targets and operating conditions. Define how those targets will be verified. AI can suggest questions, but the team must confirm the expectations.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Define evidence before implementation
&lt;/h3&gt;

&lt;p&gt;Map important requirements to acceptance criteria and verification methods. These may include automated tests, performance measurements, configuration checks, or specialist reviews.&lt;/p&gt;

&lt;p&gt;Check that the evidence will demonstrate the intended behaviour, rather than simply confirm how the code was written.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Review intent before reviewing code
&lt;/h3&gt;

&lt;p&gt;Review the specification for missing requirements, conflicting constraints, unsupported assumptions, and unnecessary scope. Correcting these early can prevent the same misunderstanding from spreading across code and tests.&lt;/p&gt;

&lt;h3&gt;
  
  
  9. Delegate execution, not accountability
&lt;/h3&gt;

&lt;p&gt;AI can assist with planning, coding, testing, and review. The team remains responsible for validating the evidence, weighing trade-offs, and approving the result.&lt;/p&gt;

&lt;p&gt;A passing test run or a confident AI explanation is an input to that judgment.&lt;/p&gt;

&lt;h3&gt;
  
  
  10. Treat context as shared infrastructure
&lt;/h3&gt;

&lt;p&gt;Maintain domain rules, architecture decisions, engineering standards, and operational constraints as reusable project context. Give important sources an owner and keep them current.&lt;/p&gt;

&lt;p&gt;Each specification can reference this context and add the details specific to the change.&lt;/p&gt;

&lt;h3&gt;
  
  
  Make room for the upfront work
&lt;/h3&gt;

&lt;p&gt;This approach needs support across the team. Product teams help clarify outcomes. Engineers identify dependencies and constraints. Reviewers examine the proposed behaviour before implementation. Leaders allow time for these decisions.&lt;/p&gt;

&lt;p&gt;The first implementation may take longer to appear. The aim is to carry fewer unresolved assumptions into development and spend less time correcting them later.&lt;/p&gt;

&lt;p&gt;AI can accelerate execution. A shared specification helps the team direct that execution and assess whether the result is ready.&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>specdrivendevelopmen</category>
      <category>ai</category>
      <category>agents</category>
    </item>
    <item>
      <title>Making Architecture Decisions Clear and Reusable</title>
      <dc:creator>Susmit Tyagi</dc:creator>
      <pubDate>Wed, 07 Oct 2026 11:28:05 +0000</pubDate>
      <link>https://dev.to/susmit_tyagi_4d8732f635b2/making-architecture-decisions-clear-and-reusable-2105</link>
      <guid>https://dev.to/susmit_tyagi_4d8732f635b2/making-architecture-decisions-clear-and-reusable-2105</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a series on Development using AI. Other articles include&lt;/em&gt; &lt;a href="https://medium.com/@susmittyagi/making-estimates-more-useful-6b4afbd8c030" rel="noopener noreferrer"&gt;&lt;em&gt;making estimates more useful&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, and the&lt;/em&gt; &lt;a href="https://medium.com/@susmittyagi/before-the-first-line-of-code-how-ai-helps-turn-requirements-into-a-shared-design-b4ec9c6ae808" rel="noopener noreferrer"&gt;&lt;em&gt;moving from requirements to design&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Architecture decisions shape how a system is built and maintained. Teams may discuss options, reach agreement, and move on — but later, people may not remember why one option was chosen, what alternatives were considered, or which trade-offs were accepted.&lt;/p&gt;

&lt;p&gt;An Architecture Decision Record (ADR) preserves that reasoning. The ADR AI skill helps teams turn a decision discussion into a clear, reviewable record. It can organize the context, suggest questions and comparison criteria, structure alternatives, and draft the ADR. The team checks the content, makes the decision, and approves it.&lt;/p&gt;

&lt;h3&gt;
  
  
  How AI helps create an ADR
&lt;/h3&gt;

&lt;p&gt;The AI skill guides the team through the decision and helps capture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The problem or decision being addressed&lt;/li&gt;
&lt;li&gt;The context and constraints that shape the choice&lt;/li&gt;
&lt;li&gt;Alternatives and a consistent basis for comparing them&lt;/li&gt;
&lt;li&gt;The recommendation or approved decision&lt;/li&gt;
&lt;li&gt;Benefits, drawbacks, and expected consequences&lt;/li&gt;
&lt;li&gt;Affected components, owners, implementation notes, and security considerations&lt;/li&gt;
&lt;li&gt;Reviews or approvals that may still be needed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As the team provides information, the AI can identify gaps — such as an option that hasn’t been considered or a consequence that needs further investigation. It can help make the comparison more consistent, but it cannot know whether the options are complete or the trade-offs are acceptable without the team’s system and business context.&lt;/p&gt;

&lt;p&gt;The skill also frames the ADR according to its status. A &lt;strong&gt;Proposed&lt;/strong&gt; ADR presents a recommendation for discussion. An &lt;strong&gt;Approved&lt;/strong&gt; ADR records a decision the team has made. It can flag decisions that may need Architecture Review Board (ARB) attention. These prompts and flags help guide review; they do not grant approval.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why keep the decision in a record?
&lt;/h3&gt;

&lt;p&gt;An ADR gives future team members a way to understand not only what was chosen, but why. It can reduce repeated debates, help reviewers assess whether a proposal fits the system’s needs, and make consequences easier to revisit when requirements or technology change.&lt;/p&gt;

&lt;p&gt;AI makes it easier to structure and preserve the discussion. The record is only as reliable as the information the team provides and reviews, so people remain responsible for validating the reasoning and approving the decision.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>design</category>
      <category>softwaredevelopment</category>
      <category>technology</category>
    </item>
    <item>
      <title>From Requirement to Design with AI</title>
      <dc:creator>Susmit Tyagi</dc:creator>
      <pubDate>Wed, 07 Oct 2026 11:19:53 +0000</pubDate>
      <link>https://dev.to/susmit_tyagi_4d8732f635b2/from-requirement-to-design-with-ai-4fjn</link>
      <guid>https://dev.to/susmit_tyagi_4d8732f635b2/from-requirement-to-design-with-ai-4fjn</guid>
      <description>&lt;p&gt;A requirement explains what someone needs. It doesn’t always explain how the system should meet that need, which parts may be affected, or what the team should consider before implementation.&lt;/p&gt;

&lt;p&gt;That gap can lead to different assumptions, missed design choices, or late questions about security and reliability. An AI assistant can help explore those questions early and carry useful context forward.&lt;/p&gt;

&lt;p&gt;AI can organize information, trace relevant code, suggest questions, and compare options. The team checks the facts, adds system knowledge, and decides what to build.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Clarify the need and build a shared mental model
&lt;/h3&gt;

&lt;p&gt;Start with the problem, intended outcome, scope, constraints, and open questions. Ask the assistant to explain its interpretation so the team can correct misunderstandings before discussing a solution.&lt;/p&gt;

&lt;p&gt;The assistant needs context to do this well. Code, architecture documents, configuration, and tests can help explain the existing application. However, a static repository may not reveal the actual cloud deployment, load balancer settings, scaling behavior, security restrictions, or business expectations.&lt;/p&gt;

&lt;p&gt;Even checked-in infrastructure configuration may differ from the deployed environment. An existing setting also does not establish a requirement: a configured timeout does not tell us what response time users need.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connect the relevant sources
&lt;/h3&gt;

&lt;p&gt;Build a small context pack covering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;System context:&lt;/strong&gt; components, dependencies, data flows, and architectural principles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Environment context:&lt;/strong&gt; deployment, load balancing, scaling, and differences between environments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Requirements and constraints:&lt;/strong&gt; availability, performance, recovery, data handling, and security.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change context:&lt;/strong&gt; the desired outcome, scope, exclusions, and unresolved questions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The context pack can link to existing sources rather than duplicate them. Important information should have an owner and an indication of when it was last verified.&lt;/p&gt;

&lt;p&gt;When the assistant retrieves these sources, their contents become part of the input it uses to interpret the requirement. Access to a repository does not mean every relevant file has been read.&lt;/p&gt;

&lt;h3&gt;
  
  
  Make uncertainty visible
&lt;/h3&gt;

&lt;p&gt;Ask the assistant to separate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Evidence:&lt;/strong&gt; what the available sources establish.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inferences:&lt;/strong&gt; what those findings may imply.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unknowns:&lt;/strong&gt; what still needs verification.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A useful instruction is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Explain the current behavior and requested outcome using the available sources. Reference the evidence behind your conclusions. Separate facts, assumptions, and unknowns. Identify missing information that could change the scope. Flag related improvements separately.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The team reviews this interpretation and resolves important gaps. This creates a shared mental model that can be updated as the work progresses.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Identify the components that need to change
&lt;/h3&gt;

&lt;p&gt;With the need clarified, trace it through the system. Consider applications, services, data stores, infrastructure, and external dependencies.&lt;/p&gt;

&lt;p&gt;For each proposed component change, ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why is this change needed?&lt;/li&gt;
&lt;li&gt;What evidence supports it?&lt;/li&gt;
&lt;li&gt;Which other components depend on it?&lt;/li&gt;
&lt;li&gt;Can the existing architecture support the requirement?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI can help locate relevant code and configuration and suggest dependencies to investigate. The team checks whether those connections are correct.&lt;/p&gt;

&lt;p&gt;Avoid introducing new components without a clear reason. Proposed changes should fit the established architecture and engineering principles, or explain why an exception is justified.&lt;/p&gt;

&lt;p&gt;The result should be a proposed set of changes with a reason for each one.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Map behavior and compare options
&lt;/h3&gt;

&lt;p&gt;Describe how requests and data should move through the affected components.&lt;/p&gt;

&lt;p&gt;Work through success, failure, and recovery paths. Consider what happens when a dependency is unavailable, a request is retried, access is denied, or an instance stops during processing.&lt;/p&gt;

&lt;p&gt;AI can draft flows and compare approaches against the requirements. The team evaluates the benefits, costs, operational effort, and risks.&lt;/p&gt;

&lt;p&gt;Diagrams can make these discussions easier, but each flow should remain consistent with the component changes and known constraints. Any behavior that depends on an unanswered question should be marked as provisional.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Review and refine the design
&lt;/h3&gt;

&lt;p&gt;Review the proposal from the perspectives relevant to the change. These may include application engineering, platform operations, security, testing, and product.&lt;/p&gt;

&lt;p&gt;Ask whether the design meets the intended outcome, handles important failure cases, stays within scope, and can be deployed and supported.&lt;/p&gt;

&lt;p&gt;AI can help prepare review questions and identify inconsistencies between the requirement, component changes, and proposed flows. Reviewers supply the system knowledge and judgment needed to resolve them.&lt;/p&gt;

&lt;p&gt;Record decisions, their rationale, and any remaining questions. If a review exposes a missing requirement or an incorrect assumption, revisit the earlier steps.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Prepare for implementation
&lt;/h3&gt;

&lt;p&gt;Turn the reviewed design into information engineers can act on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agreed component changes and responsibilities.&lt;/li&gt;
&lt;li&gt;Acceptance criteria and verification checks.&lt;/li&gt;
&lt;li&gt;Dependencies and unresolved blockers.&lt;/li&gt;
&lt;li&gt;Deployment, monitoring, and rollback considerations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI can help draft this material and check that tasks connect back to the requirement. The team confirms that it accurately reflects the agreed design.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example: sharing session data
&lt;/h3&gt;

&lt;p&gt;Suppose the requirement is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Users should remain logged in when requests move between application servers.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The assistant finds in-memory session storage in the repository. It records this as evidence and asks whether authentication depends on that storage. It also asks whether production runs multiple instances, whether session affinity is enabled, and whether sessions must survive instance termination.&lt;/p&gt;

&lt;p&gt;The team confirms that login depends on session data and that instances can be removed during scaling. Security guidance identifies restrictions on the data that may be stored.&lt;/p&gt;

&lt;p&gt;With that context, the team evaluates shared session storage. The assistant helps identify changes to session configuration, data serialization, deployment configuration, and tests.&lt;/p&gt;

&lt;p&gt;The proposed flow covers both normal requests and storage failures. The team decides what users should experience during an outage and reviews security, availability, and operational implications before approving the approach.&lt;/p&gt;

&lt;p&gt;The requirement started the discussion. Repository evidence, environment information, and team decisions made the design specific.&lt;/p&gt;

&lt;h3&gt;
  
  
  Let estimates and context evolve
&lt;/h3&gt;

&lt;p&gt;An initial estimate may contain uncertainty about the existing system or the work required. Investigation and review can change that understanding, so estimates should be revisited when scope or assumptions change.&lt;/p&gt;

&lt;p&gt;The process may follow this path:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Requirement → Initial estimate → Shared context → Component changes and flows → Design review → Implementation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Teams can bring reviews forward or revisit earlier steps. The context pack should evolve with the decisions, so later work builds on verified information.&lt;/p&gt;

&lt;p&gt;AI helps keep that information connected. People remain responsible for validating it, making decisions, and approving the design.&lt;/p&gt;

</description>
      <category>softwaredesignpatter</category>
      <category>softwaredevelopment</category>
      <category>architecture</category>
      <category>ai</category>
    </item>
    <item>
      <title>Why Software Estimates Go Wrong — and How to Make Them More Honest</title>
      <dc:creator>Susmit Tyagi</dc:creator>
      <pubDate>Tue, 06 Oct 2026 10:41:40 +0000</pubDate>
      <link>https://dev.to/susmit_tyagi_4d8732f635b2/why-software-estimates-go-wrong-and-how-to-make-them-more-honest-3lje</link>
      <guid>https://dev.to/susmit_tyagi_4d8732f635b2/why-software-estimates-go-wrong-and-how-to-make-them-more-honest-3lje</guid>
      <description>&lt;p&gt;A software estimate is often requested before the team knows enough to give a confident answer.&lt;/p&gt;

&lt;p&gt;The requirement may be incomplete. The affected parts of the system may be unclear. Another team may need to provide support. Yet someone still needs an estimate for planning.&lt;/p&gt;

&lt;p&gt;Estimation has traditionally depended heavily on experienced developers. They carry context about the system, remember similar work, and know where surprises tend to appear. But that knowledge can be hard to share. Two people may give different estimates because they remember different projects or make different assumptions.&lt;/p&gt;

&lt;p&gt;A single number can hide this uncertainty. A range, along with its assumptions and risks, gives the team a more honest starting point.&lt;/p&gt;

&lt;h3&gt;
  
  
  Estimate the uncertainty, not just the tasks
&lt;/h3&gt;

&lt;p&gt;Consider a hypothetical example: a team plans to add a reporting feature to an existing application.&lt;/p&gt;

&lt;p&gt;The visible work might include building a report and displaying it to users. But the estimate could change depending on questions such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the required data available and reliable?&lt;/li&gt;
&lt;li&gt;Which users should be allowed to see the report?&lt;/li&gt;
&lt;li&gt;How much data will the report need to process?&lt;/li&gt;
&lt;li&gt;Will it need to update in real time?&lt;/li&gt;
&lt;li&gt;What testing, security review, or changes to existing systems are needed?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Until the team investigates these questions, a precise estimate may be misleading. A useful estimate shows a range and explains what could move the work toward either end.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use a method that fits the evidence
&lt;/h3&gt;

&lt;p&gt;Different estimation techniques suit different situations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Analogy&lt;/strong&gt; compares the work with relevant past projects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;T-shirt sizing&lt;/strong&gt; gives an early sense of scale when detailed planning is premature.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Three-point estimation&lt;/strong&gt; considers optimistic, realistic, and pessimistic outcomes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expert judgment&lt;/strong&gt; brings in specialist knowledge when the work is unusual or data is limited.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Parametric estimation&lt;/strong&gt; applies a reliable measure or rate when one is available.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The technique should fit the evidence. A close comparison may make analogy useful. A major unknown may call for a wider range and further investigation.&lt;/p&gt;

&lt;p&gt;No method removes uncertainty. The aim is to make the basis for an estimate clear enough that others can question and improve it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where AI can help
&lt;/h3&gt;

&lt;p&gt;An AI estimation assistant can help structure the discussion. It can gather information about the requirement, scope, team, constraints, dependencies, and unknowns. If historical estimates and lessons are provided, it can use them to inform its recommendation — for example, by considering past accuracy, recurring risks, or which techniques worked well for similar tasks.&lt;/p&gt;

&lt;p&gt;AI can also help break the work into areas the team can review and make assumptions and open questions visible. Its recommendations depend on the quality of the current information and available history. The team needs to check whether the suggested approach fits the work and the system.&lt;/p&gt;

&lt;p&gt;Experienced developers remain essential. They validate technical assumptions, add context that may not be recorded, and challenge estimates that do not match what they know.&lt;/p&gt;

&lt;h3&gt;
  
  
  Treat the estimate as a forecast
&lt;/h3&gt;

&lt;p&gt;A useful estimate should make clear:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What work is included and excluded&lt;/li&gt;
&lt;li&gt;Which assumptions it depends on&lt;/li&gt;
&lt;li&gt;What risks or dependencies could change the effort&lt;/li&gt;
&lt;li&gt;How confident the team is, and why&lt;/li&gt;
&lt;li&gt;What information could narrow the range&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As the team learns more, it should revisit the estimate. In the reporting example, investigating the data source might reveal that it is ready to use — or that it needs cleanup first. Either result could change the range.&lt;/p&gt;

&lt;p&gt;After delivery, comparing estimated and actual effort can reveal useful patterns. Perhaps data preparation is often overlooked, or a familiar type of work is more predictable than expected. Recording why estimates differed helps the team improve future assumptions. The goal is shared learning, not scoring individuals.&lt;/p&gt;

&lt;h3&gt;
  
  
  From estimate to design
&lt;/h3&gt;

&lt;p&gt;Estimation can inform design by surfacing likely scope, dependencies, and unknowns:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Requirement → Past learnings → Estimate → Design → Further reviews&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The path is flexible. Design may reveal new work and prompt the team to update its estimate. An estimate is not a commitment that freezes the plan; it reflects what the team knows at that point.&lt;/p&gt;

&lt;p&gt;A good estimate doesn’t promise exactly how long work will take. It helps the team explain what it knows, what it doesn’t, and what it should learn next.&lt;/p&gt;

</description>
      <category>productmanagement</category>
      <category>softwareengineering</category>
      <category>architecture</category>
      <category>technicalleadership</category>
    </item>
  </channel>
</rss>
