<?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: Tolu</title>
    <description>The latest articles on DEV Community by Tolu (@psarmmiey).</description>
    <link>https://dev.to/psarmmiey</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%2F269171%2F327ce846-ebf5-433f-b68e-d94913163b01.jpg</url>
      <title>DEV Community: Tolu</title>
      <link>https://dev.to/psarmmiey</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/psarmmiey"/>
    <language>en</language>
    <item>
      <title>The Coverage Mirage</title>
      <dc:creator>Tolu</dc:creator>
      <pubDate>Tue, 24 Mar 2026 10:03:01 +0000</pubDate>
      <link>https://dev.to/psarmmiey/the-coverage-mirage-2jbm</link>
      <guid>https://dev.to/psarmmiey/the-coverage-mirage-2jbm</guid>
      <description>&lt;p&gt;[&lt;br&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%2Fdp2n053ghz1wssw1dv3h.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%2Fdp2n053ghz1wssw1dv3h.png" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;](&lt;a href="https://substackcdn.com/image/fetch/$s_!cQXg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a0f1e7a-4560-40b4-ad4f-d16ae2050ca4_1408x768.png" rel="noopener noreferrer"&gt;https://substackcdn.com/image/fetch/$s_!cQXg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a0f1e7a-4560-40b4-ad4f-d16ae2050ca4_1408x768.png&lt;/a&gt;)&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The Blocked Pull Request&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;It is 3:00 PM on a Thursday, and the sprint demo is in exactly eighteen hours. Sarah’s pull request has been stalled in review for three days over seven lines of code. The reviewer, a well-meaning tech lead, just posted a message in the team Slack channel: “&lt;a class="mentioned-user" href="https://dev.to/sarah"&gt;@sarah&lt;/a&gt; please add a dedicated unit test for the &lt;code&gt;API_URL&lt;/code&gt; configuration wrapper.” The wrapper simply reads a standard environment variable. Meanwhile, the feature this pull request unlocks is the subject of daily executive status checks.&lt;/p&gt;

&lt;p&gt;Sarah is deeply frustrated, the reviewer is entrenched in a philosophical stance on code quality, and the product manager is escalating the delay to the engineering director. The team is currently paralyzed by a battle over theoretical purity while a completed business deliverable gathers merge conflicts. Cycle Time is increasing, PR Lag is spiking, and the working relationship between engineering and product is fracturing.&lt;/p&gt;

&lt;p&gt;This scenario plays out in engineering departments every single week. It is what happens when testing transforms from a pragmatic risk management tool into an unyielding ideological gate.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The Liability of Perfect Coverage&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;A junior engineer thinks of testing as a binary proof of correctness. They believe that if the test suite turns green, the software works perfectly. A senior engineer knows that testing is entirely an exercise in risk economics. Tests are not free. They require constant maintenance, they inflate continuous integration times, and they frequently cement early architectural assumptions into place.&lt;/p&gt;

&lt;p&gt;Absolute test coverage is a liability rather than an asset. A perfectly tested codebase is often a remarkably rigid one. When every single line of code is wrapped in a mock-heavy unit test, routine refactoring becomes an agonizing, multi-day chore. Engineers find themselves spending hours updating brittle tests that assert implementation details rather than verifying actual business behavior.&lt;/p&gt;

&lt;p&gt;Aiming for 100% test coverage is a failure of prioritization. It implies your team is spending the exact same engineering effort on validating a static footer configuration as they are on the core payment processing logic. Perfect coverage is a glaring symptom of misallocated resources, usually driven by engineers who feel safer writing tests for trivial getter methods than tackling complex technical debt.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The Volatility-Impact Matrix&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;How do you balance this reality when your engineering director has instituted a strict 85% coverage gate in SonarQube? Or worse, how do you handle inheriting a legacy system with zero tests while leadership demands that feature delivery continues at its current frantic pace?&lt;/p&gt;

&lt;p&gt;We can look to how Google manages this tension. In &lt;em&gt;Software Engineering at Google&lt;/em&gt; (Winters, Manshreck, and Wright), Chapter 11 explores their internal engineering practices. The authors acknowledge coverage as a useful tool for finding untested code, but warn that demanding an absolute percentage across the board frequently incentivizes developers to write poor, assertion-free tests just to hit the target. Building on their philosophy, I use my own heuristic: test coverage beyond 80 percent usually offers severely diminishing returns. Forcing absolute coverage across every file artificially constrains deployment velocity, and in my experience, rarely prevents enough production bugs to justify the maintenance cost. Instead of chasing a vanity metric, strong engineering cultures emphasize evaluating the impact of a failure against the frequency of change.&lt;/p&gt;

&lt;p&gt;Consider using a Volatility-Impact matrix to evaluate your own team’s testing strategy. If you cannot decide between High and Low Volatility for a specific file, use your commit log churn rate over the last thirty days as a tiebreaker. When evaluating impact, remember that High Impact code will take down the system or corrupt data if it fails, whereas Low Impact means a failure is localized, easily recoverable, and does not cause a systemic outage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;High Volatility, High Impact:&lt;/strong&gt; This is the core domain logic that changes every sprint. Your billing router, your primary authentication flow, or your order processing state machine. This code requires heavy, redundant testing layers including unit, integration, and contract tests.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;High Volatility, Low Impact:&lt;/strong&gt; UI components or presentation logic that changes frequently based on marketing requests, but rarely causes systemic outages. Lean on fast unit tests for core logic and accept some manual QA leakage for the visual rendering. Over-testing here creates massive maintenance overhead for very little safety.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Low Volatility, High Impact:&lt;/strong&gt; Legacy modules or base infrastructure components. These rarely change, but if they break, the system goes down. Write robust integration tests to ensure they stay functional from the outside, but do not waste time backfilling granular unit tests for every private method hidden inside them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Low Volatility, Low Impact:&lt;/strong&gt; Static content generators or internal admin scripts. Minimal to zero testing is acceptable here. A single, high-level smoke test confirming the script executes without throwing a fatal exception is usually sufficient to manage the risk.&lt;/p&gt;

&lt;p&gt;The reality of office politics is that management metrics quickly become operational targets. When a rigid coverage gate blocks a critical hotfix, engineers will rationally write meaningless, assertion-free tests just to satisfy the automated pipeline. Acknowledging this gamification is the first step toward surviving a toxic metrics culture. If your current environment stubbornly mandates these rigid gates, you have to manage upward to incrementally change the definition of quality, while providing your team with cover to focus on actual risk.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Scripts for Negotiating Coverage Mandates&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Navigating test requirements means actively negotiating with two distinct factions. You have the feature-hungry product manager who sees tests as an unnecessary delay, and you have the rigid engineering gatekeeper who demands perfect coverage regardless of context.&lt;/p&gt;

&lt;p&gt;When Product wants to skip tests entirely to meet an arbitrary deadline, avoid talking about engineering purity or clean code. Frame the conversation entirely around predictable delivery and operational risk.&lt;/p&gt;

&lt;p&gt;Consider using this script in your next sprint planning: “If we ship this payment feature without covering the edge cases in the transaction router, we are accepting an unquantified risk of silently dropped payments. I can merge it today to hit the deadline, but we need an explicit agreement with leadership that any production fallout next week completely overrides our upcoming sprint commitments. Are we comfortable taking on that operational risk?”&lt;/p&gt;

&lt;p&gt;Conversely, when a manager or peer reviewer blocks a pull request over a lack of coverage on low-risk code, pivot the conversation away from philosophical quality and toward engineering return on investment.&lt;/p&gt;

&lt;p&gt;Consider using this script as a pull request comment: “I understand our CI gate flags anything under 80% coverage on new modules. However, the uncovered lines here are primarily structural boilerplate and logging fallbacks. Writing tests for these specific paths will take roughly [X hours based on your estimate] and will tightly couple our test suite to implementation details we plan to deprecate next quarter. I propose we merge this as-is and track the deprecation in the backlog, so we can focus our engineering time on the core data transformation logic in the upcoming ticket.”&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Mapping Churn to Coverage&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Stop guessing where your testing gaps are. Vague anxieties about code quality do not help you prioritize your week, and they certainly do not help you defend your architectural decisions in leadership meetings.&lt;/p&gt;

&lt;p&gt;Block off 60 minutes on your calendar today for a specific diagnostic exercise. Open your version control system and use your commit logs to identify the top five most frequently modified files over the last thirty days. Pull up the specific automated test coverage reports for those exact five files.&lt;/p&gt;

&lt;p&gt;Next, find five files in your repository that have not been touched by an engineer in over two years. Check their coverage.&lt;/p&gt;

&lt;p&gt;If your high-churn files have low coverage, your team is operating with unacceptable daily risk. You need to pause feature development on those specific components until protective tests are backfilled. If your static, two-year-old files have 95% coverage, you have documented historical proof of over-investment in stable code. Use this specific data to adjust your team’s pull request review guidelines tomorrow morning, explicitly focusing your engineering effort on the files that are actively changing.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>softwaredevelopment</category>
      <category>softwareengineering</category>
      <category>testing</category>
    </item>
    <item>
      <title>Sustainable Velocity</title>
      <dc:creator>Tolu</dc:creator>
      <pubDate>Tue, 10 Mar 2026 10:01:11 +0000</pubDate>
      <link>https://dev.to/psarmmiey/sustainable-velocity-1p5b</link>
      <guid>https://dev.to/psarmmiey/sustainable-velocity-1p5b</guid>
      <description>&lt;p&gt;[&lt;br&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%2Fm5narnhjlsc3dw3zj6qu.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%2Fm5narnhjlsc3dw3zj6qu.png" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;](&lt;a href="https://substackcdn.com/image/fetch/$s_!9YQG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89eb7071-1760-4620-b12f-3c329b2def88_1408x768.png" rel="noopener noreferrer"&gt;https://substackcdn.com/image/fetch/$s_!9YQG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89eb7071-1760-4620-b12f-3c329b2def88_1408x768.png&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;We all know the feeling of the “Hero Push.”&lt;/p&gt;

&lt;p&gt;It is Thursday evening. The feature is due on Friday. The team stays online until 11 PM, fueled by caffeine and adrenaline, hammering out code to cross the finish line. You merge the final PR, drop a celebratory GIF in Slack, and log off feeling like champions.&lt;/p&gt;

&lt;p&gt;Then Monday morning arrives.&lt;/p&gt;

&lt;p&gt;The CI pipeline is broken. Customer Support is logging bizarre edge-case bugs. The database is throwing deadlock errors. You spend the next two weeks cleaning up the mess you made on Thursday night.&lt;/p&gt;

&lt;p&gt;You didn’t actually move faster. You just borrowed velocity from the future at an exorbitant interest rate.&lt;/p&gt;

&lt;p&gt;If you are reading this, you already know chronic “crunch time” is bad. You know burnout is real. But understanding that the system is broken does not magically give you the power to fix it.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Traffic Jam Paradox
&lt;/h4&gt;

&lt;p&gt;Crunch does not happen because engineers type too slowly. It happens because of a failure in organizational negotiation.&lt;/p&gt;

&lt;p&gt;To negotiate effectively, you only need one concept from queuing theory: &lt;strong&gt;Utilization vs. Throughput&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Think of a highway. At 50% capacity, cars move at the speed limit. At 100% capacity, it becomes a parking lot.&lt;/p&gt;

&lt;p&gt;Engineering teams work the exact same way. If management demands 100% utilization, collaboration dies. Your finished PR sits idle for three days because your reviewer is fully booked. A team running at 100% utilization is not an engine. It is a traffic jam.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Reality of Pushing Back
&lt;/h4&gt;

&lt;p&gt;This is the part where most advice columns tell you to “just decline meetings” or “say no to your boss.”&lt;/p&gt;

&lt;p&gt;That is dangerous advice. If you work at an agency, a startup under massive investor pressure, or a company with a founder who rules by decree, showing up with a spreadsheet that implies the business made a bad decision is a career risk.&lt;/p&gt;

&lt;p&gt;If your environment is truly toxic, yes, you should update your resume. But what do you do for the six months it takes to find a new job?&lt;/p&gt;

&lt;p&gt;You practice &lt;strong&gt;Defensive Documentation&lt;/strong&gt;. You work your 40 hours, you clearly document what features will drop, and you let the bad deadline fail. You act as a heat shield for your junior developers, telling them to log off at 5 PM.&lt;/p&gt;

&lt;p&gt;Let’s be brutally honest: this is a calculated risk. Letting a deadline fail in a toxic culture can absolutely get you performance-managed or fired, regardless of how clean your paper trail is. But burning yourself out for a system that will gladly replace you tomorrow is also a risk. You have to choose which risk you are willing to take.&lt;/p&gt;

&lt;p&gt;However, if you have a baseline level of psychological safety, a Senior Engineer has a responsibility to push back. You just have to do it correctly.&lt;/p&gt;

&lt;h4&gt;
  
  
  Arguing with the Right Metrics
&lt;/h4&gt;

&lt;p&gt;Telling your manager “the team is burning out” is an emotional argument. Emotional arguments rarely win against delivery dates.&lt;/p&gt;

&lt;p&gt;But you also cannot use bad data. Trying to correlate “story points delivered” with “bugs created six months later” is statistically noisy. A smart VP or Finance partner will tear that argument apart.&lt;/p&gt;

&lt;p&gt;Instead, argue using metrics that are impossible to dismiss: &lt;strong&gt;Cycle Time&lt;/strong&gt; and &lt;strong&gt;PR Review Lag&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When utilization hits 100%, code review is the first thing to die. Bring this specific metric to your leadership. Say: &lt;em&gt;“During our last crunch push, our PR review lag went from 4 hours to 3 days. We aren’t actually shipping faster. We are just piling up undeployed inventory and increasing merge conflicts.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You cannot argue with a PR sitting untouched for 72 hours. It perfectly illustrates the traffic jam.&lt;/p&gt;

&lt;h4&gt;
  
  
  When the Manager Already Said “Yes”
&lt;/h4&gt;

&lt;p&gt;The most common failure mode is not a villainous CEO. It is a well-meaning Engineering Manager who agreed to a bad deadline in a leadership meeting without consulting the team.&lt;/p&gt;

&lt;p&gt;Now the date is promised, and the crunch is mandated. What do you do?&lt;/p&gt;

&lt;p&gt;You cannot throw your manager under the bus in front of Product, but you can force reality into the room. You do this by negotiating scope, not time.&lt;/p&gt;

&lt;p&gt;First, you need context. Do not guess what is important. Spend 15 minutes with your Product Manager and ask one question: &lt;em&gt;“If we can only ship one feature on Friday to keep the contract alive, which one is it?”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Once you know what is actually load-bearing, you approach your manager with a concrete compromise.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“I know we committed to Friday. Based on the current blockages, we will miss that date unless we cut something. We can hit Friday if we drop the reporting dashboard and ship just the core pipeline. How do you want to communicate this to Product?”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You are not whining. You are giving your manager a lifeline to go back to stakeholders with a professional compromise.&lt;/p&gt;

&lt;h4&gt;
  
  
  Your Homework
&lt;/h4&gt;

&lt;p&gt;This week, you are going to diagnose your team’s traffic jam.&lt;/p&gt;

&lt;p&gt;Open your team’s sprint board right now. Count the total number of tickets currently marked as “In Progress” or “In Review.” Divide that number by the number of engineers on your team.&lt;/p&gt;

&lt;p&gt;Is that number greater than 1.5?&lt;/p&gt;

&lt;p&gt;While Kanban experts will rightly tell you that WIP limits should be calibrated specifically per team, 1.5 is a solid baseline heuristic. It accounts for one active ticket per person, plus a small buffer for tickets currently blocked in review or QA. Anything higher strongly predicts context-switching and review bottlenecks.&lt;/p&gt;

&lt;p&gt;If your number is higher than 1.5, your highway is jammed. Bring this specific metric to your next 1:1. Say: &lt;em&gt;“Our WIP-per-engineer is currently 2.4. We are starting a lot of things but finishing them slowly. I recommend we implement a strict WIP limit next sprint so we can clear the review backlog and actually get code merged.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Every time you bleed to save a bad deadline, you are not being a hero. You are training your organization that the deadline was reasonable. You are proving that their broken estimation process actually works.&lt;/p&gt;

&lt;p&gt;Stop masking organizational failures with your weekends. If the system is worth fixing, let the bad deadline fail, point to the traffic jam, and force the system to change.&lt;/p&gt;

</description>
      <category>leadership</category>
      <category>management</category>
      <category>productivity</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Code That Survives You Leaving</title>
      <dc:creator>Tolu</dc:creator>
      <pubDate>Tue, 03 Mar 2026 09:59:24 +0000</pubDate>
      <link>https://dev.to/psarmmiey/code-that-survives-you-leaving-4mi0</link>
      <guid>https://dev.to/psarmmiey/code-that-survives-you-leaving-4mi0</guid>
      <description>&lt;p&gt;[&lt;br&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%2Fdpkcb4nxuh9lplf15svz.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%2Fdpkcb4nxuh9lplf15svz.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;](&lt;a href="https://substackcdn.com/image/fetch/$s_!ttBz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e0be7b0-c79f-44f5-b374-01ebbc609a7b_2816x1536.png" rel="noopener noreferrer"&gt;https://substackcdn.com/image/fetch/$s_!ttBz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e0be7b0-c79f-44f5-b374-01ebbc609a7b_2816x1536.png&lt;/a&gt;)&lt;/p&gt;
&lt;h3&gt;
  
  
  “The best code is code that survives you.”
&lt;/h3&gt;

&lt;p&gt;An engineer left our team mid-project. He’d been there five years and was the only one who truly understood our transaction processing service. We knew he was knowledgeable. We didn’t realize how much undocumented knowledge he held until he was gone.&lt;/p&gt;

&lt;p&gt;For a month, our deployment velocity dropped to zero. Every change required reverse-engineering his logic. A simple bug fix that should have taken two hours took two days because we had to understand the entire system first. We spent hundreds of engineering hours rebuilding context that should have been documented all along.&lt;/p&gt;

&lt;p&gt;The service worked perfectly. The documentation was non-existent. Comments explained what the code did, not why it existed. The architectural decisions lived entirely in his head.&lt;/p&gt;

&lt;p&gt;He wasn’t malicious. He was busy. He never made sharing knowledge a habit, and neither did we require it. When he gave his two weeks’ notice, we realized too late that we’d built a single point of failure into our team.&lt;/p&gt;
&lt;h3&gt;
  
  
  The Indispensable Trap
&lt;/h3&gt;

&lt;p&gt;Some engineers believe that being the only person who understands a critical system creates job security. They’re half right.&lt;/p&gt;

&lt;p&gt;You won’t get fired. But you also won’t get promoted. You can’t take a peaceful two-week vacation without your laptop. You can’t transition to exciting new projects because you’re permanently chained to maintaining the old one. You become a prisoner of your own expertise.&lt;/p&gt;

&lt;p&gt;Deep technical knowledge is valuable. It’s often what gets you promoted to Staff or Principal levels. But the difference between a senior engineer and a senior leader is this: senior engineers make themselves valuable. Senior leaders make their teams capable.&lt;/p&gt;

&lt;p&gt;The measure of your impact isn’t how much your team needs you today. It’s how well they function when you’re not there tomorrow.&lt;/p&gt;

&lt;p&gt;You can’t transfer years of undocumented context during a two-week notice period. Knowledge transfer isn’t a final handover event. It’s a continuous architectural habit.&lt;/p&gt;

&lt;p&gt;Here are three practices that make your work survive your departure:&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Document the Ghosts
&lt;/h3&gt;

&lt;p&gt;Junior developers write comments explaining what the code does. Senior developers write comments explaining why the code does it. Staff-level developers document the ghosts: the paths they explicitly decided not to take.&lt;/p&gt;

&lt;p&gt;When the next engineer inherits your codebase, they’ll see a clunky workaround and think, “This is inefficient. I’ll just rewrite it.” Without context, they’ll step on the same landmine you successfully avoided.&lt;/p&gt;

&lt;p&gt;Architecture Decision Records prevent this. Here’s a real example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# ADR 003: Use 45-Second Timeout for Billing Service&lt;/span&gt;

&lt;span class="gu"&gt;## Context&lt;/span&gt;
Initial implementation used 30-second timeout. During load 
testing with realistic African mobile network conditions, 
we observed legitimate transactions completing in 31-35 
seconds due to payment provider API latency.

&lt;span class="gu"&gt;## Decision&lt;/span&gt;
Increased timeout to 45 seconds.

&lt;span class="gu"&gt;## Consequences&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Slower user experience (acceptable tradeoff)
&lt;span class="p"&gt;-&lt;/span&gt; Must monitor p95 latency; if it exceeds 40s consistently, 
  we need to optimize the service, not reduce the timeout
&lt;span class="p"&gt;-&lt;/span&gt; If payment provider improves API performance, we can 
  revisit this decision

&lt;span class="gu"&gt;## Alternatives Considered&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Keep 30s timeout, retry failed transactions: Created 
  duplicate transaction risk
&lt;span class="p"&gt;-&lt;/span&gt; Async processing: Adds complexity, doesn't improve user 
  experience for time-sensitive payments

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This ADR saves the next engineer from making the same mistake twice. It shows what you tried, what failed, and why the current approach exists.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. The 3 AM Runbook
&lt;/h3&gt;

&lt;p&gt;Most documentation gets written at 2 PM by a calm engineer with coffee. That documentation is useless during actual incidents.&lt;/p&gt;

&lt;p&gt;Real runbooks need to work for a panicked engineer at 3 AM who’s never touched this system while the production database is degrading.&lt;/p&gt;

&lt;p&gt;Bad runbook:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Ensure the cluster state is healthy before proceeding.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Good runbook:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Symptom:&lt;/strong&gt; Billing service pods in CrashLoopBackOff&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First step:&lt;/strong&gt; Run &lt;code&gt;kubectl get pods -n billing&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you see CrashLoopBackOff:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Check logs: &lt;code&gt;kubectl logs -n billing billing-service-[pod-id]&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Common cause: Database connection pool exhausted&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Quick fix: Run this script: &lt;code&gt;/scripts/restart-billing-safe.sh&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;DO NOT restart the master database node (causes 2-3 min downtime)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;If problem persists after 10 minutes:&lt;/strong&gt; Escalate to @platform-team in Slack&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Related:&lt;/strong&gt; See ADR 007 for why we use connection pooling&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The difference is specificity. The first version requires expertise. The second version provides a checklist that works even when your brain doesn’t.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Context Over Cleverness
&lt;/h3&gt;

&lt;p&gt;Highly abstracted, clever code that only you can read isn’t a feature. It’s a liability.&lt;/p&gt;

&lt;p&gt;I’ve seen brilliant engineers write elegant, sophisticated solutions that get completely rewritten six months after they leave because nobody else could maintain them. The cleverness that made them proud made the code fragile.&lt;/p&gt;

&lt;p&gt;Boring, readable code survives. Undocumented clever code gets rewritten.&lt;/p&gt;

&lt;p&gt;This doesn’t mean write bad code. It means optimize for the next person who has to understand it, not for demonstrating your mastery of advanced language features.&lt;/p&gt;

&lt;p&gt;If your code requires deep expertise to modify, add comments that build that expertise:&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;// Using binary search here because linear search was too slow&lt;/span&gt;
&lt;span class="c1"&gt;// for datasets &amp;gt;10k records (measured at 3.2s vs 45ms)&lt;/span&gt;
&lt;span class="c1"&gt;// If dataset size drops below 1k, linear might be simpler&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In 2026, documentation increasingly serves as context for AI-assisted development. If your team uses LLMs for codebase onboarding, your ADRs and detailed comments become training data that helps new engineers ramp up faster. But even without AI tools, clear documentation helps humans understand your work.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Two-Week Notice Test
&lt;/h3&gt;

&lt;p&gt;Here’s an exercise to test your own replaceability:&lt;/p&gt;

&lt;p&gt;Look at your team’s current sprint. Pick the one task that would completely stall if you were unavailable tomorrow.&lt;/p&gt;

&lt;p&gt;Don’t fix it by writing code. Fix it by writing documentation.&lt;/p&gt;

&lt;p&gt;Spend one hour creating a runbook:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Context:&lt;/strong&gt; Why does this task exist? What problem does it solve?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt; What needs to be true before starting?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Step-by-step instructions:&lt;/strong&gt; Specific commands, not general guidance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Common failure modes:&lt;/strong&gt; What goes wrong and how to fix it&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Who to ask if stuck:&lt;/strong&gt; Escalation path when documentation isn’t enough&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then test it. Hand the runbook to a teammate and ask: “Could you complete this task using just this document?”&lt;/p&gt;

&lt;p&gt;Their answer tells you if your documentation is good enough.&lt;/p&gt;

&lt;p&gt;If they need to ask you clarifying questions, your documentation has gaps. Fill them. Repeat until they can execute without you.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Real Career Advancement
&lt;/h3&gt;

&lt;p&gt;Some engineers worry that making themselves replaceable makes them less valuable. The opposite is true.&lt;/p&gt;

&lt;p&gt;Teams that depend on knowledge-hoarders can’t scale. Teams that depend on knowledge-sharers can.&lt;/p&gt;

&lt;p&gt;When you document your expertise, you free yourself to work on harder problems. When you make your current role easy for others, you create space to grow into the next one.&lt;/p&gt;

&lt;p&gt;The engineers who get promoted aren’t the ones who hold knowledge. They’re the ones who multiply their impact by sharing it.&lt;/p&gt;

&lt;p&gt;Make yourself replaceable. It’s the fastest path up.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What task on your current sprint would stall without you? And what would it take to document it so thoroughly that it wouldn’t?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>documentation</category>
      <category>programming</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>The Subtle Art of the Technical Veto</title>
      <dc:creator>Tolu</dc:creator>
      <pubDate>Tue, 24 Feb 2026 10:01:02 +0000</pubDate>
      <link>https://dev.to/psarmmiey/the-subtle-art-of-the-technical-veto-1m4f</link>
      <guid>https://dev.to/psarmmiey/the-subtle-art-of-the-technical-veto-1m4f</guid>
      <description>&lt;p&gt;[&lt;br&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%2Foga3de92geqgjm3vvxhc.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%2Foga3de92geqgjm3vvxhc.png" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;](&lt;a href="https://substackcdn.com/image/fetch/$s_!ubRZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06be4a9e-ad96-4738-bc93-5d42da0f7439_2816x1536.png" rel="noopener noreferrer"&gt;https://substackcdn.com/image/fetch/$s_!ubRZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06be4a9e-ad96-4738-bc93-5d42da0f7439_2816x1536.png&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;”Authority is a currency. Every time you say ‘No’ you spend it.”&lt;/p&gt;

&lt;p&gt;We all know that one Senior Engineer. Let’s call him &lt;strong&gt;Rick&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Rick is brilliant. He knows the codebase better than anyone. But everyone hates asking Rick for a code review. Why? Because Rick finds a reason to block &lt;em&gt;everything&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;He blocks PRs because of variable naming preferences. He blocks architectural RFCs because “we tried that in 2019 and it failed.” He blocks library upgrades because “the new version is bloated.”&lt;/p&gt;

&lt;p&gt;Rick thinks he is the &lt;strong&gt;Guardian of Quality&lt;/strong&gt;. The team thinks he is the &lt;strong&gt;Department of No&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Eventually, the team stops inviting Rick to design meetings. They start merging code when Rick is on vacation. They build “Shadow IT” systems just to bypass his approval.&lt;/p&gt;

&lt;p&gt;Rick has lost his &lt;strong&gt;Political Capital&lt;/strong&gt;. When a truly dangerous security flaw actually appears and Rick screams “Stop!” nobody listens. He has already spent all his bullets on variable names.&lt;/p&gt;

&lt;p&gt;As a Staff or Principal Engineer, your job is not to be the &lt;strong&gt;Gatekeeper&lt;/strong&gt;. It is to be the &lt;strong&gt;Cost Revealer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You cannot do that if you veto everything. You need a framework for when to pull the emergency brake and when to let the train keep moving.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Veto Matrix: Risk vs. Reversibility
&lt;/h4&gt;

&lt;p&gt;Before you say “No,” you must ask two questions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;How high is the risk?&lt;/strong&gt; (Is this a mild bug or a data breach?)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;How reversible is the decision?&lt;/strong&gt; (Can we fix this tomorrow or are we stuck with it for 5 years?)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;1. Low Risk / Reversible (The “Nitpick”)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Example:&lt;/em&gt; A junior dev uses a slightly inefficient loop in a non-critical background job.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Your Action:&lt;/em&gt; &lt;strong&gt;Approve.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;The Comment:&lt;/em&gt; “This is O(n^2). It’s fine for now because the dataset is small, but if we scale, we will need to refactor. Merging.”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Why:&lt;/em&gt; If you block here, you are just flexing your ego.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. High Risk / Reversible (The “Guardrail”)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Example:&lt;/em&gt; Deploying a &lt;strong&gt;routine code change&lt;/strong&gt; on a Friday afternoon when SRE is offline.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Your Action:&lt;/em&gt; &lt;strong&gt;The “Yes, If” Veto.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;The Tactic:&lt;/em&gt; &lt;strong&gt;Attach a Price Tag.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;The Comment:&lt;/em&gt; “Yes, we can deploy this today. &lt;em&gt;If&lt;/em&gt; you are willing to join the on-call rotation this weekend because SRE is offline. Are you okay with that risk?”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Why:&lt;/em&gt; You aren’t saying “No.” You are saying “Here is the cost.” Usually, when you expose the price tag, they withdraw the request themselves. &lt;strong&gt;Note:&lt;/strong&gt; If they accept the cost, document their decision and help them mitigate the risk. Your job is to reveal trade-offs, not make business decisions.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Low Risk / Irreversible (The “One-Way Door”)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Example:&lt;/em&gt; Choosing a new niche database for a minor service.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Your Action:&lt;/em&gt; &lt;strong&gt;The “Disagree and Commit.”&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;The Comment:&lt;/em&gt; “I believe this database adds unnecessary operational overhead. However, it fits the use case. I am noting my objection in the doc, but I will support the team’s decision.”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Why:&lt;/em&gt; This builds massive trust. You showed you have an opinion, but you prioritize the team’s momentum over your preference.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;The Caveat:&lt;/em&gt; Do not use this if the “One-Way Door” leads to a cliff. If the decision creates 5 years of painful technical debt, move it to Quadrant 4.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. High Risk / Irreversible (The “Hard Veto”)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Example:&lt;/em&gt; Hardcoding encryption keys, violating GDPR compliance, or deploying a bulk-delete script without safeguards.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Your Action:&lt;/em&gt; &lt;strong&gt;The Hard Veto.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;The Comment:&lt;/em&gt; “I am blocking this. This implementation exposes customer PII and violates our compliance constraints. We cannot ship this under any circumstances.”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Why:&lt;/em&gt; This is why you saved your bullets. When you use the Hard Veto, the room should go silent because they know you don’t use it lightly.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  A Real Example: The “November Blackout”
&lt;/h4&gt;

&lt;p&gt;At a previous e-commerce company, a Product Manager wanted to switch payment gateways one week before Black Friday to save 0.5% on transaction fees.&lt;/p&gt;

&lt;p&gt;The Junior Engineers were arguing about API compatibility. The PM was ignoring them.&lt;/p&gt;

&lt;p&gt;The Staff Engineer didn’t argue about APIs. He used the &lt;strong&gt;Price Tag&lt;/strong&gt; tactic from Quadrant 2.&lt;/p&gt;

&lt;p&gt;He wrote: &lt;em&gt;“We can switch gateways. However, we cannot complete the integration testing before the code freeze. If this gateway fails on Black Friday, we will lose approximately &lt;strong&gt;$4.5M in orders per hour&lt;/strong&gt;. I am willing to approve this if you sign off on that risk.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The PM withdrew the request five minutes later.&lt;/p&gt;

&lt;p&gt;The Engineer didn’t say “No.” He just put the &lt;strong&gt;$4.5M Price Tag&lt;/strong&gt; on the table and let the PM decide if they wanted to pay it.&lt;/p&gt;

&lt;h4&gt;
  
  
  The 2026 Edge: Policy as Code
&lt;/h4&gt;

&lt;p&gt;In the past, the Senior Engineer had to be the “Bad Guy” in the code review. Now, we use tools to be the Bad Guy for us.&lt;/p&gt;

&lt;p&gt;Don’t argue with a junior dev about Terraform formatting or S3 bucket permissions. Write an &lt;strong&gt;Open Policy Agent (OPA)&lt;/strong&gt; rule or a &lt;strong&gt;GitHub Action&lt;/strong&gt; that automatically blocks the build if an S3 bucket is public.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Script:&lt;/strong&gt; &lt;em&gt;“Hey, I’d love to approve this, but the CI pipeline is blocking it because of the Security Policy we agreed on last quarter. We’ll need to fix that permission to get it merged.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now it’s not &lt;strong&gt;You vs. Them&lt;/strong&gt;. It is &lt;strong&gt;Us vs. The Robot&lt;/strong&gt;. You can step to their side of the table and help them “beat the robot.”&lt;/p&gt;

&lt;h4&gt;
  
  
  Your Homework
&lt;/h4&gt;

&lt;p&gt;Remember Rick? If Rick had used this framework, he would have &lt;strong&gt;Approved&lt;/strong&gt; the variable naming PR (Quadrant 1), &lt;strong&gt;Disagreed and Committed&lt;/strong&gt; to the library upgrade (Quadrant 3), and saved his &lt;strong&gt;Hard Veto&lt;/strong&gt; for the security flaw (Quadrant 4).&lt;/p&gt;

&lt;p&gt;The team would have trusted him when it actually mattered.&lt;/p&gt;

&lt;p&gt;Look at your last 5 Code Review comments. Count how many times you blocked or requested changes.&lt;/p&gt;

&lt;p&gt;Ask yourself: &lt;strong&gt;“If I had approved this immediately, would the company have lost money or customers?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If the answer is “No,” then you are leaking political capital. Next time, try the &lt;strong&gt;“Disagree and Commit”&lt;/strong&gt; approach. Write: &lt;em&gt;“I would have done this differently [Link to reason], but this works. Approved.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Watch how much weight your “Hard Vetos” carry when you’ve built trust through selective approval.&lt;/p&gt;

</description>
      <category>career</category>
      <category>leadership</category>
      <category>management</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>The Best Code is Useless If Nobody Merges It</title>
      <dc:creator>Tolu</dc:creator>
      <pubDate>Tue, 17 Feb 2026 10:02:36 +0000</pubDate>
      <link>https://dev.to/psarmmiey/the-best-code-is-useless-if-nobody-merges-it-363m</link>
      <guid>https://dev.to/psarmmiey/the-best-code-is-useless-if-nobody-merges-it-363m</guid>
      <description>&lt;p&gt;[&lt;br&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%2Fnupus81ia1hpngbf5ukg.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%2Fnupus81ia1hpngbf5ukg.png" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;](&lt;a href="https://substackcdn.com/image/fetch/$s_!YsUY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044d2dc5-7c88-4aba-b57b-ce6a4145a2e8_2752x1536.png" rel="noopener noreferrer"&gt;https://substackcdn.com/image/fetch/$s_!YsUY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F044d2dc5-7c88-4aba-b57b-ce6a4145a2e8_2752x1536.png&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;You have the perfect plan.&lt;/p&gt;

&lt;p&gt;You wrote a 6-page Design Doc.&lt;/p&gt;

&lt;p&gt;You architected a migration that will pay off 10 years of technical debt.&lt;/p&gt;

&lt;p&gt;You present it to the team in the All-Hands meeting.&lt;/p&gt;

&lt;p&gt;And then... nothing happens.&lt;/p&gt;

&lt;p&gt;There is uncomfortable silence. A Staff Engineer asks, “What about the legacy auth support?” The Product Lead asks, “Do we really have time for this during Q4?” The Manager says, “Let’s put a pin in this and circle back next quarter.”&lt;/p&gt;

&lt;p&gt;Your brilliant idea dies in the conference room.&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because you treated a political problem like a technical problem.&lt;/p&gt;

&lt;p&gt;You assumed that if the &lt;strong&gt;Logic&lt;/strong&gt; was sound the &lt;strong&gt;Decision&lt;/strong&gt; would follow. But in an organization logic only validates the solution. &lt;strong&gt;Consensus ships it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you want to drive technical change you cannot just be a Great Architect. You have to be a Coalition Builder.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Failure: The “Grand Rewrite” Trap
&lt;/h4&gt;

&lt;p&gt;Early in my career I watched a Principal Engineer try to move a monolithic Java app to Go.&lt;/p&gt;

&lt;p&gt;His technical argument was flawless. He had charts showing memory reduction, concurrency improvements, and faster build times. He spent two weeks writing a 20-page RFC.&lt;/p&gt;

&lt;p&gt;He presented it to the VP of Engineering.&lt;/p&gt;

&lt;p&gt;The VP asked one question: &lt;em&gt;“Does this help us launch the Enterprise Tier by March?”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The Engineer said: &lt;em&gt;“No, but it ensures we can scale in Q3.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The VP killed the project immediately.&lt;/p&gt;

&lt;p&gt;The Engineer was right about the technology. But he was &lt;strong&gt;politically naive&lt;/strong&gt;. He hadn’t built a coalition with the Product leaders to understand &lt;em&gt;their&lt;/em&gt; pressures before he pitched &lt;em&gt;his&lt;/em&gt; solution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Alternative History&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If he had spent one week talking to the Product Lead &lt;em&gt;before&lt;/em&gt; writing the RFC he would have discovered the pressure to launch the Enterprise Tier.&lt;/p&gt;

&lt;p&gt;He could have framed his pitch differently: &lt;em&gt;“I know we need to launch in March. If we carve out just the User Service to Go now it will prevent the Enterprise Tier from crashing on Day 1. We can migrate the rest in Q3.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That pitch would have been approved.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Success: The “1,000 Coffees” of React
&lt;/h4&gt;

&lt;p&gt;Contrast that with how &lt;strong&gt;React&lt;/strong&gt; took over Facebook.&lt;/p&gt;

&lt;p&gt;In 2011 when Jordan Walke introduced the prototype (FaxJS) he didn’t get a standing ovation. He got pushback.&lt;/p&gt;

&lt;p&gt;Senior Engineers hated the idea of putting HTML inside JavaScript (JSX). It wasn’t just “fear of change.” It was a legitimate technical objection regarding the Separation of Concerns.&lt;/p&gt;

&lt;p&gt;If the React team had tried to force a top-down rewrite of the News Feed they would have failed. The “No” votes from the Staff Engineers would have buried them.&lt;/p&gt;

&lt;p&gt;So they didn’t ask for a rewrite. They built a &lt;strong&gt;Coalition&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;They found &lt;em&gt;one&lt;/em&gt; team that was struggling with performance (Instagram). They helped them fix &lt;em&gt;one&lt;/em&gt; specific problem using React. It worked.&lt;/p&gt;

&lt;p&gt;Then they found the Ads team. They solved &lt;em&gt;one&lt;/em&gt; complex form state issue.&lt;/p&gt;

&lt;p&gt;They went desk by desk and solved individual pains for individual influencers.&lt;/p&gt;

&lt;p&gt;By the time React was proposed as the standard for the main app the “Separation of Concerns” debate didn’t matter anymore. The evidence was overwhelming and more importantly the &lt;strong&gt;voters&lt;/strong&gt; were already convinced.&lt;/p&gt;

&lt;h4&gt;
  
  
  Nemawashi: The Art of the Pre-Meeting
&lt;/h4&gt;

&lt;p&gt;What the React team instinctively understood is a concept Japanese business leaders have formalized as &lt;strong&gt;Nemawashi&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It literally means “digging around the roots.” In gardening you prepare the soil before you transplant a tree so it doesn’t go into shock. In business it means you never present a big idea in a meeting unless you have already won the votes.&lt;/p&gt;

&lt;p&gt;The All-Hands meeting is not for &lt;strong&gt;Deciding&lt;/strong&gt;. It is for &lt;strong&gt;Ratifying&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you are hearing serious objections for the first time in the big meeting you have already failed.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Hierarchy of “No”
&lt;/h4&gt;

&lt;p&gt;Building a coalition isn’t just about getting your peers to like you. It is about navigating Power Dynamics. You need to identify who actually holds the Veto and tailor your conversation to them.&lt;/p&gt;

&lt;p&gt;[&lt;br&gt;
 &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Ds2E%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Ff4613b69-c830-4078-a7da-39e7e8a4a58b_2048x1152.jpeg" 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%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Ds2E%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Ff4613b69-c830-4078-a7da-39e7e8a4a58b_2048x1152.jpeg" title="Image of stakeholder analysis matrix power interest - Getty Images" alt="Image of stakeholder analysis matrix power interest - Getty Images" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;](&lt;a href="https://substackcdn.com/image/fetch/$s_!Ds2E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4613b69-c830-4078-a7da-39e7e8a4a58b_2048x1152.jpeg" rel="noopener noreferrer"&gt;https://substackcdn.com/image/fetch/$s_!Ds2E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4613b69-c830-4078-a7da-39e7e8a4a58b_2048x1152.jpeg&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The “Pocket Veto” (The Staff Engineer)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They are the technical authority. They can’t fire you but they can poison the team’s opinion.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Pitch:&lt;/strong&gt; &lt;em&gt;“I’m looking at this migration but I’m worried about how it impacts the legacy cache. You know that system better than anyone. How would you handle it?”&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Follow-Up:&lt;/strong&gt; If they say &lt;em&gt;“It’s too complex,”&lt;/em&gt; you respond: &lt;em&gt;“That is exactly the kind of concern I need to understand. Walk me through your worst-case scenario so I can protect against it.”&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. The “Resource Veto” (The Manager)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They agree with the idea but “can’t afford the time.”&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Pitch:&lt;/strong&gt; &lt;em&gt;“If we don’t fix this tech debt the Q3 roadmap is at risk because build times will hit 45 minutes. This project buys us insurance for the launch.”&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Follow-Up:&lt;/strong&gt; If they say &lt;em&gt;“We still can’t afford the time,”&lt;/em&gt; you respond: &lt;em&gt;“What if we broke it into three phases and only did Phase 1 before the launch?”&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. The “Strategic Veto” (The VP/CTO)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They care about P&amp;amp;L and strategic alignment.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Strategy:&lt;/strong&gt; Never pitch technology. Pitch enablement.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Pitch:&lt;/strong&gt; &lt;em&gt;“This migration isn’t just an infrastructure change. It directly enables the ‘Global Latency’ OKR you announced last month.”&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Trap:&lt;/strong&gt; If your project &lt;em&gt;doesn’t&lt;/em&gt; align with their OKRs, &lt;strong&gt;do not pitch it.&lt;/strong&gt; A “No” from a VP is often permanent because you have just signaled that you don’t understand the company’s priorities. They will remember that the next time your name appears in their inbox.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  The 2026 Edge: AI as a Red Team
&lt;/h4&gt;

&lt;p&gt;We used to have to guess where the landmines were. Now we can simulate them.&lt;/p&gt;

&lt;p&gt;Before I talk to a skeptic I use AI to “Red Team” my proposal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Prompt:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Act as a cynical Principal Engineer who believes in ‘If it ain’t broke, don’t fix it.’ I am proposing we switch from REST to GraphQL. Tear my argument apart. Focus on caching complexity and N+1 query risks.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This isn’t about generating text. It’s about &lt;strong&gt;generating strategy&lt;/strong&gt;. It forces you to prep for the hard questions so you don’t freeze up in the real conversation.&lt;/p&gt;

&lt;h4&gt;
  
  
  When to Walk Away
&lt;/h4&gt;

&lt;p&gt;Sometimes you do the Nemawashi, you build the coalition, and the answer is still “No.”&lt;/p&gt;

&lt;p&gt;Maybe the business is running out of cash. Maybe there is a secret acquisition in the works. Maybe the “Cost of Consensus” (months of meetings) is higher than the value of the migration itself.&lt;/p&gt;

&lt;p&gt;A Senior Engineer knows the difference between “I failed to persuade” and “The timing is wrong.”&lt;/p&gt;

&lt;p&gt;If you have aligned the Logic and the Consensus and it still doesn’t ship don’t burn bridges. Document the trade-offs, commit to the current path, and wait. The constraint will change eventually.&lt;/p&gt;

&lt;h4&gt;
  
  
  Your Homework
&lt;/h4&gt;

&lt;p&gt;Think about the next big proposal you want to make. &lt;strong&gt;Do not schedule the meeting.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Identify the &lt;strong&gt;one person&lt;/strong&gt; who is most likely to block it (The Skeptic).&lt;/p&gt;

&lt;p&gt;Schedule a 15-minute coffee chat.&lt;/p&gt;

&lt;p&gt;Do not pitch your solution. Use this script:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“I’m exploring a few ways to solve [Problem X] and I know you have a lot of context on the risks here. Before I write anything up I wanted to get your take on what I should avoid. What are the landmines I’m not seeing?”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Listen. Take notes.&lt;/p&gt;

&lt;p&gt;If you can solve &lt;em&gt;their&lt;/em&gt; specific fear in your document you have just turned a Veto into a Vote.&lt;/p&gt;




&lt;p&gt;The irony is brutal. The code might take two weeks to write but the coalition might take two months to build. It feels like “overhead.”&lt;/p&gt;

&lt;p&gt;But here is the truth I have learned after almost a decade in the trenches: &lt;strong&gt;The perfect solution that never ships is just a Notion doc.&lt;/strong&gt; The 80% solution that everyone agrees to becomes the foundation for the next decade.&lt;/p&gt;

&lt;p&gt;Write great code. But spend even more time making sure someone actually merges it.&lt;/p&gt;

</description>
      <category>codereview</category>
      <category>git</category>
      <category>productivity</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>The “Best Practice” Trap</title>
      <dc:creator>Tolu</dc:creator>
      <pubDate>Tue, 10 Feb 2026 00:59:13 +0000</pubDate>
      <link>https://dev.to/psarmmiey/the-best-practice-trap-2j2k</link>
      <guid>https://dev.to/psarmmiey/the-best-practice-trap-2j2k</guid>
      <description>&lt;p&gt;[&lt;br&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%2Fxch4midn3okfcneos9cf.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%2Fxch4midn3okfcneos9cf.png" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;](&lt;a href="https://substackcdn.com/image/fetch/$s_!C2Ty!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f211230-3840-4290-965d-ca4adb27fe3c_1024x572.png" rel="noopener noreferrer"&gt;https://substackcdn.com/image/fetch/$s_!C2Ty!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f211230-3840-4290-965d-ca4adb27fe3c_1024x572.png&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;In God we trust. All others must bring data.&lt;/p&gt;

&lt;p&gt;In 2023 the engineering team at &lt;strong&gt;Prime Video&lt;/strong&gt; did something that looked like career suicide.&lt;/p&gt;

&lt;p&gt;They had built a tool to monitor video quality streams using a modern Serverless architecture. It used AWS Lambda and Step Functions. It was decoupled. It was scalable. It followed every single industry best practice.&lt;/p&gt;

&lt;p&gt;There was just one problem. &lt;strong&gt;The bill.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At just 5% of expected load the cost of passing data between these distributed components was astronomical. The “correct” architecture was going to bankrupt the project.&lt;/p&gt;

&lt;p&gt;So they did the unthinkable. They argued against the industry standard and proposed moving back to a &lt;strong&gt;Monolith&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;They didn’t win that argument by saying “Monoliths are better” or by debating architectural purity. They won by showing the math.&lt;/p&gt;

&lt;p&gt;They proved that by packing the components into a single process they could eliminate the expensive data transfer costs.&lt;/p&gt;

&lt;p&gt;The result? &lt;strong&gt;They reduced their infrastructure costs by 90%.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They didn’t follow the Hype. They followed the Evidence.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Problem with “I Think”
&lt;/h4&gt;

&lt;p&gt;We have all been in that meeting where two senior engineers are locked in a stalemate.&lt;/p&gt;

&lt;p&gt;One wants to use Rust because it is memory safe. The other wants to use Go because the team knows it. They argue about “best practices” and “what Netflix does” for an hour.&lt;/p&gt;

&lt;p&gt;The meeting ends with “let’s take this offline” which is just corporate-speak for “let’s argue on Slack for three more days.”&lt;/p&gt;

&lt;p&gt;This happens because we try to lead with &lt;strong&gt;Opinion&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When you are a Senior Engineer you often have to influence decisions without having direct authority. You can’t just say “Do it my way because I said so.”&lt;/p&gt;

&lt;p&gt;If you want to win these debates you have to stop arguing about Preferences and start arguing about Trade-offs.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Toolkit for Persuasion
&lt;/h4&gt;

&lt;p&gt;You cannot mandate decisions but you can guide them. The trick is to bring evidence in a format that people can actually evaluate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Code Wins Arguments&lt;/strong&gt; Theoretical arguments go in circles forever. Code ends the conversation.&lt;/p&gt;

&lt;p&gt;Next time someone says “I think Library X is faster” don’t argue with them. Spend two hours building a rough prototype. Run a benchmark.&lt;/p&gt;

&lt;p&gt;When you say “I built a minimal version of both. Option A processes 1,000 transactions per second and Option B processes 450” the debate ends immediately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Speak the CFO’s Language&lt;/strong&gt; Engineering managers and VPs care about Velocity and Cost. You need to translate your technical preference into their language.&lt;/p&gt;

&lt;p&gt;Don’t say “Serverless is cool.” Say “Serverless costs $X per stream. A Monolith costs $Y per stream. Moving to a Monolith saves us 90% of our operating budget.”&lt;/p&gt;

&lt;p&gt;Management listens to ROI. They tune out technical preferences.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. The “Steel Man” Technique&lt;/strong&gt; The fastest way to lose a debate is to ignore the other side’s valid points. If you want to win you must articulate their position better than they can.&lt;/p&gt;

&lt;p&gt;Before you present your solution say: “You might wonder why I am arguing against Serverless given its flexibility. I agree that it offers superior scaling for bursty workloads. However our workload is constant which makes the cost premiums of Serverless a bad investment for us.”&lt;/p&gt;

&lt;p&gt;When you acknowledge the trade-offs you earn trust. You show that you aren’t trying to “win” a fight. You are just trying to be right.&lt;/p&gt;

&lt;h4&gt;
  
  
  A Real Example: Uber’s Heresy
&lt;/h4&gt;

&lt;p&gt;Prime Video wasn’t an isolated incident.&lt;/p&gt;

&lt;p&gt;In the early 2010s &lt;strong&gt;Uber&lt;/strong&gt; did something that shocked the engineering world. They migrated their core trip data from &lt;strong&gt;Postgres&lt;/strong&gt; to &lt;strong&gt;MySQL&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;At the time Postgres was considered the superior database by almost everyone. It had more features. It had a better community. Moving to MySQL felt like a step backward.&lt;/p&gt;

&lt;p&gt;But the Uber infrastructure team didn’t argue about features. They argued about &lt;strong&gt;Disk I/O&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;They presented evidence showing that the way Postgres handled updates was crushing their hard drives at Uber’s specific scale. Every time they updated a trip record Postgres had to rewrite too much data. MySQL was “dumber” but handled these specific updates much more efficiently.&lt;/p&gt;

&lt;p&gt;They didn’t choose the “Best Database.” They chose the &lt;strong&gt;Best Tool for the Constraint.&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Your Homework
&lt;/h4&gt;

&lt;p&gt;Look at the next technical alignment on your team’s calendar.&lt;/p&gt;

&lt;p&gt;Prepare &lt;strong&gt;one piece of evidence&lt;/strong&gt; before you walk into the room or join the call.&lt;/p&gt;

&lt;p&gt;It could be a spreadsheet comparing cloud costs. It could be a rough prototype benchmark. It could be a list of tickets from the last time you tried this approach and failed.&lt;/p&gt;

&lt;p&gt;Don’t go in with an opinion. Go in with data.&lt;/p&gt;

</description>
      <category>career</category>
      <category>discuss</category>
      <category>productivity</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>The Most Expensive Code is the Code Nobody Wants</title>
      <dc:creator>Tolu</dc:creator>
      <pubDate>Tue, 03 Feb 2026 10:01:16 +0000</pubDate>
      <link>https://dev.to/psarmmiey/the-most-expensive-code-is-the-code-nobody-wants-1fjj</link>
      <guid>https://dev.to/psarmmiey/the-most-expensive-code-is-the-code-nobody-wants-1fjj</guid>
      <description>&lt;p&gt;“Measure twice, cut once.”&lt;/p&gt;

&lt;p&gt;It is an old cliché but the team at &lt;strong&gt;Segment&lt;/strong&gt; (the customer data platform) learned it the hard way.&lt;/p&gt;

&lt;p&gt;In 2018 their engineering team followed the industry hype and broke their core product into &lt;strong&gt;140 microservices&lt;/strong&gt;. It was an architectural marvel. It followed every “best practice” in the book.&lt;/p&gt;

&lt;p&gt;Three years later they published a famous post admitting it was a disaster.&lt;/p&gt;

&lt;p&gt;The complexity had exploded. Engineers were spending more time managing message queues and debugging distributed traces than shipping features. In 2020 they had to burn months of effort to move everything back to a Monolith.&lt;/p&gt;

&lt;p&gt;What went wrong?&lt;/p&gt;

&lt;p&gt;They jumped to the &lt;strong&gt;Solution&lt;/strong&gt; (Microservices are scalable!) before rigorously validating the &lt;strong&gt;Problem&lt;/strong&gt; (Does our team size justify this operational complexity?).&lt;/p&gt;

&lt;p&gt;The root cause is always the same. &lt;strong&gt;The rush to code beats the discipline to think.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Senior engineers prevent this with a deceptively simple practice. They write things down before they write code. Not because they love documentation but because three days of planning prevents three years of pain.&lt;/p&gt;

&lt;h4&gt;
  
  
  The “Google Doc” That Saves Months
&lt;/h4&gt;

&lt;p&gt;When an engineer says “let me write an RFC before we start” they are not adding bureaucracy. They are buying insurance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RFC&lt;/strong&gt; stands for &lt;strong&gt;Request for Comments&lt;/strong&gt;. It is a structured document that forces you to answer the hard questions before you open your IDE.&lt;/p&gt;

&lt;p&gt;The magic isn’t the format. The magic is that it forces &lt;strong&gt;Explicit Thinking&lt;/strong&gt; about &lt;strong&gt;Implicit Assumptions&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In the Segment case, an RFC would have surfaced the core question: &lt;em&gt;“Do we actually have the staff to maintain 140 separate deployment pipelines?”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Someone would have commented: &lt;em&gt;“No. We will spend 50% of our week just keeping the lights on.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That comment would have saved them millions of dollars.&lt;/p&gt;

&lt;h4&gt;
  
  
  What Good Looks Like
&lt;/h4&gt;

&lt;p&gt;You don’t need a complex template. You just need to answer six questions in plain English.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. What problem are we solving?&lt;/strong&gt; Don’t use vague product-speak. Use specific pain.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Bad:&lt;/em&gt; “We need to re-architect the backend.”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Good:&lt;/em&gt; “Our current monolithic build takes 45 minutes to deploy. This costs us 10 developer-hours per day in waiting time.”&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. What approaches did we consider?&lt;/strong&gt; List at least three options. This proves you didn’t just fall in love with your first idea.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Option A:&lt;/em&gt; Microservices (High scale, high operational cost).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Option B:&lt;/em&gt; Modular Monolith (Medium scale, low cost).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Option C:&lt;/em&gt; Serverless (High vendor lock-in).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. What are we proposing and why?&lt;/strong&gt; Give a recommendation with clear reasoning.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Verdict:&lt;/em&gt; “We recommend Option B. It solves the deployment speed issue without requiring us to hire a dedicated DevOps team.”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. What are the tradeoffs?&lt;/strong&gt; Every decision has a cost. If you pretend there are no downsides nobody will trust your plan.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Tradeoff:&lt;/em&gt; “A Modular Monolith is harder to split up later if we grow to 500 engineers. We accept this risk because we are currently only 20 engineers.”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. What could go wrong?&lt;/strong&gt; Paranoid thinking during planning prevents panic during execution.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Risk:&lt;/em&gt; “What if the build time doesn’t actually improve?”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Mitigation:&lt;/em&gt; “We will prototype the build pipeline for one module before migrating the rest.”&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;6. What are the open questions?&lt;/strong&gt; Admitting what you don’t know encourages others to help you.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Question:&lt;/em&gt; “Do we need to update our CI/CD provider to support this?”&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  The AI “Red Team”
&lt;/h4&gt;

&lt;p&gt;The hardest part of writing an RFC is seeing your own bad ideas. You are biased. You want your solution to work.&lt;/p&gt;

&lt;p&gt;This is where AI becomes a superpower. Not for writing the text but for &lt;strong&gt;challenging the logic.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before I share a draft with my team I paste the “Tradeoffs” section into Claude or ChatGPT and I use this prompt:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Act as a cynical Principal Engineer. Read this architectural proposal. Tell me exactly how this system will fail at 10x scale and list three edge cases I have forgotten.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It simulates a harsh review instantly. It finds the holes in your logic before your boss does. Use AI to stress-test your thinking, not just to fix your grammar.&lt;/p&gt;

&lt;h4&gt;
  
  
  The “Async” Review
&lt;/h4&gt;

&lt;p&gt;The best part of an RFC is that it kills meetings.&lt;/p&gt;

&lt;p&gt;You write the doc. You share it in Slack or Teams. You let people comment on their own time for 3 days.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Skeptic&lt;/strong&gt; will ask: “This database schema looks complex. Have you considered a simple key-value store?”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Product Manager&lt;/strong&gt; will clarify: “Actually we need to support offline mode. This architecture relies too much on the cloud.”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Junior&lt;/strong&gt; will ask: “How does this handle user timezones?”&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You fix the flaws in the document. Fixing a flaw in a Google Doc takes 5 minutes. Fixing that same flaw after you wrote the code takes 5 days.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disagreement during the RFC phase is productive. Disagreement during the Code Review phase is expensive.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;[&lt;br&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%2F2zgv740qolztxx2laygy.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%2F2zgv740qolztxx2laygy.png" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;](&lt;a href="https://substackcdn.com/image/fetch/$s_!ujIr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8089aafa-cbae-4baf-bfd1-4524c0e0bfe5_2816x1536.png" rel="noopener noreferrer"&gt;https://substackcdn.com/image/fetch/$s_!ujIr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8089aafa-cbae-4baf-bfd1-4524c0e0bfe5_2816x1536.png&lt;/a&gt;)&lt;/p&gt;

&lt;h4&gt;
  
  
  A Real Example: The “Comfort Zone” Trap
&lt;/h4&gt;

&lt;p&gt;A fintech team needed to store data for a new transaction service. They had a “Golden Hammer” which was a specific technology stack they loved and used for absolutely everything.&lt;/p&gt;

&lt;p&gt;When this new complex feature came up the team naturally reached for their favorite tool again. It was the comfortable choice.&lt;/p&gt;

&lt;p&gt;But the Lead Engineer wrote an RFC to challenge it.&lt;/p&gt;

&lt;p&gt;He pointed out that their “favorite tool” was actually terrible at handling the specific requirements of this new feature.&lt;/p&gt;

&lt;p&gt;He wrote: &lt;em&gt;“If we use our standard tool we will have to write massive amounts of hacky code to make it work. It will be buggy and slow. I propose we use a specialized tool that is designed for this exact problem.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The team pushed back. &lt;em&gt;“We don’t know that new tool! It will take too long to learn!”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But the RFC made the tradeoffs clear. The cost of &lt;strong&gt;learning&lt;/strong&gt; the new tool was high but the cost of &lt;strong&gt;maintaining&lt;/strong&gt; the hacky solution was higher. The team agreed.&lt;/p&gt;

&lt;p&gt;Six months later that decision saved them. The feature ran perfectly. If they had skipped the RFC and stayed in their comfort zone they would have been drowning in technical debt.&lt;/p&gt;

&lt;h4&gt;
  
  
  When to Skip It
&lt;/h4&gt;

&lt;p&gt;Don’t be the person who writes an RFC for a button color change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Skip the RFC for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Small, reversible decisions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Urgent bug fixes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Work that takes less than 3 days.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Write the RFC for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Architectural changes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;New tools or libraries.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Decisions that are hard to reverse (like picking a database or a framework).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Your Homework
&lt;/h4&gt;

&lt;p&gt;Look at the biggest ticket in your current sprint.&lt;/p&gt;

&lt;p&gt;Ask yourself: &lt;strong&gt;“If I am wrong about how I plan to build this, how expensive will it be to fix later?”&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If the answer is “Very Expensive” then open a blank document. Write down the problem, three solutions, and your recommendation. Send it to your team.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You might just save yourself three months of work.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>microservices</category>
      <category>softwareengineering</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>Technical Debt is a Financial Loan. Treat it Like One.</title>
      <dc:creator>Tolu</dc:creator>
      <pubDate>Tue, 27 Jan 2026 10:02:45 +0000</pubDate>
      <link>https://dev.to/psarmmiey/technical-debt-is-a-financial-loan-treat-it-like-one-1ah</link>
      <guid>https://dev.to/psarmmiey/technical-debt-is-a-financial-loan-treat-it-like-one-1ah</guid>
      <description>&lt;p&gt;If you tell a Product Manager that the code is “messy” or “ugly” or “needs a refactor” they tune you out.&lt;/p&gt;

&lt;p&gt;They can’t see the code. To them the app works, the buttons click, and the customers are happy. They assume you just want to tidy up your workspace because you are a perfectionist.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;But if you tell them, &lt;strong&gt;“We have taken out a high-interest loan that is taxing every new feature by 20%,”&lt;/strong&gt; they listen.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The problem isn’t the code. The problem is the language.&lt;/p&gt;

&lt;p&gt;Engineers who get the budget for refactoring don’t necessarily have cleaner codebases. They have better communication strategies. They stop talking about “cleanliness” and start talking about “liabilities.”&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;It is not a mess. It is a financial instrument.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Technical_debt" rel="noopener noreferrer"&gt;Ward Cunningham&lt;/a&gt; gave us the term “technical debt” in 1992 but most teams only use half the metaphor. They treat debt like a mess to be cleaned up, like a teenager’s bedroom.&lt;/p&gt;

&lt;p&gt;That is not how debt works. Debt is financial. It has a Principal, it has Interest, and it compounds.&lt;/p&gt;

&lt;p&gt;Think of it like a credit card.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Principal&lt;/strong&gt; is the shortcut itself. It is the hard-coded API endpoint or the copy-pasted validation logic. You saved 3 days of dev time by doing this. You swiped the card to buy speed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Interest&lt;/strong&gt; is the extra time you pay &lt;em&gt;every single time&lt;/em&gt; you work around that shortcut. Every new feature takes 20% longer. Every bug fix requires archaeological digging.&lt;/p&gt;

&lt;p&gt;If you don’t pay down the principal, the interest compounds. That 20% tax becomes 50%. Eventually you hit &lt;strong&gt;Technical Bankruptcy&lt;/strong&gt; where 100% of engineering time is spent keeping the lights on and 0% goes to shipping new value.&lt;/p&gt;

&lt;p&gt;This progression is predictable. It isn’t dramatic. It is a slow suffocation. Teams don’t notice until they realize they can’t ship anything anymore.&lt;/p&gt;

&lt;p&gt;[&lt;br&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%2Farwpvvo8cbsokiovczmd.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%2Farwpvvo8cbsokiovczmd.png" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;](&lt;a href="https://substackcdn.com/image/fetch/$s_!BFvn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03cb96dc-b343-43ec-8458-1a21f7d943fb_2752x1536.png" rel="noopener noreferrer"&gt;https://substackcdn.com/image/fetch/$s_!BFvn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03cb96dc-b343-43ec-8458-1a21f7d943fb_2752x1536.png&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How AI Changed the Economics&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Paying down technical debt used to be purely manual labor. It was tedious, unglamorous work that nobody wanted to do. But AI has changed the math on this.&lt;/p&gt;

&lt;p&gt;First, it acts as an &lt;strong&gt;Auditor&lt;/strong&gt;. In the past we had to guess which code was causing the slowdowns. We would say things like “The billing controller feels messy.” That is an opinion.&lt;/p&gt;

&lt;p&gt;Now tools like CodeScene or Stepsize analyze git history to give you data. They can tell you that the Billing Controller was modified 45 times this month with high complexity. They can tell you it is costing you $10,000 a month in wasted dev time. Those numbers are defensible in planning meetings. Opinions are not.&lt;/p&gt;

&lt;p&gt;Second, AI acts as the &lt;strong&gt;Janitor&lt;/strong&gt;. AI struggles with writing complex new systems from scratch but it excels at translating old ones. It turns the work nobody wants to do into a 10-minute task. You can ask it to write a test suite for a legacy function or explain what a 5-year-old regex actually does.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The “Subprime” AI Trap&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But you have to be careful. There is a new danger here.&lt;/p&gt;

&lt;p&gt;Junior engineers using AI to generate thousands of lines of code they don’t understand are creating &lt;strong&gt;Subprime Debt&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The code ships fast so the velocity looks great. But nobody, including the AI, understands how it actually works. This isn’t just debt. It is a toxic asset. The knowledge to fix it doesn’t exist anywhere in the building. When that code breaks, you are in big trouble.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strategic vs. Destructive Debt&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This brings us to the difference between Junior and Senior engineers. Juniors aim for zero debt. They want perfect code. Seniors know that &lt;strong&gt;some debt is good.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You have &lt;strong&gt;Strategic Debt&lt;/strong&gt; , which is like a Mortgage. You say “We are hard-coding this integration to hit the Black Friday launch. It is not elegant but we will refactor it in January.” This is smart business. You bought speed with a clear repayment plan.&lt;/p&gt;

&lt;p&gt;Then you have &lt;strong&gt;Destructive Debt&lt;/strong&gt; , which is like a Payday Loan. You say “We didn’t write tests because we were in a hurry.” This is just negligence. You took out a loan with no plan to pay it back.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Conversation That Gets Budget Approved&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So how do you actually get the time to fix things?&lt;/p&gt;

&lt;p&gt;When a Product Manager asks why a feature requires 5 story points instead of 3, &lt;strong&gt;do not&lt;/strong&gt; explain that “the code is bad.” They cannot evaluate that claim.&lt;/p&gt;

&lt;p&gt;Reframe it as a business decision using this script:&lt;/p&gt;

&lt;p&gt;“To build this feature we have two options.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option A:&lt;/strong&gt; We build it on the current foundation. It takes &lt;strong&gt;3 days&lt;/strong&gt; now but it increases the cost of all future features in this module by &lt;strong&gt;10%&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option B:&lt;/strong&gt; We spend &lt;strong&gt;2 extra days&lt;/strong&gt; paying down debt while we build this. It takes &lt;strong&gt;5 days&lt;/strong&gt; total but future features will be faster and cheaper. The break-even point is just 3 features from now.&lt;/p&gt;

&lt;p&gt;Which approach makes more business sense to you?”&lt;/p&gt;

&lt;p&gt;This transforms refactoring from a “developer preference” into a “financial investment” with measurable ROI. PMs almost always choose Option B when they understand the compound costs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Senior Shift&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Stop arguing about code cleanliness. Start managing your technical portfolio.&lt;/p&gt;

&lt;p&gt;Go look at your backlog. Identify one “High Interest” liability that is taxing your team every week. In your next planning meeting do not ask to “refactor.”&lt;/p&gt;

&lt;p&gt;Ask to &lt;strong&gt;“retire a high-interest liability.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Language matters.&lt;/p&gt;

</description>
      <category>career</category>
      <category>codequality</category>
      <category>management</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>The "Not Invented Here" Trap (Now Turbocharged by AI)</title>
      <dc:creator>Tolu</dc:creator>
      <pubDate>Tue, 20 Jan 2026 10:02:50 +0000</pubDate>
      <link>https://dev.to/psarmmiey/the-not-invented-here-trap-now-turbocharged-by-ai-db3</link>
      <guid>https://dev.to/psarmmiey/the-not-invented-here-trap-now-turbocharged-by-ai-db3</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;We can build this better.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is the most dangerous sentence in software engineering.&lt;/p&gt;

&lt;p&gt;It usually starts innocently. You need a job scheduler. You look at the open-source options or the cloud offerings and you sniff. “These are too heavy,” you say. “We just need something simple. I can write a lightweight scheduler in a weekend.”&lt;/p&gt;

&lt;p&gt;Three months later, you aren’t working on your product. You are maintaining a buggy, half-baked version of Cron that only works on Tuesdays.&lt;/p&gt;

&lt;p&gt;This is the &lt;strong&gt;Not Invented Here (NIH)&lt;/strong&gt; syndrome. It is the ego-driven belief that if we didn’t write the code, it isn’t good enough.&lt;/p&gt;

&lt;p&gt;[&lt;br&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%2Fa091jn92wn0z93cdmhuo.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%2Fa091jn92wn0z93cdmhuo.png" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;](&lt;a href="https://substackcdn.com/image/fetch/$s_!B7yF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5d1133b-7e9c-45aa-b907-3e440e843df8_2816x1536.png" rel="noopener noreferrer"&gt;https://substackcdn.com/image/fetch/$s_!B7yF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5d1133b-7e9c-45aa-b907-3e440e843df8_2816x1536.png&lt;/a&gt;)&lt;/p&gt;

&lt;h4&gt;
  
  
  The AI Trap: The “Free Puppy” Problem
&lt;/h4&gt;

&lt;p&gt;In the last two years, AI has actually made this problem &lt;strong&gt;worse&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Tools like &lt;strong&gt;Claude Code&lt;/strong&gt; , &lt;strong&gt;GitHub Copilot&lt;/strong&gt; , and &lt;strong&gt;ChatGPT&lt;/strong&gt; have lowered the barrier to entry for building complex things. Now, a Junior Engineer looks at a paid tool like &lt;strong&gt;LaunchDarkly&lt;/strong&gt; (for feature flags) or &lt;strong&gt;Retool&lt;/strong&gt; (for internal dashboards) and thinks: &lt;em&gt;“Why pay? I can just ask &lt;strong&gt;Claude Code&lt;/strong&gt; _, _to scaffold a Redis-backed toggle system or a React admin panel in 10 minutes.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;And the AI might actually do a great job. It might write the perfect streaming logic with correct backpressure handling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But that is exactly the trap.&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The “Free Puppy” Problem:&lt;/strong&gt; AI makes acquiring code free. But code is like a puppy. Getting it is free, but you have to feed it, walk it, and pay the vet bills for the next 10 years.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Black Box Risk:&lt;/strong&gt; You now own complex logic that you didn’t design. When that “perfect” streaming script fails at 2 AM because the AI didn’t know your specific load balancer kills connections after 30 seconds, you are stuck debugging “borrowed brilliance” that you don’t fully understand.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;AI has made the cost of &lt;em&gt;writing&lt;/em&gt; code near zero. But the cost of &lt;em&gt;owning&lt;/em&gt; code remains as high as ever.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  The Three Paths: Build, Buy, or Integrate
&lt;/h4&gt;

&lt;p&gt;When you decide to “Buy” (or use open source), you aren’t escaping work. You are trading one type of work for another.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Building:&lt;/strong&gt; You own the logic, the bugs, and the roadmap. You are the god of your tiny world.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Buying:&lt;/strong&gt; You outsource the logic, but you are at the mercy of a vendor’s roadmap.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Integrating (The Reality):&lt;/strong&gt; This is where most modern engineering happens. You aren’t building a payments engine. You are building the &lt;em&gt;glue&lt;/em&gt; between your app and Stripe.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Where AI Actually Helps:&lt;/strong&gt; Instead of using AI to generate the &lt;em&gt;core system&lt;/em&gt; (Building), use AI to generate the &lt;em&gt;glue code&lt;/em&gt; (Integrating). AI is incredible at writing the boring adapters, transformers, and API wrappers that make integration painful. Use it to lower the “Integration Tax,” not to fuel your “Build” addiction.&lt;/p&gt;

&lt;h4&gt;
  
  
  The “Core vs. Commodity” Test
&lt;/h4&gt;

&lt;p&gt;How do you stop your team (or yourself) from falling into the trap?&lt;/p&gt;

&lt;p&gt;Next time you are debating a technical decision, call a timeout. Get the team in a room and ask this specific question:&lt;/p&gt;

&lt;h4&gt;
  
  
  If we build the world’s best version of this feature, will our customers care?
&lt;/h4&gt;

&lt;p&gt;It clarifies things instantly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario A:&lt;/strong&gt; You are debating building a custom &lt;strong&gt;Authentication System&lt;/strong&gt; because “Cognito is annoying.”&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Question:&lt;/em&gt; “If we build the best login page in history, will customers buy more of our product?”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Answer:&lt;/em&gt; No. They just want to log in.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Decision:&lt;/em&gt; &lt;strong&gt;Buy/Integrate.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Scenario B:&lt;/strong&gt; You are a Logistics Company, and you are debating building a &lt;strong&gt;Route Optimization Engine&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Question:&lt;/em&gt; “If we build the best routing algorithm in history, will customers buy more of our product?”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Answer:&lt;/em&gt; Yes. Faster delivery is why they pay us.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Decision:&lt;/em&gt; &lt;strong&gt;Build.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Go look at your team’s backlog right now. Find one ticket that involves building a utility, a helper tool, or a “simple” version of a paid product.&lt;/p&gt;

&lt;p&gt;Ask yourself: &lt;strong&gt;“Is this a free puppy?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If the answer is yes, delete the ticket.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If your Product Manager asks where it went, just tell them you “proactively eliminated a high-interest operational liability to protect future velocity.” They won’t be angry; they’ll be too busy nodding to realize you just deleted their feature.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Build the Core. Buy the Commodity. Use AI to glue it all together.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>productivity</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>How to Sell Technical Work to Non-Technical Leaders</title>
      <dc:creator>Tolu</dc:creator>
      <pubDate>Tue, 13 Jan 2026 10:02:07 +0000</pubDate>
      <link>https://dev.to/psarmmiey/how-to-sell-technical-work-to-non-technical-leaders-1hpn</link>
      <guid>https://dev.to/psarmmiey/how-to-sell-technical-work-to-non-technical-leaders-1hpn</guid>
      <description>&lt;p&gt;[&lt;br&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%2Fyr994f7yhovllosj7kbx.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%2Fyr994f7yhovllosj7kbx.png" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;](&lt;a href="https://substackcdn.com/image/fetch/$s_!nPG2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c9c622-7e1f-445b-93e1-8b4b96e61cf3_2816x1536.png" rel="noopener noreferrer"&gt;https://substackcdn.com/image/fetch/$s_!nPG2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c9c622-7e1f-445b-93e1-8b4b96e61cf3_2816x1536.png&lt;/a&gt;)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you can’t explain it simply, you don’t understand it well enough.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We have all had that moment. You push “deploy” and for a split second your heart stops. You stare at the monitoring dashboard and pray the graphs don’t turn red.&lt;/p&gt;

&lt;p&gt;In 2012, for the engineers at Knight Capital Group, the graphs didn’t just turn red. They exploded.&lt;/p&gt;

&lt;p&gt;Because of a manual deployment error where they missed just &lt;strong&gt;one&lt;/strong&gt; server out of eight, an old piece of code woke up. It was supposed to be dead code, often called “technical debt,” but instead it started buying high and selling low like a maniac.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In &lt;strong&gt;45 minutes&lt;/strong&gt; , the algorithm lost &lt;strong&gt;$440 million&lt;/strong&gt;. The company was bankrupt before lunch.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I think about that story a lot. Not because of the money, but because of the conversation that likely happened six months &lt;em&gt;before&lt;/em&gt; the crash. I guarantee you those engineers knew their deployment process was manual and scary. They knew that dead code was sitting there like a landmine.&lt;/p&gt;

&lt;p&gt;But they probably went to management and said, “We need to refactor the deployment pipeline to reduce configuration drift.”&lt;/p&gt;

&lt;p&gt;And management heard, “We want to spend money to fix something that isn’t broken.”&lt;/p&gt;

&lt;p&gt;If they had said, “We are sitting on a $440 million risk that could wipe out the company in under an hour,” the check would have been signed before they finished the sentence.&lt;/p&gt;

&lt;h4&gt;
  
  
  The “Rosetta Stone” of Engineering
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;The biggest lie we tell ourselves as engineers is that executives “don’t get tech.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Trust me, they get it fine. They just keep score differently. While you are sweating over &lt;strong&gt;Latency&lt;/strong&gt; , &lt;strong&gt;Code Quality&lt;/strong&gt; , and &lt;strong&gt;Uptime&lt;/strong&gt; , they are looking at &lt;strong&gt;Revenue&lt;/strong&gt; , &lt;strong&gt;Cost&lt;/strong&gt; , and &lt;strong&gt;Risk&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you walk into a meeting speaking “Kubernetes” and they are listening for “Q3 Revenue” you are going to lose. You need a translator.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Translation Dictionary
&lt;/h4&gt;

&lt;p&gt;I used to get frustrated when my cleanup projects got rejected. Then I realized I was pitching the wrong things. Here is how I learned to translate “dev speak” into “money speak” for my boss.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The “Refactoring” Pitch&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What you want to say:&lt;/strong&gt; “This code is spaghetti and I hate working in it. We need to rewrite it.”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What you should say:&lt;/strong&gt; “Our current messy code slows us down. Right now it takes us 4 weeks to ship a feature. If we clean this up, we can ship &lt;strong&gt;3 features a month&lt;/strong&gt; instead of one, without hiring more people.”&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. The “Security” Pitch&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What you want to say:&lt;/strong&gt; “We need to upgrade this library because it has a CVE.”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What you should say:&lt;/strong&gt; “We have a vulnerability that makes a data breach likely. The average breach costs a company like ours &lt;strong&gt;$4 million&lt;/strong&gt;. Spending $10k now reduces that risk to almost zero.”&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. The “Infrastructure” Pitch&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What you want to say:&lt;/strong&gt; “We need to use this cool new cloud tool.”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What you should say:&lt;/strong&gt; “Every minute our site is down, we lose $5,000 in sales. This tool guarantees we stay up, protecting &lt;strong&gt;$200k in revenue&lt;/strong&gt; next year.”&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  The One-Page Rule
&lt;/h4&gt;

&lt;p&gt;The next time you want to propose a big technical change, please, I beg you, do not send a 10-page architecture document. Nobody reads it.&lt;/p&gt;

&lt;p&gt;Send a &lt;strong&gt;One-Pager&lt;/strong&gt;. Just four bullet points:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Problem:&lt;/strong&gt; What is broken, and &lt;strong&gt;how much money is it costing us?&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Solution:&lt;/strong&gt; What are we building? (Keep it high-level).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Cost:&lt;/strong&gt; How long will it take?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Payoff:&lt;/strong&gt; What does the business get out of it?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  The Senior Shift
&lt;/h4&gt;

&lt;p&gt;Junior engineers think their job is to write code. Senior engineers know their job is to &lt;strong&gt;deliver value using code.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you start speaking the language of the business, something magical happens. You stop being the “cost center” that needs to be managed, and you start being the “business partner” who gets the budget.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try this today:&lt;/strong&gt; Look at the ticket you are working on right now. Can you explain &lt;em&gt;why&lt;/em&gt; you are doing it without using a single technical term?&lt;/p&gt;

&lt;p&gt;If you can’t, do you really know why you’re doing it?&lt;/p&gt;

</description>
      <category>career</category>
      <category>leadership</category>
      <category>management</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>The True Cost of Technical Decisions</title>
      <dc:creator>Tolu</dc:creator>
      <pubDate>Tue, 06 Jan 2026 10:02:14 +0000</pubDate>
      <link>https://dev.to/psarmmiey/the-true-cost-of-technical-decisions-1pa3</link>
      <guid>https://dev.to/psarmmiey/the-true-cost-of-technical-decisions-1pa3</guid>
      <description>&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%2F9b7ffrug4t0mj164xjga.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%2F9b7ffrug4t0mj164xjga.png" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;There are no solutions. There are only trade-offs.&lt;/em&gt; Thomas Sowell&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We all want to build cool stuff. It’s why we got into engineering.&lt;/p&gt;

&lt;p&gt;In 2016, Uber made what felt like the coolest technical decision on the planet. To handle their insane growth, they decided to split their monolithic codebase into microservices. On a whiteboard, it looked brilliant. Elegant. Scalable.&lt;/p&gt;

&lt;p&gt;Fast forward three years, and they hadn’t built a sleek machine; they’d grown a jungle.&lt;/p&gt;

&lt;p&gt;They had over 2,000 distinct microservices. Trying to debug why a ride request failed felt less like engineering and more like archaeology, tracing a single click through 50 different services owned by different teams. They were spending more time tracing function calls than shipping actual value to customers.&lt;/p&gt;

&lt;p&gt;It took them years and millions of dollars to unwind that “brilliant” decision into something manageable.&lt;/p&gt;

&lt;p&gt;This is the hard truth that took me years to learn: &lt;strong&gt;Complexity isn’t a badge of honor. It’s a tax.&lt;/strong&gt; And you pay it with your most precious resource; your time.&lt;/p&gt;

&lt;h4&gt;
  
  
  The “Weekend Project” Trap
&lt;/h4&gt;

&lt;p&gt;We’ve all been there. You look at a vendor like Auth0 or Datadog charging $500 a month and think, “What a rip-off! I could build a basic version of that in a weekend.”&lt;/p&gt;

&lt;p&gt;And you’re right. You probably could build it in a weekend.&lt;/p&gt;

&lt;p&gt;But then you spend the next two years patching it, securing it, upgrading it, and waking up at 3 AM when it breaks because you didn’t account for daylight savings time in a specific timezone.&lt;/p&gt;

&lt;p&gt;Your salary is real money. If buying a managed tool saves your team just &lt;strong&gt;three hours&lt;/strong&gt; of collective engineering time a month, it has usually paid for itself. Stop treating your time like it’s free.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Jungle You Create (The Hidden Costs)
&lt;/h4&gt;

&lt;p&gt;When you choose to build something that you could buy, you aren’t just saving license fees. You are planting vines that will eventually choke your productivity.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Maintenance Vine:&lt;/strong&gt; Code is never “done.” It’s a living liability that needs constant feeding. Every line of custom infrastructure code you write is a line of feature code you &lt;em&gt;didn’t&lt;/em&gt; write.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Opportunity Cost Vine:&lt;/strong&gt; While your team is busy reinventing a payment gateway that Stripe already perfected seven years ago, your competitor just shipped the game-changing feature that’s going to steal your market share.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The “Bus Factor” Vine:&lt;/strong&gt; You know that “lightweight, custom” internal tool Bob built? Well, Bob just quit to join Google. Now &lt;em&gt;you&lt;/em&gt; are the only person on earth who understands how it works. Good luck taking a vacation this year.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  The Senior Engineer’s Rule: Only Build the Magic
&lt;/h4&gt;

&lt;p&gt;So, how do you decide? You can’t outsource everything.&lt;/p&gt;

&lt;p&gt;My rule of thumb has become simple over the years: &lt;strong&gt;Outsource the plumbing so you can focus on the magic.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;BUY the boring stuff.&lt;/strong&gt; Authentication, email delivery, basic monitoring, standard payments. If 10,000 other companies need the exact same thing, don’t build it yourself.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;BUILD your differentiator.&lt;/strong&gt; The thing that makes your company unique. The secret sauce algorithm. The core user experience that nobody else has. That’s where your brainpower should go.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Early in my career, I optimized for “Resume Driven Development.” I wanted to build everything from scratch because it felt like real engineering.&lt;/p&gt;

&lt;p&gt;Now? I optimize for sleep and shipping. My job isn’t to write the most code; it’s to solve the problem in the smartest way possible so the business wins.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Take a look at your Jira board right now.&lt;/strong&gt; What ticket are you dreading? Is it wrestling with some custom, over-engineered beast that isn’t core to your product?&lt;/p&gt;

&lt;p&gt;What would happen if you just deleted that code and bought a solution instead? &lt;strong&gt;(Okay, you will probably need some consultations and approvals before you light the legacy repo on fire since I really don’t want you to get fired because of my post, but you get the point.)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is the difference between just coding and actually engineering.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>softwaredevelopment</category>
      <category>softwareengineering</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>My TensorFlow Journey</title>
      <dc:creator>Tolu</dc:creator>
      <pubDate>Sun, 05 Jan 2020 09:36:02 +0000</pubDate>
      <link>https://dev.to/psarmmiey/my-tensorflow-journey-pd2</link>
      <guid>https://dev.to/psarmmiey/my-tensorflow-journey-pd2</guid>
      <description>&lt;p&gt;Ever since my undergrad days, where I first got to know about Artificial Intelligence, I became so fond of the various disruptions that come with it and then a decision was made. I decided to specialise in AI.&lt;/p&gt;

&lt;p&gt;Making such decisions like mine comes with a lot of commitment to self-development since undergrad lecturers only briefed about it. I decided to get books on Machine Learning and the approach was with the core Python and I was able to understand few concepts from it after which I left it to pursue few gigs since I was a grad already.&lt;/p&gt;

&lt;p&gt;Fast forward to 2019, I was introduced to Tensorflow Lagos meetup, I signed up to attend, but so sad I couldn’t, make it there, but after the event the organizer did well to share the resources used at the meet up, and lo and behold they shared the link to the Udacity Course on Intro to TensorFlow for Deep Learning by TensorFlow&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HMgttU2u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/08cbpgcyitp9dc8vp7sd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HMgttU2u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/08cbpgcyitp9dc8vp7sd.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I have been on the course for some weeks now, and it has been very insightful. Thanks to the authors of the course&lt;/p&gt;

&lt;p&gt;Paige Bailey&lt;br&gt;
Magnus Hyttsten&lt;br&gt;
Juan Delgado&lt;/p&gt;

&lt;p&gt;I will be sharing in a series, which will be released every week what I have learnt, what I am learning and what I am expecting. You are welcome to join me on this wonderful experience of becoming a TensorFlow expert before the new year ends.&lt;/p&gt;

&lt;p&gt;Each day holds a surprise. But only if we expect it can we see, hear, or feel it when it comes to us. Let’s not be afraid to receive each day’s surprise, whether it comes to us as sorrow or as joy It will open a new place in our hearts, a place where we can welcome new friends and celebrate more fully our shared humanity.&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>udacity</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
