<?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>Forem: Nandish Dave</title>
    <description>The latest articles on Forem by Nandish Dave (@nandishdave).</description>
    <link>https://forem.com/nandishdave</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3762844%2Fd159dd55-95f3-445d-9086-47673eeaa7a7.png</url>
      <title>Forem: Nandish Dave</title>
      <link>https://forem.com/nandishdave</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/nandishdave"/>
    <language>en</language>
    <item>
      <title>What Happened When I Stopped Delegating and Started Prompting</title>
      <dc:creator>Nandish Dave</dc:creator>
      <pubDate>Mon, 23 Feb 2026 08:51:00 +0000</pubDate>
      <link>https://forem.com/nandishdave/what-happened-when-i-stopped-delegating-and-started-prompting-18ml</link>
      <guid>https://forem.com/nandishdave/what-happened-when-i-stopped-delegating-and-started-prompting-18ml</guid>
      <description>&lt;p&gt;&lt;em&gt;I had the vision. I had the architecture. I just didn't have the hands and time — until now.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6o2zdx2fvr3vblqcyj7r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6o2zdx2fvr3vblqcyj7r.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Lie We Tell Ourselves
&lt;/h2&gt;

&lt;p&gt;As a lead — did you ever come across a situation where you spent your entire day playing around delegation and consolidation rather than really writing code, building prototypes, and solving the problems you were &lt;em&gt;actually&lt;/em&gt; hired to solve?&lt;/p&gt;

&lt;p&gt;Be honest.&lt;/p&gt;

&lt;p&gt;Sprint planning. Backlog grooming. Stakeholder alignment. One-on-ones. Escalation calls. Architecture reviews. The calendar is a wall of colour-coded blocks with no white space.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;By 6 PM, you've managed &lt;em&gt;everything&lt;/em&gt; — and built &lt;em&gt;nothing&lt;/em&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And then the real work begins.&lt;/p&gt;

&lt;p&gt;Because the bugs don't fix themselves at 6 PM. The code doesn't write itself while you were explaining the same architecture to the third stakeholder today. The feature your team couldn't finish? It's still sitting there. Waiting for the one person who holds the full picture.&lt;/p&gt;

&lt;p&gt;You.&lt;/p&gt;

&lt;p&gt;So you open your laptop at 9 PM. Pour another coffee. And start doing the work that delegation was supposed to handle — but never quite did.&lt;/p&gt;

&lt;p&gt;I did this for fifteen years.&lt;/p&gt;

&lt;p&gt;Night after night. Sprint after sprint. I told myself it was leadership. It was ownership. It was &lt;em&gt;"the price you pay for being senior."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But here's the truth nobody talks about: even when you do delegation &lt;em&gt;right&lt;/em&gt;, it's still broken.&lt;/p&gt;

&lt;p&gt;You write detailed Jira tickets. You add acceptance criteria. You attach architecture diagrams. You explain the context in a refinement session. You answer follow-up questions on Slack. You do a walkthrough call. You pair program the first module together.&lt;/p&gt;

&lt;p&gt;And after all of that — you still don't get 100% of what you envisioned.&lt;/p&gt;

&lt;p&gt;Not because the team is bad. They're talented. But the developer who picks up the ticket might not have the depth in that particular security pattern. Or the timeline is too tight to explore the edge cases you would have explored. Or they interpreted the requirement slightly differently — and by the time you catch it in code review, half the sprint is gone and rework isn't an option.&lt;/p&gt;

&lt;p&gt;The gap between what a lead &lt;em&gt;sees&lt;/em&gt; and what a team &lt;em&gt;delivers&lt;/em&gt; is not a people problem. It's a physics problem. The full picture — functional, non-functional, security, scalability, coding standards, deployment nuances — lives in one brain. And no amount of Jira formatting, story pointing, or documentation can transfer it without loss.&lt;/p&gt;

&lt;p&gt;So I became the safety net. The architect by day. The developer by night. The lead who led meetings until 6 PM and debugged until midnight.&lt;/p&gt;

&lt;p&gt;I wore it like a badge of honour.&lt;/p&gt;

&lt;p&gt;It was a chain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And the root cause? Delegation is busted badly.&lt;/strong&gt; Not because people can't follow instructions — but because information in transition tends to lose some of its part. Either while updating the Jira ticket or while interpreting the task. The full picture in a lead's head can never materialise fully, no matter how detailed you make it.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk3uhywdrrbj6hebj6ced.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk3uhywdrrbj6hebj6ced.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Dream That Wouldn't Die
&lt;/h2&gt;

&lt;p&gt;Here's the thing about being a lead who codes at midnight — it doesn't just steal your sleep. It steals your &lt;em&gt;ambition&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Because somewhere behind the sprint boards and escalation calls and 11 PM debugging sessions, there was a dream. A side venture. A hustle. Something I wanted to build — not for a corporation, not for a client, not for a Jira ticket — but for &lt;em&gt;myself&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;VedicJivan. A digital platform for Vedic astrology and spiritual wellness. I had the complete vision in my head for years. A website. A blog engine. Astrological calculations. Consultation booking. Social media presence. Analytics. A brand that meant something to me beyond quarterly OKRs.&lt;/p&gt;

&lt;p&gt;I knew the architecture. I knew the tech stack. I knew the content strategy. I could see it — fully formed, alive, running — every time I closed my eyes.&lt;/p&gt;

&lt;p&gt;But when would I build it?&lt;/p&gt;

&lt;p&gt;My days belonged to the company. Back-to-back meetings from 9 to 6. My evenings belonged to the code the team couldn't finish. My nights belonged to production incidents and deployment windows. And whatever was left — those thin, fragile hours between midnight and sleep — those belonged to my family. To my kids. To being present at birthday parties where I smiled for photos while mentally debugging a payment flow in the background.&lt;/p&gt;

&lt;p&gt;I'd tell myself: &lt;em&gt;"Next month. When the release is done. When the migration stabilises. When the team ramps up. Then I'll start."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Next month never came.&lt;/p&gt;

&lt;p&gt;The release was always followed by another release. The migration was always followed by another migration. The team always needed one more sprint of hand-holding before they could run independently.&lt;/p&gt;

&lt;p&gt;And VedicJivan sat in my head — perfectly designed, never built. A blueprint with no builder.&lt;/p&gt;

&lt;p&gt;I tried once. Carved out a Saturday afternoon. Set up the project. Got halfway through the homepage. Then Monday happened. Then Tuesday's production incident. Then Wednesday's stakeholder escalation. By the following Saturday, I'd forgotten where I left off. The momentum was gone.&lt;/p&gt;

&lt;p&gt;That's what nobody tells you about side hustles when you're an engineering lead. It's not about skill. It's not about money — though that was tight too, every euro accounted for, no budget for hiring freelancers to build your dream. It's about the one resource no delegation framework, no productivity hack, no time management course can manufacture:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Uninterrupted hours with a clear mind.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I didn't have them. I hadn't had them in years.&lt;/p&gt;

&lt;p&gt;So the dream stayed a dream. Through promotions. Through company changes. Through moving countries. Through kids growing up. Through watching other people launch the things they talked about while I was still &lt;em&gt;talking&lt;/em&gt; about mine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fire never died. But it was running out of oxygen.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And then — on a random evening when I expected nothing — everything changed.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F42t0o45iy6zq71nu3gbu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F42t0o45iy6zq71nu3gbu.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Evening Everything Changed
&lt;/h2&gt;

&lt;p&gt;It was a regular weekday evening. Kids asleep. House quiet. I had maybe two hours before exhaustion would win.&lt;/p&gt;

&lt;p&gt;I'd been hearing about AI tools changing the way developers work. I'd tried autocomplete assistants before — Copilot, code generators. Clever, sure. They could finish my sentences. But I didn't need someone to finish my sentences. I needed someone who could understand the &lt;em&gt;whole picture&lt;/em&gt; alongside me and carry forward the thought process.&lt;/p&gt;

&lt;p&gt;That evening, I opened Claude — an AI assistant I'd been curious about — and instead of asking for a code snippet, I did something I'd never done with a tool before.&lt;/p&gt;

&lt;p&gt;I talked about VedicJivan.&lt;/p&gt;

&lt;p&gt;Not the code. The &lt;em&gt;dream&lt;/em&gt;. The brand. The audience. The content structure. The tech stack I wanted. The astrology calculations that needed specialized APIs. The SEO strategy. The analytics setup with Google Tag Manager and GA4. The Instagram presence. The Facebook cover that needed to match a spiritual aesthetic.&lt;/p&gt;

&lt;p&gt;Everything that had lived in my head for years — I poured it into a conversation.&lt;/p&gt;

&lt;p&gt;And then something happened that years of delegation, documentation, and Jira tickets never achieved.&lt;/p&gt;

&lt;p&gt;The AI didn't just understand the pieces. It understood how they &lt;em&gt;connected&lt;/em&gt;. It helped me architect the platform — not just the code, but the &lt;em&gt;thinking&lt;/em&gt;. Content strategy for the blog. Node.js implementation for astrological calculations using specialised APIs. Brand voice options for Instagram. Analytics configuration to track which articles resonated.&lt;/p&gt;

&lt;p&gt;I challenged it. &lt;em&gt;"What about the mobile experience?"&lt;/em&gt; Addressed. &lt;em&gt;"How do I structure the content for SEO?"&lt;/em&gt; Strategy outlined. &lt;em&gt;"What's the best way to handle consultation booking without a backend team?"&lt;/em&gt; Solution designed.&lt;/p&gt;

&lt;p&gt;I wasn't delegating. I wasn't waiting. I wasn't writing Jira tickets for someone else to interpret.&lt;/p&gt;

&lt;p&gt;I was &lt;em&gt;building&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;For the first time in years — I was the architect AND the builder. With a thought partner who lost nothing in translation. Every requirement I described came back fully understood. Every nuance I mentioned was carried forward. The information didn't leak. The context didn't fade. The full picture in my head was finally materialising — exactly as I saw it.&lt;/p&gt;

&lt;p&gt;In the span of a few weeks — working only in evenings, the same evenings that used to belong to corporate debugging — VedicJivan was alive. Website live. Blog publishing. Social media connected. Analytics tracking every visit. Astrological calculations running. A brand that looked like a small team of five built it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One person built it. One person and one conversation.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I sat back and looked at what I'd created. The platform I'd dreamed about through years of birthday parties and production incidents and midnight deploys. The thing I'd told myself I'd build "next month" for half a decade.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It was real. It was running. It was &lt;em&gt;mine&lt;/em&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And I hadn't lost a single night of sleep to build it.&lt;/p&gt;




&lt;p&gt;Here's what actually changed — and it's not what you think.&lt;/p&gt;

&lt;p&gt;AI didn't make me a better coder. I've been coding for fifteen years. It made me &lt;em&gt;independent&lt;/em&gt;. The complete picture — functional, non-functional, security, maintainability, coding standards — finally had an execution partner that works at the speed of thought. No delegation. No information loss. No waiting.&lt;/p&gt;

&lt;p&gt;I don't depend on a junior developer's availability to build what I can see. I don't sacrifice my evenings to finish what meetings stole from my days. I don't show up exhausted to morning standups because I was debugging at midnight.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And here's the beautiful irony: that independence made me a &lt;em&gt;better&lt;/em&gt; leader.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because I sleep. Because I have energy. Because when a junior developer asks me to explain an architecture decision, I actually &lt;em&gt;want&lt;/em&gt; to teach — instead of thinking about the five other things I still need to code tonight. Because the dream that was suffocating under corporate exhaustion is now breathing — and that changes how you show up for everything.&lt;/p&gt;

&lt;p&gt;The lead who codes at midnight is a tragic hero in our industry. We celebrate them. We promote them. We burn them out.&lt;/p&gt;

&lt;p&gt;I was that hero for fifteen years.&lt;/p&gt;

&lt;p&gt;I don't want to be anymore.&lt;/p&gt;

&lt;p&gt;And thanks to AI — I don't have to be.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;The cursor still blinks. The screen still glows. But the coffee is warm, the hour is reasonable, and for the first time in my career — the night shift is over.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But lately, something else has been keeping me awake — and it's not a production bug.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkllx7487vjl2j4exx0e8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkllx7487vjl2j4exx0e8.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  But What If the Cure Is Also the Poison?
&lt;/h2&gt;

&lt;p&gt;I catch myself reaching for AI before I've finished &lt;em&gt;thinking&lt;/em&gt;. I notice my patience for manual problem-solving shrinking. I wonder if my brain is learning new patterns — or forgetting how to form them on its own.&lt;/p&gt;

&lt;p&gt;When a tool thinks alongside you at the speed of light, what happens to the parts of your mind that were built for slow, difficult, solitary thought? When the struggle disappears, does something else disappear with it?&lt;/p&gt;

&lt;p&gt;The generation entering software engineering today will never know the 3 AM loneliness of a bug that doesn't Google well. They'll never build the mental calluses that come from hours of frustrated, unaided exploration. They'll be faster. They'll be more productive.&lt;/p&gt;

&lt;p&gt;But will they be &lt;em&gt;deeper&lt;/em&gt;?&lt;/p&gt;

&lt;p&gt;I freed myself from the chain of delegation. &lt;strong&gt;But am I building a new chain — one made of prompts and convenience — that I can't yet see?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The night shift is over. But the next conversation is just beginning.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;That story — the one about what AI is quietly doing to the engineering mind — is one I'm still living. And I'll share it when I understand it better.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;→ Follow me to read Part 2: &lt;a href="https://nandishdave.world" rel="noopener noreferrer"&gt;nandishdave.world&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Nandish Dave&lt;/strong&gt; is an Engineering Lead with 15+ years of experience building enterprise-scale digital platforms. Currently at PostNL, previously at bpostgroup. He writes about engineering leadership, AI-augmented development, and the human side of technology.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://linkedin.com/in/nandish-dave-it-professional" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; | &lt;a href="https://nandishdave.world" rel="noopener noreferrer"&gt;Website&lt;/a&gt; | &lt;a href="https://blog.nandishdave.world" rel="noopener noreferrer"&gt;Blog&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>leadership</category>
      <category>productivity</category>
    </item>
    <item>
      <title>The Pareto Principle in IT: How 80/20 Thinking Shapes Everything We Build</title>
      <dc:creator>Nandish Dave</dc:creator>
      <pubDate>Mon, 16 Feb 2026 20:55:40 +0000</pubDate>
      <link>https://forem.com/nandishdave/the-pareto-principle-in-it-how-8020-thinking-shapes-everything-we-build-4g0d</link>
      <guid>https://forem.com/nandishdave/the-pareto-principle-in-it-how-8020-thinking-shapes-everything-we-build-4g0d</guid>
      <description>&lt;p&gt;In 1896, Italian economist Vilfredo Pareto noticed something odd about his garden — 20% of his pea pods produced 80% of the peas. He then found the same pattern in land ownership: 80% of Italy's land was owned by 20% of the population.&lt;/p&gt;

&lt;p&gt;Over a century later, this same ratio keeps showing up — not in gardens or land registries, but in our codebases, sprint boards, deployment pipelines, and enterprise roadmaps.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Pareto Principle&lt;/strong&gt; (the 80/20 rule) isn't just a management cliché. It's a pattern that, once you start seeing it in IT, you can't unsee. And more importantly, it changes how you make decisions at every level.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Principle, Simply Put
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Roughly 80% of outcomes come from 20% of causes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It's not always exactly 80/20. Sometimes it's 90/10, sometimes 70/30. The point isn't the precision — it's the &lt;strong&gt;asymmetry&lt;/strong&gt;. A small number of inputs disproportionately drive the results.&lt;/p&gt;

&lt;p&gt;In IT, this asymmetry is everywhere. Let's walk through it — from your morning standup all the way up to company-wide programs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Level 1: Agile Ceremonies
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Standups
&lt;/h3&gt;

&lt;p&gt;We've all been in standups that run 25 minutes when they should take 5. Here's the 80/20 reality:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;80% of the value&lt;/strong&gt; in a standup comes from surfacing &lt;strong&gt;blockers and dependencies&lt;/strong&gt; — which takes about 20% of the time.&lt;/li&gt;
&lt;li&gt;The other 80% of the time? Status updates that could have been a Slack message.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; Focus standups ruthlessly on blockers, risks, and "I need help with..." moments. Save status for the board.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sprint Retrospectives
&lt;/h3&gt;

&lt;p&gt;Look at your last 10 retro action items. How many actually moved the needle? Typically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;2 out of 10 action items&lt;/strong&gt; drive most of the improvement.&lt;/li&gt;
&lt;li&gt;The rest are nice-to-haves that quietly die in the backlog.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; Limit retro outcomes to 1-2 high-impact actions. Execute those well rather than listing 8 items nobody follows up on.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sprint Planning &amp;amp; Backlog Refinement
&lt;/h3&gt;

&lt;p&gt;In any product backlog:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;20% of the stories&lt;/strong&gt; deliver &lt;strong&gt;80% of the user value&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The remaining 80% are edge cases, polish, and features that sound good in brainstorming but rarely get used.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; Relentlessly prioritize. Ask: &lt;em&gt;"If we could only ship 3 things this sprint, which 3 would matter most to users?"&lt;/em&gt; Start there.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7jvjnnzcgfcv44vxwk9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7jvjnnzcgfcv44vxwk9.jpg" alt="In any sprint, a few stories carry most of the impact. The rest is noise." width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Level 2: Story Development &amp;amp; Deployment
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Writing Code
&lt;/h3&gt;

&lt;p&gt;When you pick up a story, notice the pattern:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;80% of the working solution&lt;/strong&gt; comes together in the &lt;strong&gt;first 20% of your time&lt;/strong&gt; — the core logic, the happy path, the main flow.&lt;/li&gt;
&lt;li&gt;The remaining &lt;strong&gt;80% of the time&lt;/strong&gt; goes into edge cases, error handling, tests, and that one weird browser bug.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This isn't an argument to skip the second part. It's an argument to &lt;strong&gt;get the core right first&lt;/strong&gt;. Spike the happy path. Validate the approach. Then invest in hardening.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code Reviews
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;20% of review comments&lt;/strong&gt; catch &lt;strong&gt;80% of the real bugs&lt;/strong&gt; — logic errors, security gaps, missing validations.&lt;/li&gt;
&lt;li&gt;The other 80% of comments? Naming preferences, formatting, and "have you considered..." suggestions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; Automate the trivial stuff (linting, formatting). Focus human review time on logic, security, and design.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deployments &amp;amp; Incidents
&lt;/h3&gt;

&lt;p&gt;After years in the industry, one pattern is consistent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;80% of production incidents&lt;/strong&gt; come from &lt;strong&gt;20% of the codebase&lt;/strong&gt; — usually the oldest, most coupled, least tested modules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;80% of deployment failures&lt;/strong&gt; trace back to the &lt;strong&gt;same 20% of causes&lt;/strong&gt; — config drift, untested migrations, dependency conflicts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; Identify your "hot zones." Invest in tests, monitoring, and refactoring for that critical 20% rather than spreading effort evenly across everything.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjlz89sjqdd28z39n789l.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjlz89sjqdd28z39n789l.jpg" alt="80% of your production incidents trace back to the same 20% of your codebase — the hot zones nobody wants to touch." width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Level 3: Feature Development
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Scope &amp;amp; Requirements
&lt;/h3&gt;

&lt;p&gt;When building a full feature — say, a new payment system or a user dashboard:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;20% of the feature set&lt;/strong&gt; is what &lt;strong&gt;80% of users&lt;/strong&gt; will actually use daily.&lt;/li&gt;
&lt;li&gt;The rest is edge cases for power users, admin overrides, or "the stakeholder asked for it once in a meeting."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I've seen teams spend months perfecting a reporting module that 3 people use, while the core workflow that 10,000 users hit daily has known friction points.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; Ship the core 20% first. Measure. Then decide if the remaining 80% of scope is worth the investment. Often, it isn't.&lt;/p&gt;

&lt;h3&gt;
  
  
  Testing Strategy
&lt;/h3&gt;

&lt;p&gt;You can't test everything with equal depth. The 80/20 lens helps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;80% of bugs&lt;/strong&gt; cluster in &lt;strong&gt;20% of the modules&lt;/strong&gt; — the complex ones with lots of conditional logic, integrations, or state management.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;80% of test value&lt;/strong&gt; comes from &lt;strong&gt;20% of your test suite&lt;/strong&gt; — the integration tests that cover real user flows, not the unit tests for getters and setters.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; Focus test coverage where complexity lives. Use risk-based testing. Don't chase 100% coverage for the sake of a metric — chase 100% confidence in the flows that matter.&lt;/p&gt;

&lt;h3&gt;
  
  
  Performance Optimization
&lt;/h3&gt;

&lt;p&gt;This is where Pareto is almost a law, not a principle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;80% of latency&lt;/strong&gt; comes from &lt;strong&gt;20% of the code paths&lt;/strong&gt; — usually database queries, network calls, or that one O(n^2) loop nobody noticed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;80% of infrastructure cost&lt;/strong&gt; comes from &lt;strong&gt;20% of the services&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; Profile first, optimize second. Don't guess — measure. The bottleneck is almost never where you think it is.&lt;/p&gt;




&lt;h2&gt;
  
  
  Level 4: Company-Wide Projects &amp;amp; Transformation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Digital Transformation Programs
&lt;/h3&gt;

&lt;p&gt;Enterprise transformations are notorious for scope bloat. The 80/20 reality:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;20% of the transformation initiatives&lt;/strong&gt; drive &lt;strong&gt;80% of the business impact&lt;/strong&gt; — usually the ones closest to customer experience or revenue.&lt;/li&gt;
&lt;li&gt;The other 80% of initiatives are internal tooling upgrades, process documentation, and governance frameworks that are important but not transformational.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; Identify the 20% that moves business metrics. Fund those aggressively. Let the rest follow incrementally.&lt;/p&gt;

&lt;h3&gt;
  
  
  Migration Projects (Cloud, Platform, Monolith-to-Microservice)
&lt;/h3&gt;

&lt;p&gt;Any large migration follows the pattern:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;80% of the workloads&lt;/strong&gt; migrate smoothly using &lt;strong&gt;20% of the effort&lt;/strong&gt; — the stateless apps, the containerized services, the ones that "just work."&lt;/li&gt;
&lt;li&gt;The remaining &lt;strong&gt;20% of workloads&lt;/strong&gt; consume &lt;strong&gt;80% of the effort&lt;/strong&gt; — the legacy monoliths, the apps with hardcoded IPs, the ones nobody fully understands.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; Migrate the easy 80% first. Build momentum, prove the pattern, free up resources. Then tackle the stubborn 20% with dedicated expertise.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stakeholder Management
&lt;/h3&gt;

&lt;p&gt;In any company-wide project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;20% of stakeholders&lt;/strong&gt; generate &lt;strong&gt;80% of the decisions&lt;/strong&gt; (and the roadblocks).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;20% of meetings&lt;/strong&gt; produce &lt;strong&gt;80% of the alignment&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; Know who your critical 20% stakeholders are. Over-invest in those relationships. Keep the rest informed asynchronously.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbgtxgx6k52g0tdhjp7f1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbgtxgx6k52g0tdhjp7f1.jpg" alt="80% of workloads migrate smoothly. The remaining 20% — the legacy monoliths — consume 80% of your effort." width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Meta-Pattern: 80/20 Applies to 80/20 Itself
&lt;/h2&gt;

&lt;p&gt;Here's where it gets interesting. The Pareto Principle is &lt;strong&gt;fractal&lt;/strong&gt; — it applies recursively.&lt;/p&gt;

&lt;p&gt;Within that critical 20% of your backlog, 20% of &lt;em&gt;those&lt;/em&gt; items drive 80% of the value. That means roughly &lt;strong&gt;4% of your total backlog&lt;/strong&gt; drives &lt;strong&gt;64% of all outcomes&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Within the 20% of code causing 80% of bugs, 20% of &lt;em&gt;that&lt;/em&gt; code causes the majority. A tiny fraction of your codebase is responsible for most of your pain.&lt;/p&gt;

&lt;p&gt;This recursive nature means that finding the vital few isn't just useful — it's exponentially powerful.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft9cxjd1fpwg6f9vgrin6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft9cxjd1fpwg6f9vgrin6.jpg" alt="The 80/20 rule applies to itself. 20% of the 20% — just 4% of your backlog — drives 64% of all outcomes." width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Apply This Tomorrow
&lt;/h2&gt;

&lt;p&gt;You don't need a framework or a consultant. Start with these questions:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In your next standup:&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;"What's the one thing blocking progress right now?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In your next sprint planning:&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;"If we could only deliver 2 stories, which 2 would users notice most?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In your next code review:&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;"Does this change touch our hot zones? If yes, let's review deeper."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In your next architecture discussion:&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;"Which 20% of this system handles 80% of the traffic?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In your next project kickoff:&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;"What's the smallest scope that delivers the most value?"&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Trap to Avoid
&lt;/h2&gt;

&lt;p&gt;The Pareto Principle is not permission to do 20% of the work and call it done. It's not about cutting corners.&lt;/p&gt;

&lt;p&gt;It's about &lt;strong&gt;sequencing&lt;/strong&gt;. Do the high-impact 20% &lt;strong&gt;first&lt;/strong&gt;. Validate. Learn. Then decide how much of the remaining 80% is worth pursuing — armed with real data instead of assumptions.&lt;/p&gt;

&lt;p&gt;The teams I've seen succeed aren't the ones who do the most work. They're the ones who do the &lt;strong&gt;right&lt;/strong&gt; work first.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The Pareto Principle isn't a rule — it's a lens. And once you put it on, you start seeing the 80/20 split everywhere in IT:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Level&lt;/th&gt;
&lt;th&gt;The 20% That Matters&lt;/th&gt;
&lt;th&gt;The 80% Impact&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Agile Ceremonies&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Blockers &amp;amp; dependencies&lt;/td&gt;
&lt;td&gt;Team velocity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Story Development&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Core logic &amp;amp; happy path&lt;/td&gt;
&lt;td&gt;Working software&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Feature Scope&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Key user workflows&lt;/td&gt;
&lt;td&gt;User satisfaction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Testing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;High-risk modules&lt;/td&gt;
&lt;td&gt;Bug prevention&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Critical code paths&lt;/td&gt;
&lt;td&gt;System speed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Migrations&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Easy-win workloads&lt;/td&gt;
&lt;td&gt;Migration momentum&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Transformation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Customer-facing initiatives&lt;/td&gt;
&lt;td&gt;Business value&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The best engineers and tech leaders I've worked with all share one trait: they have an instinct for what matters most. That instinct isn't magic — it's the Pareto Principle, internalized.&lt;/p&gt;

&lt;p&gt;Start asking: &lt;em&gt;"What's the 20% here?"&lt;/em&gt; — and watch how it changes the way you build, ship, and lead.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I Wrote This
&lt;/h2&gt;

&lt;p&gt;I've spent years watching talented teams burn through energy on work that barely moves the needle — not because they lack skill, but because they lack focus on &lt;em&gt;what actually matters&lt;/em&gt;. The Pareto Principle gave me a mental model to cut through the noise, and it's made me a better engineer, a better leader, and honestly, a better decision-maker in life.&lt;/p&gt;

&lt;p&gt;I wrote this because I wish someone had framed it this way for me earlier in my career. If even one section made you pause and rethink how you're spending your time — it was worth writing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I'd love to hear from you:&lt;/strong&gt; Where have you seen the 80/20 pattern play out in your own work? Have you caught yourself spending 80% of your effort on something that didn't move the needle? Drop your questions or stories in the comments — let's learn from each other.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on my blog: &lt;a href="https://blog.nandishdave.world/tech/the-pareto-principle-in-it/" rel="noopener noreferrer"&gt;blog.nandishdave.world&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>agile</category>
      <category>productivity</category>
      <category>devops</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Why I Spent 5 Hours Finding a 20-Minute Fix: A Case for Structured Logging</title>
      <dc:creator>Nandish Dave</dc:creator>
      <pubDate>Tue, 10 Feb 2026 07:40:33 +0000</pubDate>
      <link>https://forem.com/nandishdave/why-i-spent-5-hours-finding-a-20-minute-fix-a-case-for-structured-logging-2fdk</link>
      <guid>https://forem.com/nandishdave/why-i-spent-5-hours-finding-a-20-minute-fix-a-case-for-structured-logging-2fdk</guid>
      <description>&lt;p&gt;&lt;em&gt;This article is based on a real production incident I worked on recently. Names and specifics are changed, but the lessons are real.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Incident
&lt;/h2&gt;

&lt;p&gt;A production incident. Customers unable to complete payments in certain edge cases. Priority 1. All hands on deck.&lt;/p&gt;

&lt;p&gt;The fix, once we found the root cause, took about 20 minutes. But getting there? That took hours. Not because the bug was complex — but because our observability was broken.&lt;/p&gt;

&lt;p&gt;This post is about what went wrong and what I'd do differently.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem 1: Cost-Driven Logging Decisions
&lt;/h2&gt;

&lt;p&gt;AWS CloudWatch is powerful, but querying logs at scale gets expensive fast. To manage costs, all application logs were being shipped to Splunk.&lt;/p&gt;

&lt;p&gt;Splunk is a great tool — but it comes with its own query language (SPL), its own learning curve, and its own quirks. During a P1 incident, the last thing you want is engineers Googling "how to filter Splunk logs by timestamp."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The trade-off nobody talks about:&lt;/strong&gt; You save money on log queries but pay with engineer time during incidents. That cost is invisible until it isn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem 2: No Structured Logging
&lt;/h2&gt;

&lt;p&gt;This was the bigger issue. Developers were logging raw stack traces — unstructured, inconsistent, and scattered across services.&lt;/p&gt;

&lt;p&gt;No centralized error-handling middleware. Every service handled errors differently. Some logged full traces, some logged one-liners, some didn't log errors at all.&lt;/p&gt;

&lt;p&gt;What unstructured logs look like during an incident:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ERROR: NullReferenceException at PaymentService.Process()
   at PaymentService.cs:line 142
   at OrderHandler.cs:line 89
INFO: Request received for user 48291
ERROR: Connection timeout to payment gateway
INFO: Request received for user 50123
INFO: Health check OK
ERROR: NullReferenceException at PaymentService.Process()
   at PaymentService.cs:line 142
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Which error belongs to which customer? Which request triggered which failure? Impossible to tell.&lt;/p&gt;

&lt;p&gt;What structured logs should look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"timestamp"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-02-09T14:23:01Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"level"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ERROR"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"correlationId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"req-abc-123"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"service"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"payment-service"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"userId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"48291"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"message"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Payment processing failed"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"error"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"NullReferenceException"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"stackTrace"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"PaymentService.Process() at line 142"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"context"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"orderId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ORD-9981"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"amount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;149.99&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"gateway"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"stripe"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One log entry. Everything you need. Searchable, filterable, traceable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem 3: No Correlation IDs
&lt;/h2&gt;

&lt;p&gt;Without a unique correlation ID attached to each incoming request and passed through every downstream service call, there was no way to trace a single customer's journey end-to-end.&lt;/p&gt;

&lt;p&gt;Thousands of requests per second. Logs interleaved. One customer's payment attempt scattered across 5 services with nothing connecting them.&lt;/p&gt;

&lt;p&gt;A simple middleware that generates a UUID and attaches it to every log entry would have saved hours:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Express middleware example&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;correlationId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;x-correlation-id&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nf"&gt;uuid&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setHeader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;x-correlation-id&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;correlationId&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nf"&gt;next&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then in Splunk or any log tool: &lt;code&gt;correlationId="req-abc-123"&lt;/code&gt; — and you see the entire request lifecycle.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd Do Differently
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Structured JSON logging from day one&lt;/strong&gt; — not raw console.log or stack trace dumps&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Correlation ID middleware&lt;/strong&gt; — generated at the API gateway, passed to every service&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Centralized error handling&lt;/strong&gt; — one middleware that catches, formats, and logs all errors consistently&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evaluate observability costs holistically&lt;/strong&gt; — factor in engineer time during incidents, not just storage costs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Log levels that mean something&lt;/strong&gt; — ERROR for actual failures, WARN for degraded states, INFO for business events&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Takeaway
&lt;/h2&gt;

&lt;p&gt;The cheapest log storage means nothing if your team burns hours reading unreadable logs during a P1.&lt;/p&gt;

&lt;p&gt;Observability isn't overhead. It's the difference between a 20-minute fix and a 5-hour firefight.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Wrote This
&lt;/h2&gt;

&lt;p&gt;I've spent 15+ years building and debugging enterprise systems. This incident reminded me that we often over-invest in features and under-invest in observability. The tools and patterns I described above aren't complex — correlation IDs, structured logging, error middleware — but they're skipped more often than you'd think.&lt;/p&gt;

&lt;p&gt;I wrote this so the next engineer stuck in a P1 at 2 AM has one less problem to deal with.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I'd love to hear from you:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What does your observability stack look like?&lt;/li&gt;
&lt;li&gt;Have you faced a similar situation where finding the bug took longer than fixing it?&lt;/li&gt;
&lt;li&gt;What logging practices does your team follow?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Drop your questions or experiences in the comments — I'll reply to every one.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I'm Nandish Dave — Cloud Architect &amp;amp; Full Stack Engineer with 15+ years building enterprise solutions. I write about cloud architecture, DevOps, and lessons from production. Find me at &lt;a href="https://nandishdave.world" rel="noopener noreferrer"&gt;nandishdave.world&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>aws</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
