<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Technical Leadership | Law Zava</title><link>https://lawzava.com/topics/leadership/</link><description>Technical leadership writing on decision latency, team structure, ownership, resilience, and AI operating models.</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 12 Oct 2026 00:07:28 +0000</lastBuildDate><atom:link href="https://lawzava.com/topics/leadership/index.xml" rel="self" type="application/rss+xml"/><item><title>Your AI Tool Needs an Adoption SLO</title><link>https://lawzava.com/blog/2026-10-07-your-ai-tool-needs-an-adoption-slo/</link><pubDate>Wed, 07 Oct 2026 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-10-07-your-ai-tool-needs-an-adoption-slo/</guid><description>Seat counts can&amp;amp;rsquo;t justify an AI tool renewal. Define one adoption SLI, governed completions over eligible cases, with guardrails and a breach rule.</description><content:encoded><![CDATA[<p>A renewal decision is on the table: the internal AI assistant&rsquo;s licenses come due, the dashboard shows seats activated and weekly actives climbing, and a champion has testimonials. None of that can distinguish a tool that changed how work happens from a tool people opened twice and routed around.  <a href="/blog/2026-08-20-the-diffusion-gap-why-pilots-dont-become-capability/"
   
   >Pilots die in the gap between working and being used</a>
; the diffusion essay&rsquo;s composite claims team had licenses, a sponsor, and usage in the low twenties eight months in. What that essay&rsquo;s argument was missing is the instrument, so here it is: an adoption SLO. The actual machinery, not the metaphor, because the machinery is what makes SLOs resistant to wishful reading.</p>
<p>One service-level indicator, defined before the data arrives: successful governed completions divided by eligible workflow instances, over a rolling 28-day window. Every term is load-bearing. Completions, not logins: instances of the target workflow finished  <a href="/blog/2026-08-11-shadow-ai-is-an-operating-problem-not-a-ban/"
   
   >through the governed path</a>
. Eligible instances, not enrolled users: the denominator comes from an eligibility ledger of cases the tool should have handled, which forces the instrumentation that makes the whole thing decidable. That means a shared case ID across the tool and the legacy path, and mutually exclusive terminal states per case: completed-governed, abandoned (with a timeout rule), manual-fallback, exception. If you can&rsquo;t produce that event model, you don&rsquo;t have an adoption problem yet; you have a measurement problem, and it&rsquo;s cheaper.</p>
<p>Around the SLI, guardrails and diagnostics, not co-equal targets. User reach, meaning eligible users with at least one opportunity who used the tool, guards against coverage carried by three enthusiasts. Repeat use, measured only among users with eligible opportunities in both periods and windowed to the workflow&rsquo;s natural frequency, separates habit from novelty; a fixed week-five cohort is arbitrary for a monthly workflow. Abandonment rate says where to investigate, as in, the tool wins the opening and loses a specific step, without claiming to say why. And the quality set (error rate, rework, cycle time, exceptions) holds the line the adoption number must never be allowed to buy.</p>
<p>Which is the objection that deserves the most respect: put adoption on someone&rsquo;s review and recommend deleting the old button, and you&rsquo;ve written the recipe for Goodhart. Two rules keep the SLO from being gamed. The target belongs to the tool&rsquo;s owner, never to the users; adjusters are scored on claims quality, not assistant usage, so the owner can only move the number by making the governed path genuinely cheaper. And coercive defaults, such as removing the legacy button for covered cases, are permitted only while every quality guardrail holds; the moment rework or exceptions rise, the default reverts and the breach conversation is about the tool. Under those rules, persistently low adoption becomes what it sometimes is: the users correctly rejecting a tool that isn&rsquo;t good enough, now visible as such instead of relaunched annually.</p>
<p>Then the part that makes it an SLO rather than an OKR: the breach protocol, agreed in writing at rollout. A floor, say 60% coverage with guardrails green (your numbers will differ), and a budget: two consecutive windows below the floor triggers the review, no discretion. The review has two exits. Exit one is a time-boxed remediation hypothesis: a named change to the workflow, defaults, or tool, an owner, a budget, a checkpoint date, guardrails unchanged. Exit two, taken automatically if the checkpoint misses, is decommissioning. Licenses lapse, the workflow reverts, the ledger closes. What breach can never buy is the third exit every failing tool currently takes: a relaunch email and another training session. Training is a legitimate remediation hypothesis exactly once, with a checkpoint like any other. Metrics without a breach condition are decoration.</p>
<p>The renewal meeting this was built for then gets its finance line:  <a href="/blog/2026-07-21-token-prices-fell-ai-bills-did-not/"
   
   >spend per accepted business outcome</a>
 on the governed path, against the same figure for the legacy path. Not spend per completion, which a worthless completion satisfies. With McKinsey&rsquo;s August survey putting about a fifth of organizations at cost-constrained AI use, the renewals that survive should be the ones that win that comparison with the breach protocol attached. Adoption is necessary for renewal, never sufficient. The tools that clear the bar are capabilities. The rest were licenses.</p>
]]></content:encoded></item><item><title>The Handoff Tax</title><link>https://lawzava.com/blog/2026-09-23-the-handoff-tax/</link><pubDate>Wed, 23 Sep 2026 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-09-23-the-handoff-tax/</guid><description>80% report personal AI gains while EBIT impact stays flat. The handoff tax: task time down, throughput flat, queues rising at one nameable transition.</description><content:encoded><![CDATA[<p>Ask around any engineering floor and people will tell you  <a href="/blog/2025-10-13-ai-team-productivity/"
   
   >the tools made them faster</a>
. Ask the CFO whether the income statement noticed and the answer gets quieter. McKinsey&rsquo;s August survey puts numbers on both halves: 80% of respondents report individual productivity gains from AI, while 37% say AI has contributed positively to enterprise EBIT, a share essentially unchanged from last year. Four in five people say they&rsquo;re personally faster; the share of companies whose income statement can tell stayed flat.</p>
<p>Self-reports both, so start with the explanations that require no one to be wrong. Measurement lag: EBIT is a long way from task speed, and enterprise technology historically takes a year or two to show up there. Absorption: the gains are real but spent, on adoption costs, on quality, on scope growth, or competed away in pricing. Inflation: people overestimate their own speedup. All three are live, and a survey can&rsquo;t separate them. What a survey can do is tell you where to point instruments, and the instruments can separate them, because delayed conversion, spent gains, and destroyed gains leave different marks on a workflow&rsquo;s queues.</p>
<p>Here is the mechanism worth instrumenting for, named so it can be falsified. Call it the handoff tax: an individual speedup converts to enterprise throughput only if the downstream stage absorbs the extra flow, and where it doesn&rsquo;t, the gain converts to queue instead. The signature is specific. Task time down at one stage, end-to-end throughput flat, and waiting time or rework rising at a nameable transition. A developer produces changes twice as fast into a review process sized for the old arrival rate. A team drafts three proposals in the time one took, into a decision meeting that still meets weekly,  <a href="/blog/2026-06-10-decision-latency-p-and-l-variable/"
   
   >and decision latency was a P&amp;L variable</a>
 before the arrivals tripled. Output volume rises into fixed verification capacity, so either backlog grows or scrutiny quietly falls. If the tax is your problem, those queues exist and are growing. If task time fell and no downstream queue grew and throughput still didn&rsquo;t move, the tax is not your problem, and this diagnosis is wrong for your org. That&rsquo;s the test, and it cuts both ways.</p>
<p>The survey offers one more clue, to be handled with care: 47% of mid-level managers and individual contributors report at least one negative AI-related strain, against 31% of executives and senior managers. That is not evidence that the middle layer causes the gap; strain could equally measure proximity to rollout churn or distance from insulation. Treat it as a searchlight, not a verdict. The layer reporting the most friction is the layer where handoffs, reviews, and exceptions live, which is reason to put the instruments there first, and no reason to blame the people improvising unpaid pipeline rebalancing.</p>
<p>The instrument itself is one workflow, traced. Pick a single customer-valued output. Timestamp five events per item: intake, draft-ready, review-start, exception, done. Four weeks of data gives you arrival rate, service rate, queue age, and first-pass yield per stage, before-and-after if you have history. The tax, if present, is legible in one picture: the stage where AI landed shows falling task time, and some downstream transition shows rising queue age. Then run the confirming experiment. Add capacity or change policy at that one transition, whether review staffing, the WIP limit, or the decision cadence, and watch end-to-end throughput. If it moves, you found where the 80% was leaking. If it doesn&rsquo;t, reject the diagnosis and go test measurement lag, which is the serious competitor.</p>
<p>What makes this a leadership post rather than a queueing tutorial is who owns the fix. Rebalancing a pipeline after the tools changed its arrival rates is a management act: deciding where freed capacity goes, which is currently in nobody&rsquo;s job description and therefore happens by default, and the default is queue. Unallocated speedup defaults to queue. So allocate it, into the constraint stage, into  <a href="/blog/2026-07-30-reliability-is-the-autonomy-ceiling/"
   
   >verification capacity that buys trustable autonomy</a>
, into fewer things finishing sooner. The decision rule for the next QBR fits in one sentence: individual gains are inventory until the next stage absorbs them, and inventory doesn&rsquo;t show up in EBIT. Queues do.</p>
]]></content:encoded></item><item><title>Don't Book the Cut Before the Work Disappears</title><link>https://lawzava.com/blog/2026-09-18-dont-book-the-cut-before-the-work-disappears/</link><pubDate>Fri, 18 Sep 2026 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-09-18-dont-book-the-cut-before-the-work-disappears/</guid><description>Expected AI headcount cuts outran reported ones last year. Let forecasts drive scenarios; book a saving only once the work has observably gone.</description><content:encoded><![CDATA[<p>The workforce plan that books next year&rsquo;s AI saving from a capability forecast is a common artifact: headcount down by a percentage, signed off before any workflow has been decomposed. McKinsey&rsquo;s August survey supplies the pair of numbers that should sit next to it. This year 39% of respondents expect AI-related headcount declines in the year ahead, up from 32% a year ago. Last year 32% expected declines over the following year; this year 14% report that AI actually reduced their workforce. Expectation rose seven points while reported reality came in at under half the forecast rate.</p>
<p>One year-pair from one survey proves no trend, and I won&rsquo;t pretend it does. What it provides is a warning label for that artifact. The argument for that label isn&rsquo;t the survey; it&rsquo;s the mechanism the survey is consistent with, and the mechanism is old.</p>
<p>A job is a bundle of tasks, and automation eats tasks, not bundles. The model drafts the letter; a human still decides the hard cases, works the exception queue, answers for the output, and does the coordination that never appeared in any task inventory. What disappears is a percentage of each person&rsquo;s day, scattered, and scattered percentages don&rsquo;t concentrate into a removable position by themselves. Concentrating them requires reorganizing the work, which is exactly the slow institutional labor  <a href="/blog/2026-08-20-the-diffusion-gap-why-pilots-dont-become-capability/"
   
   >pilots skip and diffusion demands</a>
. Meanwhile the same tools generate new tasks: review of machine output,  <a href="/blog/2026-07-16-your-benchmarks-are-lying-to-you/"
   
   >evals and tripwires</a>
, a new incident class. The ledger has two columns, and capability forecasts read only one.</p>
<p>Note what this does not contradict.  <a href="/blog/2026-09-01-junior-developer-cliff-is-a-leadership-problem/"
   
   >A senior driving agents can genuinely out-ship a senior and three juniors</a>
; demonstrated substitution inside a bounded workflow is real, and the arithmetic pays this quarter. The gap is between that observation and an enterprise-wide reduction inferred from it. Bounded substitution is evidence about the workflow you measured. The org-wide cut extrapolates it across bundles nobody has decomposed, and that extrapolation is the step that came in at under half.</p>
<p>Now the strongest case for the other side: staffing has lead times. Hiring pipelines, budget cycles, and attrition planning all run on forecasts, and a rule of &ldquo;no workforce planning until proof&rdquo; guarantees overstaffing in any world where the cuts eventually arrive. Right. So give the forecast the jobs forecasts can hold: scenarios, contingent requisitions, replacement-approval gates, slower backfill on roles the models plausibly thin. What the forecast doesn&rsquo;t get to govern is the irreversible acts: the layoff, and its quieter twin, the booked saving that finance builds next year on. A booked-but-unrealized reduction is corrosive in a specific way. Teams run short against savings that never materialized, absorb the new verification work uncounted, and when the number misses, the whole program wears the failure,  <a href="/blog/2026-09-01-junior-developer-cliff-is-a-leadership-problem/"
   
   >which the bench you stopped filling</a>
 then compounds. The org that cuts on forecast pays twice: once in the shortfall and once in the rebuild.</p>
<p>So write the promotion rule from scenario to plan, per workflow, decidably. Task elimination observed at representative volume: this queue or review step no longer routes to humans, measured across a full cycle&rsquo;s case mix, including the bad weeks. Service levels held against named tolerances (error rate, latency, escalation volume) over a fixed window agreed before the change, not after. And the residual netted out: total human touch-time on the workflow, including the new review, exception, and coordination work the change created, down by enough concentrated capacity to equal actual positions rather than confetti. Three tests, thresholds written in advance. A workflow that passes them supports a reduction through attrition with a clear conscience. A workflow that hasn&rsquo;t been run through them supports a scenario, and the deck should say which one it&rsquo;s holding.</p>
<p>The board will read about AI layoffs weekly and ask why yours are slower. The answer is the survey&rsquo;s own shape plus one question: expectations up seven points, reported declines at under half the forecast rate, so which side of that gap should our balance sheet be on?  <a href="/blog/2026-03-30-throughput-engineer-headcount-lagging-metric/"
   
   >Throughput, measured per workflow</a>
, will tell you when the work has actually disappeared. Until it does, the saving is a hypothesis, and hypotheses don&rsquo;t belong on the income statement.</p>
]]></content:encoded></item><item><title>The Rung Contract</title><link>https://lawzava.com/blog/2026-09-09-the-rung-contract/</link><pubDate>Wed, 09 Sep 2026 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-09-09-the-rung-contract/</guid><description>Competency matrices describe skills. Apprenticeship needs a contract per rung: permission, evidence, reviewer, a promotion rule two managers apply alike.</description><content:encoded><![CDATA[<p>Last week I argued that  <a href="/blog/2026-09-01-junior-developer-cliff-is-a-leadership-problem/"
   
   >cutting juniors solves this quarter&rsquo;s demand at the price of a senior famine three years out</a>
, and named the work the new apprenticeship should teach. The fair follow-up question is how to structure it. Every company already has a competency matrix, and competency matrices don&rsquo;t produce seniors. So before the what, the form.</p>
<p>A competency matrix describes skills: &ldquo;demonstrates growing judgment in reviews.&rdquo; Nobody can act on it, because it grants nothing and nothing tests it. What apprenticeship actually runs on is a contract per rung, four clauses, written where the team can read them. Permission: the real work this person may now do, with its boundaries. Supervised, dual-controlled, rollback-limited, but real. Evidence: the artifacts that show they&rsquo;re doing it well, countable ones. Reviewer: the named person whose corrections they receive, because feedback with no owner is noise. Promotion rule: a decision rule specific enough that two managers reading the same record would make the same call. Miss any clause and you don&rsquo;t have a rung, you have a vibe, and vibes are what apprenticeship consisted of when juniors learned by osmosis from work that no longer exists.</p>
<p>This is the contract I&rsquo;d write for the first rung, in full, because the format is the point. Permission: first-pass review of agent-generated changes, verdict delivered as a written rejection or approval with reasons; no merge authority. Evidence: the rejection log, and a miss rate, meaning defects the apprentice approved that their reviewer caught, measured over a sample. Reviewer: a named senior who re-reviews a fixed sample, weighted toward approvals, because the dangerous failure here is the miss, not the false alarm. Promotion rule, concretely: thirty sampled reviews across six weeks, zero critical misses, noncritical miss rate under an agreed bar, sign-off from two seniors rather than one. Numbers your org would tune. But numbers, or the rung isn&rsquo;t checkable.</p>
<p>How can juniors catch defects in code they&rsquo;ve never been able to write? Alone, they can&rsquo;t, which is why rung one has an entry gate as well as an exit gate. Before their verdicts count, the apprentice calibrates on seeded cases: changes with known defects, where the job is to find the flaw, reproduce it with a failing test, and propose the repair, shadowing a senior&rsquo;s real reviews until their recall on the seeded set clears a threshold. Review-first learning works only when someone builds the reviewer&rsquo;s mental model deliberately; the seeded set is that construction. It also answers whether this rung reduces senior load. Initially it doesn&rsquo;t, since sampled re-review plus teaching costs more senior minutes than it saves. That&rsquo;s an investment with a measurable payback: track senior review-minutes per merged change and escaped defects, and expect the crossover in months, not weeks.  <a href="/blog/2026-09-01-junior-developer-cliff-is-a-leadership-problem/"
   
   >The review queue can afford it</a>
; the bench can&rsquo;t afford its absence.</p>
<p>The later rungs get the same four-clause treatment, and their order can flex by job family. Owned failure: one production failure mode end to end (alert, runbook, rotation, postmortem) under dual control until an incident shows the senior was informed rather than needed. Defended decisions: real design calls, written with alternatives and costs, scored when made, with assumptions explicit, rollback stated, escalation named, and production outcomes used as later calibration rather than the gate, because outcomes carry luck in both directions. Authored verification: the eval set and drift tripwire for something new,  <a href="/blog/2026-07-16-your-benchmarks-are-lying-to-you/"
   
   >the benchmark only your org can build</a>
. Clearing that last contract is the crossing the whole pipeline exists to produce: unsupervised ownership, the numerator in the replacement-rate metric I argued you should track against senior attrition.</p>
<p>And write the failure clause with the same discipline, because a curriculum that can&rsquo;t fail people honestly fails them dishonestly. An apprentice stalled at a rung gets a diagnosis first (wrong rung order for their role, wrong reviewer, insufficient reps), then a changed assignment and a documented reassessment, before anyone reaches for performance machinery. The contract cuts both ways: it&rsquo;s how they know exactly what&rsquo;s asked, and how you know exactly what you owe them. Four clauses, per rung, on one page. Everything else is a vibe.</p>
]]></content:encoded></item><item><title>The Junior Developer Cliff Is a Leadership Problem</title><link>https://lawzava.com/blog/2026-09-01-junior-developer-cliff-is-a-leadership-problem/</link><pubDate>Tue, 01 Sep 2026 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-09-01-junior-developer-cliff-is-a-leadership-problem/</guid><description>AI eats the work juniors learned on. Rebuild apprenticeship around verification and ownership, or starve your senior bench.</description><content:encoded><![CDATA[<p>The case for cutting junior developers is sound as far as it goes. One senior driving a fleet of agents ships what a senior and three juniors used to ship, faster and cheaper. Juniors were always the slowest, most expensive way to get a CRUD endpoint written, and the agent writes it now. The spreadsheet says cut the bottom of the pyramid, and it will keep saying so next quarter. The error is not in the arithmetic. It is in what the arithmetic measures: demand for seniors this quarter, not the supply of seniors three years out. Those are different problems, and the cut answers the first by quietly worsening the second.</p>
<p>Seniors are grown, not hired, and the lead time runs three to five years. The bench drains on its own schedule whether or not you refill it. Put rough numbers on it; your own will differ, but the shape holds. Attrition, retirement, internal moves, and poaching run something like 10 to 15% a year in most engineering orgs. Hold fifty seniors and you lose about six annually just standing still. Staying flat means minting six replacements. A junior who can own a system unsupervised takes around four years to produce, and maybe half of any cohort gets there. Work it backward and a steady bench needs something like a dozen new apprentices entering every year, which means several dozen in the pipeline at any time. Cut intake to zero and nothing visible happens for two years. In year three your incident reviews route to a thinner and thinner group, and by the time the gap reaches your metrics the fix is already three years out.</p>
<p>Grant the strongest version of the counterargument: agents probably do lower how many seniors you need per unit of output. That is a claim about demand. Insolvency is a claim about supply, and a falling demand curve does not repair a severed supply line. Drop from fifty seniors to forty and you still lose five a year, and you still have to source them.</p>
<p>From a market. That is what the seniors-plus-agents story leaves out: it balances only if someone, somewhere, is still producing seniors. When every firm runs the same model and cuts its juniors, the market for proven seniors thins at the exact moment everyone turns to it. You stop growing the asset and start  <a href="/blog/2026-04-30-ai-build-vs-buy/"
   
   >buying it on a market you helped drain</a>
, as a price-taker, against everyone&rsquo;s identical bet. Buying stays cheap only while the supplier still exists.</p>
<p>Why not go further and bet that agents absorb senior judgment too, skipping the pipeline entirely? Name that wager, because it is the one you are placing, and it loses on accountability. When an agent ships a bad migration, a human signs for it to a regulator, a customer, or a board, and the signature does not delegate to a model.  <a href="/blog/2026-07-30-reliability-is-the-autonomy-ceiling/"
   
   >Reliability sets the autonomy ceiling</a>
; a human verifier sets the accountability one. You will always need people trusted to say the agent is wrong here, and that trust is earned only by doing the work on something that bites when you get it wrong.</p>
<p>That settles what juniors should be doing now that the code they used to learn on is gone. The rung moves up the value chain, onto the work the model cannot own, and that work is real and nameable: first-pass review of agent output, delivered as a written rejection with the reason; one failure mode owned end to end, on-call included; a design decision defended out loud to someone senior; the eval that proves the thing actually works. The work you automated away from juniors is now the work you have to teach them to supervise. Route the review load your seniors resent through the juniors first: the junior makes the call, the senior corrects it, and the tax becomes the curriculum. Run deliberately, this is the pipeline that mints those six replacements a year; left to chance, it is the pipeline you let lapse.</p>
<p>None of this surfaces in headcount, which  <a href="/blog/2026-03-30-throughput-engineer-headcount-lagging-metric/"
   
   >lags</a>
. Watch a ratio instead: senior replacement rate against senior attrition rate, meaning how many engineers crossed into unsupervised ownership this year against how many seniors you lost. Below one, you are spending seniority faster than you produce it, and the income statement will read excellent the entire way down. The agents pay off this quarter. What matters is whether anyone is still tracking the rate at which the bench refills, and finance will not put that number on the table on its own.</p>
]]></content:encoded></item><item><title>The Diffusion Gap: Why Pilots Don't Become Capability</title><link>https://lawzava.com/blog/2026-08-20-the-diffusion-gap-why-pilots-dont-become-capability/</link><pubDate>Thu, 20 Aug 2026 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-08-20-the-diffusion-gap-why-pilots-dont-become-capability/</guid><description>Most AI pilots pass the trial and then die. Closing the gap takes ownership, cadence, and incentives. Write exit criteria as operating changes.</description><content:encoded><![CDATA[<p>The money in an AI pilot rarely disappears in a crash. It goes quietly, in licenses paid and habits unchanged.</p>
<p>A claims team pilots an assistant that drafts the first-pass adjustment letter. The trial is clean: on a held-out sample it produces a usable draft for 78% of cases, and the two adjusters running it cut letter-writing time roughly in half. The deck circulates. Everyone agrees it works. Eight months later, fourteen adjusters hold a license and nine have opened the tool twice. The default is still the old template button in the case system, because that is the button that has always been there.</p>
<p>The model did not fail. What failed is the work nobody scoped: moving a proven capability from &ldquo;passes a trial&rdquo; to &ldquo;is how the job is done.&rdquo; That is the distance between a model that performs and an organization that operates differently because of it, and it is where the money went.</p>
<p>Most companies running pilots have  <a href="/blog/2026-05-19-stop-building-internal-ai-tools-no-one-uses/"
   
   >a graveyard of these</a>
. The audit is cheap: list every pilot that cleared its technical bar, then mark which daily workflow each one actually changed. The blanks are your real result, and they cluster for one reason. A pilot gets scored on whether the model works, which answers a question nobody important was asking. The question that pays is whether work will route through it next quarter.</p>
<p>Three things have to move for that to happen, and they fail as a set: ownership, cadence, and incentives.</p>
<p>The first two are org-chart edits a director can make before lunch. Ownership leaves the pilot team for a named operator whose performance review includes the adoption number. Cadence puts that number into  <a href="/blog/2026-06-10-operating-cadence-ai-leadership-interfaces/"
   
   >a standing review</a>
, so it is read on a fixed clock rather than admired once. Do only these and you get a well-governed tool nobody uses. That is the claims pilot&rsquo;s eight months exactly: a sponsor, a slide in the monthly deck, and usage in the low twenties, because the cheapest action on screen was still the old one.</p>
<p>Incentives is the lever everyone hand-waves as &ldquo;drive adoption,&rdquo; and it is the only hard one, because &ldquo;path of least resistance&rdquo; is not a mood. It is three concrete edits to the screen and the scorecard.</p>
<p>The first is to delete the old path for the cases the tool handles. The highest-leverage move is removing the legacy button: take the manual &ldquo;insert template&rdquo; action out of the case screen, so drafting through the assistant is the one-click route and the old way costs four extra clicks. That is not the same as deleting the template for the 22% the assistant can&rsquo;t draft; those cases still route to it. Adoption is a UI default before it is a culture.</p>
<p>The second is to move the measured metric. Stop scoring adjusters on raw letters closed per day and start scoring first-pass acceptance, a number the assistant moves and the manual path does not. Now the comp-relevant metric rewards the new behavior instead of being neutral to it.</p>
<p>The third is to make the old path visible when chosen. The two holdouts still writing by hand show worse handle time on that same scorecard, which is a line in the weekly review, not a policy memo.</p>
<p>Incentives gets skipped because it is the expensive lever. It means touching a scorecard people are measured on, deleting a tool they are comfortable with, and eating the complaints when the familiar button is gone.</p>
<p>So write the pilot&rsquo;s exit criteria as operating changes before it starts, not model targets after it ends:</p>
<ul>
<li>Which human task stops, and who stops doing it?</li>
<li>Who owns the capability in production, with their name on the adoption metric?</li>
<li>Which existing meeting reviews it, on what clock?</li>
<li>What is the old path, and what is the plan to remove it for the cases the tool covers?</li>
</ul>
<p>None of those mention accuracy. A pilot that cannot answer them is funding a build and assuming diffusion is free; it never is. The work that closes the gap is  <a href="/blog/2026-06-18-new-talent-stack-for-ai-organizations/"
   
   >moving a capability from impressive to load-bearing</a>
: name the owner, put the adoption number in a standing review, and remove the old step for the cases the new one covers, until the assistant is the route people actually take.</p>
]]></content:encoded></item><item><title>The Board's AI Oversight Problem Is Operational</title><link>https://lawzava.com/blog/2026-08-13-board-ai-oversight-is-operational/</link><pubDate>Thu, 13 Aug 2026 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-08-13-board-ai-oversight-is-operational/</guid><description>Board AI oversight is operational: a named owner per system, a rehearsed halt path, an incident threshold, and a failure rate you can defend.</description><content:encoded><![CDATA[<p><strong>The number that matters is rarely accuracy; it is how long a misbehaving system runs before someone with authority stops it.</strong> That interval is a P&amp;L line, and slow oversight is its own  <a href="/blog/2026-06-10-decision-latency-p-and-l-variable/"
   
   >decision latency that drags on margin and risk</a>
. A board that knows its error rate to two decimals but cannot name who halts the system, how fast, and at what cost has measured everything except the thing that bounds the loss.</p>
<p>So make those three answerable in calm, before the next bad week instead of during it. <em>Who</em> is a named owner per production system with an explicit halt path, not a committee that assembles after the damage. <em>How fast</em> is the elapsed time from the first bad signal to the system actually pulled, and that only shrinks if the halt is rehearsed rather than improvised. <em>At what cost</em> is the incident threshold agreed in advance: which incidents reach the room, and what the firm is willing to forgo to pull the cord. Wire that into the cadence you already run, a short standing report and an owner who shows up, and you have  <a href="/blog/2026-05-07-ai-governance-without-bureaucracy/"
   
   >governance without bureaucracy</a>
. It is the lever a board can actually pull.</p>
<p>The full apparatus has four parts: a named owner per production system, an explicit halt path, a rule for which incidents reach the room, and a failure rate measured the same way every quarter. The first three are easy to recite. The failure rate is genuinely hard, and it is exactly where boards get fooled.</p>
<p>The fooling arrives on a slide: the AI system&rsquo;s error rate fell from 2.1% to 1.7%. Heads nod, the program looks healthy, the meeting moves on. Both figures are closer to fiction than measurement, and a board that cannot say why has not overseen anything. It has been shown a chart.</p>
<h2 id="why-the-same-way-every-quarter-is-the-hard-part">Why &ldquo;the same way every quarter&rdquo; is the hard part</h2>
<p>A non-deterministic system has no error rate to read off a gauge. The same input yields different outputs. The model version changes under you, the traffic mix shifts, and the humans grading &ldquo;wrong&rdquo; quietly revise what wrong means. So 1.7% is the product of a dozen choices: which outputs were sampled, how many, against what rubric, judged by whom. A defensible number pins all of them down.</p>
<ul>
<li>A frozen definition of failure, written as a rubric a grader applies, with inter-rater agreement tracked so the bar does not drift loose over time.</li>
<li>A fixed sampling rule: N items drawn fresh from live traffic each quarter, never a static test set. The moment engineers know which prompts are scored, they teach to the test and the rate detaches from reality.</li>
<li>A confidence interval next to the point estimate. On a few hundred samples, 2.1% to 1.7% sits inside the noise band, and presenting it as progress is the lie the slide tells.</li>
<li>A re-baseline rule: when the rubric or the sample changes, run old and new on one overlap quarter and report both, so the trend is not an artifact of moving the goalposts.</li>
</ul>
<p>One trap catches the diligent.  <a href="/blog/2026-07-16-your-benchmarks-are-lying-to-you/"
   
   >A frozen golden set goes stale</a>
; as the world drifts it stops resembling live traffic and starts flattering you. The defense is to watch the gap between your scored sample and a fresh live sample, and treat divergence as a signal the metric is lying before the system is. A board does not run this machinery; that is the IC&rsquo;s standard to meet. The board asks the questions that prove someone did, and refuses a number that cannot answer them.</p>
<p>Which is why the usual oversight advice underwhelms. Get an AI expert on the board, run a literacy seminar, issue a principles memo: none of that tells a director whether 1.7% is real, and none of it shortens the halt. Education is a fine supplement and a dangerous substitute. The failure it breeds is specific, a roomful of directors who can define the risk fluently and still cannot intervene when it walks in.</p>
]]></content:encoded></item><item><title>Unsupervised</title><link>https://lawzava.com/blog/2026-08-12-unsupervised/</link><pubDate>Wed, 12 Aug 2026 09:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-08-12-unsupervised/</guid><description>Producing the work can be handed to a machine. Answering for it cannot. What an organization values when machines do most of the making, what people are for, and four things to try this week.</description><content:encoded><![CDATA[<p>Producing plausible work has become close to free. Knowing whether it is any good
has not. Undoing it has not. Answering for it has not. Deciding what deserves to
exist has not, and never was. The scarcity moved, and practices built for the old
one keep running with nothing behind them.</p>
<p>What the machines give back is not room to ship more. It is the chance to attempt
work that used to need a company, to serve people the old cost floor priced out,
and to spend a working life on the part of the work that is worth a life. A
company that spends the surplus on volume has been handed a decade and bought a
quarter with it.</p>
<p>Everything here turns on one thing. The work is how people get made. People are
not how the work gets made.</p>
<h2 id="what-i-value">What I value</h2>
<p><strong>Verifying</strong> over producing.</p>
<p><strong>Earned autonomy</strong> over granted autonomy.</p>
<p><strong>Enforced limits</strong> over declared intent.</p>
<p><strong>Doing the work</strong> over approving it.</p>
<p><strong>Judgment that compounds</strong> over output that repeats.</p>
<p><strong>Apprenticeship</strong> over throughput.</p>
<p><strong>Problems surfaced</strong> over progress reported.</p>
<p><strong>Independent sources that can disagree</strong> over one that cannot be wrong.</p>
<p>I want the right column too. What moved is where the scarcity sits.</p>
<h2 id="how-i-work">How I work</h2>
<p>A process nobody can check is not automated. It is unsupervised. The check comes
before the thing it protects: the test before the pipeline, the alarm before the
deploy, the dry run before the announcement.</p>
<p>Verification rises with the consequence of being wrong. Produce enough to learn
from someone real, verify enough to trust an act that repeats or cannot be taken
back, and where the work decides nothing, do neither.</p>
<p>Autonomy is earned with evidence and taken back the same way. For machines it
attaches to a step. For people it widens across a domain as their judgment earns
it, and narrows at the smallest place the evidence indicts. Nobody should live
permanently on probation. And evidence expires: what earned trust last year
describes last year&rsquo;s system, and nothing announces the change.</p>
<p>Nothing is done when it works. It is done when something checks it, an owner
carries the outcome, and the way back has been walked at least once. A rollback
nobody has rehearsed is a rumour.</p>
<p>Some work has no decisive check at a price anyone will pay. Mark it, keep people
on it, and never let a number stand in for what cannot be measured.</p>
<p>Nobody is the only source of evidence that they are doing the thing, and that
includes the machine that did it. You cannot feel whether the machine helped:
work goes faster in the hand and slower on the clock, and nobody has trained that
out of anyone.</p>
<p>Producing the work can be handed to a machine. Answering for it cannot. The
machine wrote it in a second and somebody carries it for a year.</p>
<p>Deciding to kill something is not killing it. It is alive for exactly as long as
its permissions still work.</p>
<p>Measure the system in public. Measure the person in private, and publish who did
the measuring, on what evidence, and who can overturn it. Pay and promote for
judgment under uncertainty, for spreading what works, and for carrying what does
not.</p>
<h2 id="what-people-are-for">What people are for</h2>
<p>Every time a machine takes the making from someone, they are owed a harder
question and not a smaller job. If the harder question does not come with more
standing, it was a smaller job with better words.</p>
<p>Beginner&rsquo;s work is what made the expert, and it is disappearing. Give that work
to beginners anyway, because a trade that admits nobody has stopped being a
trade. A company that ships more this year and can make fewer experts than last
year has eaten capital and called it margin. No dashboard you already have will
show it, so count the people you took from beginner to independent and publish
that beside what you shipped.</p>
<p>Refuse work whose value depends on weakening the agency of the people it touches.
Such work can be profitable and perfectly controlled. Whether its success is
worth causing is the question, and it is asked before the controls and not
after. Between two things
you could build and defend, build the one that leaves people more able to act
without you.</p>
<p>Anyone a decision lands on can reach a person who can explain it and change it.
Not because the machine is often wrong, but because being processed by something
that cannot be asked is a harm at any error rate.</p>
<p>If the work is handed to you rather than by you, all of that is what somebody
owes you: work that can go wrong, a harder question when a machine takes the
making, a name and a route when a decision goes against you. Ask for them by
name. Asking is not insubordination, and if it is treated as insubordination
where you are, you have your answer on your first day instead of in your third
year.</p>
<h2 id="where-to-start">Where to start</h2>
<p>None of this needs agreeing with first. Four things are doable this week, and
each hands back its own evidence.</p>
<p>Ship one change only after a check you did not write.</p>
<p>Before you let anything run on its own, walk the way back once, by hand. You will
find a rollback or you will find a rumour.</p>
<p>Find something you declared dead last year and try its permissions. Whatever
still answers was never killed.</p>
<p>Put a name and a route on one automated decision that lands on people, and ask
the ones it went against whether they were told anything they could use.</p>
<p>Then stop doing them as an audit, because an audit is a thing you pass. Each one
is fastened to a moment in the work and comes back when the moment does: a check
you did not write, every time something ships whose failure would cost you; the
way back walked, every time something is trusted to run alone; the permissions
tried, every time something is retired; a name and a route, every time a decision
lands on a person.</p>
<h2 id="how-you-would-know-i-am-wrong">How you would know I am wrong</h2>
<p>Every line above should be a bet, and a bet that cannot lose is not a bet. A test
has to be losable by the line being wrong rather than by the world moving, so a
clause that fires when the machine improves is a timer and not a bet. These five
are mine. Where a line here has no test yet, that is a debt I owe and not a
privilege I am claiming.</p>
<p>Verifying is misplaced when the work you checked went wrong as often as the work
you let through.</p>
<p>Earning is theatre when what you trusted on sight held up as well as what you
made climb for it.</p>
<p>Apprenticeship is sentiment when people who were never given work that could go
wrong turn out able to make the same calls unaided as the people who were.</p>
<p>Refusing is posturing when the work you came closest to turning down, and built
anyway, left the people it touched more able to act than your safer work did.</p>
<p>The reachable person is a courtesy when the people who had a decision go against
them used it and said the wait was not worth it.</p>
<p>When one of these arrives, the failure counts against the line and not against
you for having believed it. Drop it and say so.</p>
<h2 id="how-this-dies">How this dies</h2>
<p>The last manifesto did not die. It won, and was hollowed out, which is worse. It
spread as vocabulary while behaviour stayed home, and its heirs made it immune,
so no failure could count against it. A method that explains every failure as
incomplete adoption has arranged never to learn.</p>
<p>So if these words arrive and no decision changes, they failed there. And if most
of this does not survive contact with your organization, it was wrong about your
organization. A manifesto that cannot be wrong is not a manifesto. It is a
liturgy.</p>
<p>Correct me rather than quote me.</p>
]]></content:encoded></item><item><title>Leading Senior Engineers in the AI Era: Autonomy, Standards, and Accountability</title><link>https://lawzava.com/blog/2026-07-14-leading-senior-engineers-ai-era/</link><pubDate>Tue, 14 Jul 2026 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-07-14-leading-senior-engineers-ai-era/</guid><description>Leading senior engineers on AI features: a written definition of done with an owned eval, a named failure mode, a rollback drill, and a paging threshold.</description><content:encoded><![CDATA[<p>A support assistant drafted forty refunds last quarter against a policy clause that had been retired three weeks earlier. The drafts read clean, reviewers approved most of them, and nobody could say which day the drift started. The code had passed review. The tests were green. The model did exactly what it was built to do, on context that had gone stale underneath it.</p>
<p>That is the output a senior engineer now owns: something a model produced that the owner cannot fully explain. The management question is no longer &ldquo;did you write good code.&rdquo; It is &ldquo;how do you know the thing you didn&rsquo;t write is safe to turn on.&rdquo; The owner ships when four things are true, in writing, and each carries a number they can defend.</p>
<p><strong>It clears an owned eval on the unhappy paths.</strong> Not a vibe check but 200 cases the owner curated by hand: refund requests phrased as threats, tickets in the wrong language, prompt-injection pasted from a customer email, accounts with conflicting prior promises. The bar is 95% on that adversarial set, not 99%. Above 95% on a set this small you are usually overfitting: the cases have leaked into prompts, or the team has tuned to the test. Set it where the residual failures are ones the reviewer reliably catches. And the set rots on purpose: every production escalation becomes a new case, a tenth rotate out monthly, the owner holding back cases never tuned against. A frozen eval is a demo with a number on it; closing that gap is  <a href="/blog/2026-04-23-ai-evaluation-maturity/"
   
   >evaluation maturity</a>
.</p>
<p><strong>Its top failure mode is named, with a detection signal.</strong> Here the mode is &ldquo;confidently drafts a refund the policy forbids.&rdquo; The signal is specific: a sampled audit comparing drafted amount against the policy ceiling, plus a flag whenever the draft cites a policy section that does not exist. If the owner cannot say what it most often gets wrong and how a dashboard would surface it, they have not found the failure mode. They have hoped there isn&rsquo;t one.</p>
<p><strong>Rollback has been exercised, not documented.</strong> Someone  <a href="/blog/2021-09-06-feature-flags-at-scale/"
   
   >flipped the flag</a>
 back to human-only handling in production last week, watched the queue drain, and confirmed nothing leaked. A rollback that has only ever lived in a runbook is a guess, and you discover it is wrong during the  <a href="/blog/2026-06-02-ai-incident-review-changes-architecture/"
   
   >incident</a>
, which is the worst possible time to learn.</p>
<p><strong>The escalation threshold is a number you can measure.</strong> Edit rate is easy: page if the reviewer rewrites more than 50% of drafts, because past half the assistant manufactures review work instead of removing it, and the unit economics have inverted. Stale context, the opening refund, is the hard one, so you instrument it rather than assert it. Every draft logs the version of each source it pulled: the policy revision, the read-time of the account record. At audit you label a draft stale when a source it relied on had already been superseded by the time the human acted: the policy version cited is no longer live. Sample a few hundred a day and you have a rate. Page at 3% over a rolling 1,000, because at a 95% review catch rate, 3% stale drafts put roughly 0.15% in front of a customer: the leak you decided you could afford. Raise the catch rate and you earn the right to raise the threshold.</p>
<p>None of this requires reading code to inspect, which makes it the board&rsquo;s lever, not the team&rsquo;s secret. Ask for the written definition-of-done for your single most important AI feature: which pass rate on which cases, which named failure mode, which rollback drill, which paging number, and the one name accountable for it. If what comes back is vague, the vagueness is not a documentation gap. It is the failure mode, still unnamed, and you have located your largest AI risk, which most oversight never does. Leading seniors is now mostly making that document exist, owned by one person, and boring, because every blank still interesting is a place the system can fail with no agreed way to know.</p>
]]></content:encoded></item><item><title>The Anti-Fragile AI Organization</title><link>https://lawzava.com/blog/2026-07-02-anti-fragile-ai-organization/</link><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-07-02-anti-fragile-ai-organization/</guid><description>A warm LLM fallback is a standing cost that needs an owner. Price portability per feature, and turn each vendor shock into a capability you keep.</description><content:encoded><![CDATA[<p>Almost nobody runs a working fallback, and the reason is never ignorance. Strip away Taleb&rsquo;s vocabulary and the prescription underneath is thirty years old: invert your dependencies,  <a href="/blog/2024-03-18-multi-model-strategies/"
   
   >hide the vendor behind an interface</a>
, keep a fallback ready. Hexagonal architecture had a name before anti-fragility did. The engineering is not the hard part, and pretending it is wastes your time. What actually defeats the fallback is that a warm second provider is a tax somebody has to keep paying, and taxes with no owner do not get paid.</p>
<p>Keeping a provider genuinely warm is a standing cost, not a build. Your eval suite has to pass green against both providers on every prompt change. You maintain two sets of golden outputs. When one provider alters its tool-call encoding or its structured-output mode, you eat the fix to keep the boundary honest. Budget it as a fixed slice of the boundary team&rsquo;s capacity, indefinitely, plus the inference spend of the shadow runs. If that line item lives in no one&rsquo;s plan, you do not have a fallback. You have an aspiration and a grep result.</p>
<p>The boundary also leaks exactly where the value is. Constrained JSON-schema output on one provider becomes &ldquo;ask for JSON and parse defensively&rdquo; on another. Parallel tool calls on one go sequential on the other. Context limits, safety-filter behavior, and per-token economics differ enough that the same prompt yields a different product. A boundary that hides all of this can only promise the intersection, which means the price of portability is the provider-specific capability you surrendered to get it. That is a real trade, and it has a rule rather than a vibe: the critical path stays portable and dumb and carries a green fallback; a differentiating feature is allowed to depend on one provider, and in place of a fallback it carries a written number for what re-homing it would cost. Decide it per feature, on purpose, not by default.</p>
<p>Then the shock arrives. A vendor doubles the price effective next cycle. Three weeks of runway. You will not build a clean adapter across forty call sites in three weeks with a price gun to your head, and any plan that assumes otherwise is the fragile response in disguise. What three weeks actually buys is narrower and worth more: wrap the one critical path, get its fallback eval green, flip a slice of traffic, and write down the leaks you punted and what the other thirty-nine sites would cost. You solved the price problem. You also keep a swap that is now an afternoon on that path and a costed map of the rest, and the next path is cheaper because the scaffolding exists. That is the difference between robust and anti-fragile: surviving versus walking away holding a capability the shock paid for.</p>
<p>That capability never accumulates if the work sits in one team, and the reason is structural, not a lack of will. One group owns the model integration, the eval harness, the prompt registry, and the  <a href="/blog/2026-05-14-why-ai-platform-teams-become-bottlenecks/"
   
   >pager</a>
. A shock arrives, the same five people absorb it, restore service, close the ticket. That is not an organization. That is a single point of failure the org chart happens to call a department. Restoring service and  <a href="/blog/2026-06-02-ai-incident-review-changes-architecture/"
   
   >changing the architecture</a>
 so the next shock is cheaper are two different jobs, and the second needs the slack the on-call team just spent surviving the first. The conversion never happens, because the people who could do it are holding the pager.</p>
<p>So split the jobs. On-call restores service. The conversion is a tracked deliverable owned by someone off the pager that week, with the fallback&rsquo;s carrying cost funded in their plan, not scavenged from spare time. Then push the portability decision down: the boundary team owns the shared interface and harness, but each product team owns its path&rsquo;s portability budget and pays to keep that path&rsquo;s fallback green. The work spreads to the people who own the paths instead of bottlenecking on five, and the authority to flip the switch sits with the team that owns the consequence.</p>
<p>The morning after any shock, that machinery has either left something behind or it has not. You are holding a warm path you can split traffic onto, an eval that catches the failure class that just bit you, a  <a href="/blog/2026-06-09-ai-vendor-negotiation-playbook/"
   
   >renegotiated contract with an exit clause</a>
: concrete things that were not there the week before. Or you are holding none of them. &ldquo;We got through it and went back to normal&rdquo; is the second case: service restored, full freight paid, not one green eval or warm path added that lowers the price of the next hit.</p>
]]></content:encoded></item><item><title>The Post-Prototype AI Org: Operating Models That Survive Year Two</title><link>https://lawzava.com/blog/2026-06-10-post-prototype-ai-org/</link><pubDate>Wed, 10 Jun 2026 12:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-06-10-post-prototype-ai-org/</guid><description>Year-two AI failure usually comes from org-design mismatch, not model-quality mismatch. The handoffs are where the system slows down.</description><content:encoded><![CDATA[<p>A lot of AI orgs look healthy in month three and brittle by year two. The model usually did not fail. The operating model did. Prototype energy is easy to create; durable coordination is not. Any team can ship something exciting once. The year-two question is whether the company can keep shipping after the novelty fades.</p>
<h2 id="why-the-prototype-phase-hides-the-real-problem">Why the prototype phase hides the real problem</h2>
<p>In the early phase, AI teams often succeed because everyone is close to the work. Decisions are informal, context is shared, and the whole system fits in a few people’s heads. That stops scaling almost immediately.</p>
<p>As soon as the team grows, the same strengths turn into liabilities:</p>
<ul>
<li>knowledge becomes hidden</li>
<li>approvals multiply</li>
<li>handoffs slow down</li>
<li>nobody owns the  <a href="/blog/2026-06-10-ai-leadership-bench-roles-interfaces/"
   
   >interface boundaries</a>
</li>
</ul>
<p>What worked when the team was small no longer works when the company needs predictability.</p>
<h2 id="the-operating-model-should-be-explicit">The operating model should be explicit</h2>
<p>A post-prototype AI org needs to define how work moves.</p>
<p>The model should answer:</p>
<ul>
<li>who owns the user problem?</li>
<li>who owns the runtime?</li>
<li>who owns the quality signal?</li>
<li>who owns the  <a href="/blog/2026-05-07-ai-governance-without-bureaucracy/"
   
   >risk boundary</a>
?</li>
<li>who can stop the release?</li>
</ul>
<p>Without those answers, the team is improvising around gaps that will eventually become incidents or delays.</p>
<h2 id="handoffs-are-the-hidden-bottleneck">Handoffs are the hidden bottleneck</h2>
<p>Most  <a href="/blog/2026-05-28-ai-roadmaps-survive-reality/"
   
   >AI roadmaps</a>
 do not fail because the team lacks ideas. They fail because each handoff adds ambiguity.</p>
<p>The problem shows up in predictable places:</p>
<ul>
<li>product asks for speed, platform asks for safety</li>
<li>applied AI wants more freedom, compliance wants more proof</li>
<li>leadership wants output, the system wants more control</li>
</ul>
<p>That tension is normal. What is not normal is leaving it unresolved.</p>
<p>A good operating model turns tension into a documented interface, not a recurring crisis.</p>
<h2 id="scale-requires-fewer-heroics">Scale requires fewer heroics</h2>
<p>The post-prototype org has to depend less on heroic behavior and more on repeatable behavior.</p>
<p>That usually means:</p>
<ul>
<li>clearer ownership</li>
<li> <a href="/blog/2026-06-10-decision-latency-p-and-l-variable/"
   
   >smaller decision surfaces</a>
</li>
<li>stronger  <a href="/blog/2026-04-23-ai-evaluation-maturity/"
   
   >eval gates</a>
</li>
<li>visible  <a href="/blog/2026-05-14-build-the-system-the-model-cannot-break/"
   
   >rollback paths</a>
</li>
<li>fewer ambiguous exceptions</li>
</ul>
<p>This can feel slower at first, but it is the only way the org gets faster at scale.</p>
<h2 id="a-simple-test">A simple test</h2>
<p>Ask whether the AI system can survive a senior person going on vacation for two weeks.</p>
<p>If the answer is “not really,” the organization is still running on hidden tribal knowledge.</p>
<p>If the answer is “yes, with documented ownership and a stable operating model,” the company is moving from prototype to production.</p>
<p>That is the real year-two test.</p>
]]></content:encoded></item><item><title>The Operating Cadence: Turning AI Leadership Interfaces Into Predictable Output</title><link>https://lawzava.com/blog/2026-06-10-operating-cadence-ai-leadership-interfaces/</link><pubDate>Wed, 10 Jun 2026 11:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-06-10-operating-cadence-ai-leadership-interfaces/</guid><description>Leadership interfaces decay without rhythm. A weekly metrics review, monthly outcome review, and quarterly architecture audit keep AI ownership real.</description><content:encoded><![CDATA[<p>A  <a href="/blog/2026-06-10-ai-leadership-bench-roles-interfaces/"
   
   >bench with clear interfaces</a>
 is a necessary foundation, but on its own it does not compound. Without rhythm, documented ownership drifts back into informal updates, and informal updates beat formal ones right up until they don&rsquo;t. Cadence is the mechanism that keeps interfaces load-bearing.</p>
<h2 id="interfaces-without-cadence-degrade">Interfaces Without Cadence Degrade</h2>
<p>When a team documents who owns what, the clarity is real for a few weeks. Then the pace picks up, the weekly sync gets skipped once, and the product owner starts resolving platform questions directly because it is faster. The interface is still on paper. It is no longer operational.</p>
<p>This is the failure mode that connects a well-designed bench to a  <a href="/blog/2026-06-10-post-prototype-ai-org/"
   
   >year-two org</a>
 that is back to improvising. Nobody dismantled the system. They just stopped running it.</p>
<p>Formal coordination loses to informal coordination every time informal coordination has lower friction. The only fix is making the formal cadence the path of least resistance: keep it short, metric-anchored, and non-negotiable.</p>
<h2 id="the-three-cadences-that-compound">The Three Cadences That Compound</h2>
<p>Three rhythms cover the full operating surface of a scaling AI program.</p>
<p><strong>Weekly operating cadence:</strong> 30 minutes, same metrics every cycle. Latency, error rate,  <a href="/blog/2026-04-23-ai-evaluation-maturity/"
   
   >eval scores</a>
, blocked work. The point is signal, not status. Any metric outside its threshold triggers an owner, not a discussion. If nothing is outside threshold, the meeting ends early.</p>
<p><strong>Monthly outcome review:</strong> 90 minutes, owners present against targets set the previous month. What moved, what did not, what is at risk next month. This is where product and platform tradeoffs surface before they become incidents. Governance owner attends. Decisions are recorded with the owner and the date.</p>
<p><strong>Quarterly architecture audit:</strong> half day, forward-looking. Where is the system accumulating hidden cost? What capability investment is being deferred? What would break first if the load doubled? The audit produces a short list of bets for the next quarter, not a roadmap deck.</p>
<p>Each cadence locks in a different time horizon. Weekly locks in operational latency. Monthly locks in outcome reliability. Quarterly locks in capability investment. Together they cover the full range from &ldquo;is anything on fire today&rdquo; to &ldquo;are we building toward where the load is going.&rdquo;</p>
<h2 id="what-each-cadence-prevents">What Each Cadence Prevents</h2>
<p>The weekly cadence prevents  <a href="/blog/2025-11-10-ai-incident-management/"
   
   >alert fatigue</a>
 from becoming normalized degradation. Teams that skip it tend to discover the same problems later, at higher cost, under more pressure.</p>
<p>The monthly review prevents the gap between product ambition and platform reality from widening silently. That gap is where most  <a href="/blog/2026-05-28-ai-roadmaps-survive-reality/"
   
   >AI roadmap slippage</a>
 hides. By the time it is visible to leadership, it is already a quarter behind.</p>
<p><em>Cadence does not eliminate incidents. It shortens  <a href="/blog/2026-06-10-decision-latency-p-and-l-variable/"
   
   >the distance between a signal and a decision</a>
.</em></p>
<p>The quarterly audit prevents  <a href="/blog/2026-06-02-ai-incident-review-changes-architecture/"
   
   >incident-driven re-architecture</a>
. The single most expensive pattern in scaling AI programs is emergency redesign under production pressure. Orgs that run a quarterly audit tend to make the same architectural changes earlier, cheaper, and with less organizational disruption. The audit guarantees nothing. It forces the conversation that should happen before the crisis.</p>
<h2 id="the-predictability-test">The Predictability Test</h2>
<p>A cadence is working when the team can answer one question before the quarter ends: what is the most likely bottleneck next quarter, and who owns the intervention?</p>
<p>It is a structural test. If nobody can answer it, the cadence is collecting status but not producing foresight. The monthly reviews are not surfacing risk early enough, or the quarterly audit is not connected to the weekly signal.</p>
<p>If the team can answer it, even roughly, the cadence is compounding. The interfaces are being exercised on a predictable rhythm, and that rhythm is generating the kind of organizational memory that makes year-two scale possible without heroics.</p>
]]></content:encoded></item><item><title>Designing the AI Leadership Bench: Roles, Interfaces, and Failure Boundaries</title><link>https://lawzava.com/blog/2026-06-10-ai-leadership-bench-roles-interfaces/</link><pubDate>Wed, 10 Jun 2026 10:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-06-10-ai-leadership-bench-roles-interfaces/</guid><description>Scaling AI needs a leadership bench: named owners for product, platform, applied AI, and governance, with failure handoffs rehearsed before incidents.</description><content:encoded><![CDATA[<p> <a href="/blog/2026-05-21-ai-technical-leadership/"
   
   >AI leadership</a>
 fails when the interfaces between leaders are missing, and more senior titles do not supply them. A real leadership bench is the decision system connecting product, platform, reliability, and governance. If those seams are unclear, incidents turn into organizational confusion before they become technical recovery.</p>
<h2 id="a-bench-is-an-interface-map">A Bench Is an Interface Map</h2>
<p>Many companies think “strong bench” means “we hired senior people.” That is necessary, but not sufficient.</p>
<p>A working bench answers four questions without debate:</p>
<ul>
<li>who owns product tradeoffs</li>
<li>who owns platform reliability</li>
<li>who owns  <a href="/blog/2026-05-07-ai-governance-without-bureaucracy/"
   
   >model governance</a>
 and risk boundaries</li>
<li>who owns escalation when those priorities collide</li>
</ul>
<p>If the answers depend on who is online that day, the bench is not operational.</p>
<h2 id="core-roles-and-decision-rights">Core Roles and Decision Rights</h2>
<p>The exact titles vary. The interfaces should not.</p>
<p><strong>Product owner:</strong> accountable for business outcome and adoption targets.</p>
<p><strong>Platform owner:</strong> accountable for safe defaults,  <a href="/blog/2025-03-31-ai-observability-deep/"
   
   >observability</a>
, and deployment reliability.</p>
<p><strong>Applied AI owner:</strong> accountable for workflow behavior, routing, and  <a href="/blog/2026-04-23-ai-evaluation-maturity/"
   
   >evaluation quality</a>
.</p>
<p><strong>Governance owner:</strong> accountable for explicit, reviewable risk boundaries.</p>
<p>The goal is unambiguous ownership when tradeoffs are real.</p>
<h2 id="failure-boundaries-beat-hero-culture">Failure Boundaries Beat Hero Culture</h2>
<p>Healthy leadership systems plan for predictable stress cases instead of hoping for heroic response.</p>
<p>Define boundary behavior for events like:</p>
<ul>
<li>model quality degradation</li>
<li>vendor policy or terms changes</li>
<li>quiet workflow failure that evades basic monitoring</li>
<li>loss of a  <a href="/blog/2026-05-26-hiring-operators-for-ai-teams/"
   
   >key operator</a>
</li>
</ul>
<p>If those handoffs are documented and rehearsed, incidents stay technical. If not, incidents become political.</p>
<p>One reliable warning sign: one person is expected to explain the full system from memory. That is not a bench. That is a single point of organizational failure.</p>
<h2 id="how-to-build-the-bench-in-practice">How to Build the Bench in Practice</h2>
<p>Make interfaces concrete and testable:</p>
<ul>
<li>document what each owner can decide without escalation</li>
<li>define escalation thresholds for speed vs reliability vs governance conflicts</li>
<li>map core metrics to the leader who can actually move them</li>
<li>rehearse  <a href="/blog/2026-06-02-ai-incident-review-changes-architecture/"
   
   >incident handoffs</a>
 before live incidents force improvisation</li>
</ul>
<p>This is operational hygiene.</p>
<p><strong>Design boundaries before you design org charts.</strong></p>
]]></content:encoded></item><item><title>Decision Latency as a P&amp;L Variable: The Leadership Metric Nobody Owns</title><link>https://lawzava.com/blog/2026-06-10-decision-latency-p-and-l-variable/</link><pubDate>Wed, 10 Jun 2026 09:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-06-10-decision-latency-p-and-l-variable/</guid><description>Slow decisions are a hidden cost. How to measure decision latency, from issue to decision to action, and cut it with clear ownership of decision classes.</description><content:encoded><![CDATA[<p>Slow decisions look like caution. In practice, they are hidden expense, and decision latency belongs on the P&amp;L. Every day a real decision sits unresolved, the business pays in delay, rework, and attention.</p>
<h2 id="why-decision-latency-matters">Why Decision Latency Matters</h2>
<p>A team can  <a href="/blog/2026-05-05-measure-ai-progress-without-theater/"
   
   >look productive</a>
 and still be dragging the business down if every meaningful decision takes too long.</p>
<p>Decision latency shows up as:</p>
<ul>
<li>stalled launches</li>
<li>expired opportunities</li>
<li>duplicated work</li>
<li>growing frustration in the teams closest to the customer</li>
</ul>
<p>When leaders do not measure this, they blame execution when the real problem is delay. The work may be moving. The organization is not.</p>
<h2 id="what-decision-latency-looks-like-in-practice">What Decision Latency Looks Like in Practice</h2>
<p>You can usually find it by asking a few questions:</p>
<ul>
<li>How long does a high-signal issue sit before someone decides?</li>
<li>How many people need to weigh in before the first answer exists?</li>
<li>How often do decisions get reopened because no one owned the original call?</li>
<li>How much work is blocked waiting for alignment that never arrives?</li>
</ul>
<p>They sound soft. Each one has an economic answer.</p>
<p>If a release,  <a href="/blog/2026-05-26-hiring-operators-for-ai-teams/"
   
   >hiring decision</a>
,  <a href="/blog/2026-06-09-ai-vendor-negotiation-playbook/"
   
   >vendor decision</a>
, or  <a href="/blog/2026-06-02-ai-incident-review-changes-architecture/"
   
   >architecture decision</a>
 sits for weeks, the business is paying rent on uncertainty.</p>
<p><strong>Ambiguous ownership is the most expensive architecture in your company.</strong></p>
<h2 id="make-it-visible">Make It Visible</h2>
<p>If you want leaders to care, make the metric visible.</p>
<p>Track:</p>
<ul>
<li>time from issue raised to decision made</li>
<li>time from decision made to action taken</li>
<li>number of escalations per decision class</li>
<li>number of decisions reopened after approval</li>
</ul>
<p>Once those numbers are in the open, patterns become hard to deny. You can see which teams move fast, which questions keep getting rerouted, and where the organization is burning time on decisions that should have been routine.</p>
<h2 id="how-to-reduce-it">How to Reduce It</h2>
<p>Decision latency drops when teams do four things well:</p>
<ol>
<li>Define  <a href="/blog/2026-06-10-ai-leadership-bench-roles-interfaces/"
   
   >who owns each decision class</a>
.</li>
<li>Set  <a href="/blog/2026-05-07-ai-governance-without-bureaucracy/"
   
   >decision boundaries</a>
 before the crisis.</li>
<li>Reduce the number of people required for routine calls.</li>
<li>Make escalation fast when the decision is truly material.</li>
</ol>
<p>None of this means making every decision unilateral. Routine decisions should be quick, and risky ones explicit.</p>
<p>If the call is small, the system should move. If the call is material, the system should know exactly who has to weigh in.</p>
]]></content:encoded></item><item><title>How to Run an AI Incident Review That Changes Architecture, Not Slides</title><link>https://lawzava.com/blog/2026-06-02-ai-incident-review-changes-architecture/</link><pubDate>Tue, 02 Jun 2026 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-06-02-ai-incident-review-changes-architecture/</guid><description>An AI incident review is done when it changes architecture, evals, alerting, or ownership. An eight-part template that ends in fixes, owners, and dates.</description><content:encoded><![CDATA[<p>An AI incident review is only useful if it changes the system: its architecture, its evaluation, or its  <a href="/blog/2026-05-07-ai-governance-without-bureaucracy/"
   
   >control boundaries</a>
. Anything else is a postmortem-shaped meeting, and the organization has paid for ceremony and learned too little.</p>
<h2 id="the-point-of-an-incident-review">The Point of an Incident Review</h2>
<p>An incident review exists to answer four questions, and &ldquo;who is to blame&rdquo; is not one of them:</p>
<ul>
<li>what failed</li>
<li>why it failed</li>
<li>how we knew</li>
<li>what should change so it fails differently next time</li>
</ul>
<p>If that last step is missing, the review is incomplete.</p>
<h2 id="what-good-reviews-produce">What Good Reviews Produce</h2>
<p>A strong incident review should produce concrete outputs:</p>
<ul>
<li>a change to architecture</li>
<li>a change to  <a href="/blog/2026-04-23-ai-evaluation-maturity/"
   
   >evaluation coverage</a>
</li>
<li>a change to  <a href="/blog/2025-03-31-ai-observability-deep/"
   
   >alerting or observability</a>
</li>
<li>a change to access or  <a href="/blog/2026-05-14-build-the-system-the-model-cannot-break/"
   
   >fallback policy</a>
</li>
<li>a change to ownership or escalation rules</li>
</ul>
<p>If the only output is a slide deck, the organization is optimizing for closure.</p>
<p>The cleanest signal is whether the same class of incident can happen again. If it can, the review was not done.</p>
<h2 id="how-ai-incidents-are-different">How AI Incidents Are Different</h2>
<p> <a href="/blog/2025-11-10-ai-incident-management/"
   
   >AI incidents</a>
 often degrade quietly long before they trigger a loud outage.</p>
<p>The symptoms may be:</p>
<ul>
<li>degraded answer quality</li>
<li>increased retries</li>
<li>hallucinated outputs that look plausible</li>
<li>cost spikes hiding inside normal traffic</li>
<li>users losing trust before the team notices</li>
</ul>
<p>That means incident reviews need to look at both user impact and system behavior. You cannot fix what you did not measure.</p>
<p>Incidents tell you where the system was  <a href="/blog/2026-04-21-enterprise-ai-architecture-fails/"
   
   >more fragile than the architecture review admitted</a>
.</p>
<h2 id="a-useful-review-template">A Useful Review Template</h2>
<p>A practical review should cover:</p>
<ol>
<li>the triggering event</li>
<li>the timeline</li>
<li>the technical failure mode</li>
<li>the business impact</li>
<li>the monitoring gap</li>
<li>the architectural fix</li>
<li>the owner of the fix</li>
<li>the follow-up verification date</li>
</ol>
<p>That is enough to keep the review grounded and actionable.</p>
<p>A  <a href="/blog/2021-11-29-incident-management-practices/"
   
   >postmortem</a>
 without system change is paperwork.</p>
<p>The template is simple on purpose. If the review cannot name the control that changes, the meeting was too abstract.</p>
]]></content:encoded></item><item><title>AI Roadmaps That Survive Contact With Reality</title><link>https://lawzava.com/blog/2026-05-28-ai-roadmaps-survive-reality/</link><pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-05-28-ai-roadmaps-survive-reality/</guid><description>AI roadmaps fail when they are sequenced around ambition instead of dependency, verification, and rollback cost.</description><content:encoded><![CDATA[<p>AI roadmaps fail when ambition is treated as sequencing. Dependencies slip, rollback gets expensive, and the team discovers the missing work only after the launch date is already spoken for.</p>
<p>A survivable roadmap is not a prettier Gantt chart. It is a dependency-aware budget for uncertainty.</p>
<h2 id="roadmaps-fail-at-the-edges">Roadmaps Fail at the Edges</h2>
<p>The core mistake is treating the roadmap like a statement of intent instead of a statement of sequencing.</p>
<p>AI work fails at the edges:</p>
<ul>
<li>data access is slower than expected</li>
<li>model behavior is less stable than expected</li>
<li>review cycles take longer than expected</li>
<li>vendor changes arrive earlier than expected</li>
</ul>
<p>If your roadmap does not account for those edges, it is not a plan. It is a confidence exercise.</p>
<p>The fix is to move the hidden work into the plan before the promise is made.</p>
<h2 id="budget-the-dependency-chain">Budget the Dependency Chain</h2>
<p>Every AI feature has a dependency chain:</p>
<ul>
<li>data availability</li>
<li> <a href="/blog/2024-07-22-context-window-strategies/"
   
   >context assembly</a>
</li>
<li> <a href="/blog/2024-03-18-multi-model-strategies/"
   
   >model routing</a>
</li>
<li>evaluation</li>
<li>deployment</li>
<li>fallback</li>
</ul>
<p>If any one of those links is not ready, the feature will not survive real use.</p>
<p>If the chain is incomplete, the roadmap is lying by omission.</p>
<p>The most honest roadmap is the one that writes the chain down first. That slows the conversation, but it also keeps the team from selling a feature that depends on work nobody has budgeted.</p>
<p>Slower conversations are cheaper than broken launches.</p>
<h2 id="make-rollback-a-first-class-requirement">Make Rollback a First-Class Requirement</h2>
<p>Good roadmaps assume the first version will be wrong.</p>
<p>That means every AI initiative should answer four questions:</p>
<ul>
<li>How do we turn this off?</li>
<li> <a href="/blog/2025-03-31-ai-observability-deep/"
   
   >How do we know it is hurting us?</a>
</li>
<li>How fast can we revert?</li>
<li>What manual path exists if the model degrades?</li>
</ul>
<p>If those answers are fuzzy, the roadmap is overconfident.</p>
<p>If you cannot turn it off quickly, you have  <a href="/blog/2026-05-14-build-the-system-the-model-cannot-break/"
   
   >shipped a liability with a product label</a>
.</p>
<p>Roadmaps should not only describe the happy path. They should budget for the probability that the first version is wrong, the vendor changes terms, or the model regresses under load.</p>
<h2 id="wip-limits-matter-more-than-hope">WIP Limits Matter More Than Hope</h2>
<p>A roadmap that promises too many parallel AI experiments is usually a roadmap that does not respect WIP.</p>
<p>The more novel the work, the lower the WIP should be.</p>
<p>Concurrency feels productive until it multiplies rework.</p>
<p>Strong teams set rules like:</p>
<ul>
<li>no more than one high-risk AI launch per squad at a time</li>
<li>no feature ships without  <a href="/blog/2026-04-23-ai-evaluation-maturity/"
   
   >evaluation coverage</a>
</li>
<li>no vendor migration without a fallback path</li>
<li>no roadmap item enters “done” until the operational notes exist</li>
</ul>
<p>That may sound strict. It is. Novel work punishes loose concurrency.</p>
<h2 id="what-a-survivable-roadmap-looks-like">What a Survivable Roadmap Looks Like</h2>
<p>Survivable roadmaps are dependency-explicit, rollback-aware, and honest about capacity.</p>
<p>A roadmap is not a promise. It is a bet with visible failure modes.</p>
<p>If the failure modes are invisible, the roadmap is pretending.</p>
<p>You do not need a roadmap that impresses the room. You need one the organization can execute without pretending the hard parts are somebody else&rsquo;s problem.</p>
]]></content:encoded></item><item><title>Hiring for AI Teams: The Operator Profile That Scales</title><link>https://lawzava.com/blog/2026-05-26-hiring-operators-for-ai-teams/</link><pubDate>Tue, 26 May 2026 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-05-26-hiring-operators-for-ai-teams/</guid><description>The AI hires that scale are operators who handle ambiguity, systems tradeoffs, and verification pressure. Four traits and four interview questions.</description><content:encoded><![CDATA[<p>The best AI hires are operators: people who can turn ambiguity into a system, make the failure mode legible, and keep shipping when the first answer is wrong. Narrating the model stack is a different, cheaper skill.</p>
<p>That is why judgment matters more than hype. Teams that hire for excitement get enthusiastic meetings. Teams that hire for operator discipline get leverage.</p>
<h2 id="the-operator-profile">The Operator Profile</h2>
<p>Strong AI operators usually have four traits:</p>
<ul>
<li>they can turn a vague brief into a tractable plan without waiting for perfect inputs</li>
<li>they know enough about systems tradeoffs to challenge weak assumptions early</li>
<li>they care about verification as much as output</li>
<li>they can move between engineering, product, and executive language without flattening the nuance</li>
</ul>
<p>Model trivia is cheap. Operator judgment is what survives contact with production.</p>
<p>The market is full of people who can name the newest framework. The shortage is people who can keep a system healthy when the workload changes, the vendor shifts, or the first release misbehaves.</p>
<h2 id="what-most-teams-hire-wrong">What Most Teams Hire Wrong</h2>
<p> <a href="/blog/2024-12-02-building-ai-teams/"
   
   >AI hiring</a>
 goes off the rails when teams reward signals that are easy to notice but hard to run with.</p>
<p>Teams over-index on:</p>
<ul>
<li>prompt fluency without operational discipline</li>
<li>research taste without delivery habits</li>
<li>architecture opinions without  <a href="/blog/2025-11-10-ai-incident-management/"
   
   >incident literacy</a>
</li>
<li>product instinct without measurement rigor</li>
</ul>
<p>None of those traits is bad. The problem is imbalance.</p>
<p>A strong AI team needs people who will own the boring parts:  <a href="/blog/2026-04-23-ai-evaluation-maturity/"
   
   >evals</a>
, fallback logic, access boundaries, cost control, and documentation precise enough that someone else can operate the system later.</p>
<p>If a candidate can talk fluently about models but cannot explain how they would debug a bad release, they are not ready to own production AI.</p>
<h2 id="the-interview-questions-that-matter">The Interview Questions That Matter</h2>
<p>You do not need a clever  <a href="/blog/2018-04-16-technical-interviewing-what-actually-works/"
   
   >hiring process</a>
. You need questions that force real evidence.</p>
<p>Ask candidates to walk through:</p>
<ol>
<li>
<p><strong>A system they had to stabilize.</strong>
What was broken, how did they know, and what changed after they touched it?</p>
</li>
<li>
<p><strong>A decision they reversed.</strong>
Strong operators do not defend bad ideas forever. They update when the evidence changes.</p>
</li>
<li>
<p><strong>A workflow they measured.</strong>
If they cannot show how they connected work to metrics, they probably did not own the outcome.</p>
</li>
<li>
<p><strong>A failure they made safer.</strong>
In AI, good operators do not eliminate failure. They bound it.</p>
</li>
</ol>
<p>A useful answer is concrete, a little messy, and grounded in actual work. The worst answer sounds polished and empty.</p>
<h2 id="hire-for-the-shape-of-the-system">Hire for the Shape of the System</h2>
<p> <a href="/blog/2026-02-16-ai-team-structures/"
   
   >AI teams</a>
 do not need the same operator profile in every context. Research-heavy, production-heavy, and regulated enterprise teams all demand different instincts.</p>
<p>If you want a research-heavy team, hire for exploration and rigor. If you want a production-heavy team, hire for stability and operational discipline. If you want a regulated enterprise team, the bar is not “exciting.” The bar is whether this person can help you ship safely, repeatedly, and without heroics.</p>
<p>That is the real operator profile:</p>
<ul>
<li>can handle uncertainty without freezing</li>
<li>can make tradeoffs explicit</li>
<li>can  <a href="/blog/2026-05-14-build-the-system-the-model-cannot-break/"
   
   >leave behind a system other people can run</a>
</li>
<li>can keep pace without turning every launch into a performance</li>
</ul>
]]></content:encoded></item><item><title>Technical Leadership in the AI Era: Throughput Over Trends</title><link>https://lawzava.com/blog/2026-05-21-ai-technical-leadership/</link><pubDate>Thu, 21 May 2026 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-05-21-ai-technical-leadership/</guid><description>Technical leadership in 2026: anchor decisions in throughput, verification, and operability instead of chasing the latest agent framework.</description><content:encoded><![CDATA[<p>AI does not change the core job of technical leadership. It changes the cost of being vague. In 2026, the best leaders still do the same three things: set direction, remove friction, and keep production systems measurable. The difference is that AI makes every weak assumption show up faster.</p>
<p>The mandate is throughput. More noise and more  <a href="/blog/2026-05-05-measure-ai-progress-without-theater/"
   
   >experimentation theater</a>
 work against it.</p>
<h2 id="the-leadership-pivot-focus-on-throughput">The Leadership Pivot: Focus on Throughput</h2>
<p>Organizations do not pay technical leaders to keep up with model releases. They pay them to improve  <a href="/blog/2026-03-30-throughput-engineer-headcount-lagging-metric/"
   
   >organizational throughput</a>
.</p>
<p>That means reducing cognitive overhead, tightening verification, and making deployment paths boring enough that teams can move without drama. If you cannot measure what an AI workflow produced, or what it cost to produce it, you do not have an operating system yet. You have a prototype with invoices.</p>
<p>The leadership question is simple: are we removing blockers faster than we are adding complexity?</p>
<h2 id="decision-making-in-practice">Decision-Making in Practice</h2>
<p>AI work gets messy when teams debate tools before they define the outcome.</p>
<p>Good leaders force the conversation back to first principles:</p>
<ul>
<li>What business metric should change if we ship this?</li>
<li>What latency budget do we actually have?</li>
<li> <a href="/blog/2026-05-14-build-the-system-the-model-cannot-break/"
   
   >What happens when the model is wrong?</a>
</li>
</ul>
<p>Those questions cut through a lot of noise. They keep the team from turning architecture meetings into opinion contests about  <a href="/blog/2023-04-03-vector-databases-explained/"
   
   >vector databases</a>
, prompt styles, or the latest agent framework.</p>
<p>If the answer to any of those questions is fuzzy, the work is not ready for serious implementation.</p>
<h2 id="define-good-enough-and-measure-it">Define “Good Enough” and Measure It</h2>
<p>Reliability covers more than accuracy: consistency, cost, and the ability to  <a href="/blog/2025-03-31-ai-observability-deep/"
   
   >catch degradation before customers do</a>
.</p>
<p>Sometimes  <a href="/blog/2024-08-05-small-models-big-impact/"
   
   >a smaller, cheaper model</a>
 is the right answer. Sometimes the frontier model is worth the price. Don&rsquo;t be religious about either option. Define the bar, test against it, and choose the system that meets it with the least operational pain.</p>
<p>Perfection isn&rsquo;t the goal. Build a system where failure is bounded, expected, and visible.</p>
<h2 id="the-cultural-shift">The Cultural Shift</h2>
<p>Technical leadership still has a change-management problem. Engineers will worry about ownership, safety, and the volatility of the ecosystem. Those concerns are real.</p>
<p>The right response is instrumentation. Debate for its own sake settles nothing.</p>
<p>Stop arguing in design docs about whether a model will work. Build the telemetry that shows whether it works. Stop treating every new framework like a strategy reset. Run small, contained experiments that either produce evidence or die cheaply.</p>
<p>The strongest teams can absorb change without losing control. Sprinting toward the newest beta API doesn&rsquo;t build that. If the team can move quickly, measure clearly, and recover cleanly, AI becomes leverage. If not, it becomes another source of drag.</p>
]]></content:encoded></item><item><title>Stop Building Internal AI Tools No One Uses</title><link>https://lawzava.com/blog/2026-05-19-stop-building-internal-ai-tools-no-one-uses/</link><pubDate>Tue, 19 May 2026 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-05-19-stop-building-internal-ai-tools-no-one-uses/</guid><description>Internal AI tools die quietly when teams optimize for launch over workflow fit, output trust, and post-launch ownership. One tool failed, one stuck.</description><content:encoded><![CDATA[<p>The demo went well. A mid-size logistics company (roughly 800 people, enough procurement complexity to  <a href="/blog/2026-04-16-ai-capital-allocation-what-to-stop-funding/"
   
   >justify the investment</a>
) had spent three months building an internal AI tool to surface contract terms during vendor negotiations. The launch Slack channel hit 40 reactions in the first hour. A VP called it the kind of thing that changes how the team operates.</p>
<p>Six weeks later, the channel had five messages in it, four of them automated. The procurement leads were still pulling PDFs manually and copying terms into a shared spreadsheet. One support engineer, who had quietly championed the project from the beginning, had reverted to her old database query because &ldquo;the tool doesn&rsquo;t know about the amendments.&rdquo; The tool was still running. Nobody had officially abandoned it. It had simply become invisible.</p>
<p>This pattern is not unusual. It is almost the default.</p>
<h2 id="what-actually-failed">What Actually Failed</h2>
<p>The postmortem conversation usually centers on the wrong things: model choice, interface design, rollout timing. Those are symptoms. The root causes are structural.</p>
<p>The contract tool was built around a narrow slice of the negotiation workflow: surfacing base terms. But procurement work is not base terms. It is base terms plus amendments plus prior history plus the relationship context the lead carries in her head. The tool knew one layer of a five-layer problem. It looked complete in a demo because demos are controlled. Real work is not controlled.</p>
<p>The output trust problem arrived fast. In week two, the tool surfaced an incorrect payment term: technically correct in the original contract, but superseded by a signed amendment it had not been given access to. The lead caught it before it caused damage, but she stopped relying on it after that. <em>One unexplained wrong answer is enough to demote a tool from co-worker to footnote.</em> The team had not  <a href="/blog/2026-04-23-ai-evaluation-maturity/"
   
   >built evaluation into the system</a>
, so there was no way to know how often this happened, which made the uncertainty worse.</p>
<p>Nobody owned adoption after the launch. The engineer who built it moved to a different priority. The VP who celebrated it never checked  <a href="/blog/2025-07-07-ai-product-metrics/"
   
   >sustained usage</a>
. When procurement leads developed workarounds, there was no one watching the signal and no one with a mandate to respond. The tool drifted.</p>
<h2 id="when-it-works">When It Works</h2>
<p>A different team at a professional services firm built something structurally simpler: a tool that drafted the engagement summary section of a client report, pulling from structured notes the consultant had already entered into their project management system. Narrow scope. No novel context required. One predictable output format, reviewed every time before it went anywhere.</p>
<p>The tool stuck, and it was considerably less impressive technically. It stuck because it removed a specific, recurring task that consultants genuinely disliked, it used context they were already maintaining anyway, and the output was always human-reviewed before it mattered. The failure mode was visible and safe. The value was obvious the first time you used it and every time after.</p>
<p>The team lead reviewed usage weekly for the first two months and made three small adjustments based on what she saw. That unglamorous, persistent, post-launch ownership is what made the difference.</p>
<h2 id="the-structural-difference">The Structural Difference</h2>
<p>Both companies built  <a href="/blog/2025-08-04-ai-workflow-automation/"
   
   >AI tools for internal workflows</a>
. One failed quietly, one became a habit. The model and the interface didn&rsquo;t decide it. What decided it was whether the tool was designed around how work actually moves or around  <a href="/blog/2026-05-05-measure-ai-progress-without-theater/"
   
   >what would look good in a demo</a>
.</p>
<p>Tools that survive are ones that fit a narrow, complete slice of a workflow, produce output that is either verifiable or bounded enough to trust, require no context the user does not already have, and have someone whose job it is to watch whether people are actually using them.</p>
<p>That last part is the one most teams skip. Usage is not a launch outcome. It is an operating responsibility.</p>
]]></content:encoded></item><item><title>Why Most AI Platform Teams Become the New Bottleneck</title><link>https://lawzava.com/blog/2026-05-14-why-ai-platform-teams-become-bottlenecks/</link><pubDate>Thu, 14 May 2026 10:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-05-14-why-ai-platform-teams-become-bottlenecks/</guid><description>AI platform teams become bottlenecks when they centralize decisions instead of capabilities. The warning signs, the metrics that expose it, and the fix.</description><content:encoded><![CDATA[<p>AI platform teams become bottlenecks when they start reviewing every use case instead of shipping safe defaults. Once the team needs a ticket to approve basic work, the queue is the product and the platform is just a delay with a nicer name.</p>
<p>Shrinking the team and hoping demand goes away won&rsquo;t fix it. Move decisions out of the queue and into the platform.</p>
<h2 id="a-platform-team-is-a-product-with-a-queue">A Platform Team Is a Product with a Queue</h2>
<p>A healthy  <a href="/blog/2017-12-28-building-platform-teams/"
   
   >platform team</a>
 exists to make repeated decisions disappear.</p>
<p>If every experiment needs a ticket, a Slack ping, and a weekly exception review, the platform is no longer a platform. It is a gate with a service catalog.</p>
<p>The warning signs show up fast:</p>
<ul>
<li>request backlogs that never get smaller</li>
<li>the same exception coming back under a new name</li>
<li>engineers building shadow infrastructure because the official path is too slow</li>
<li>work that should have been standardized long ago still handled by hand</li>
</ul>
<p>Once teams start routing around the platform, the default path has already lost.</p>
<h2 id="what-bottleneck-behavior-looks-like">What Bottleneck Behavior Looks Like</h2>
<p>Bottlenecks rarely announce themselves. They sound like process.</p>
<p>You hear it in the same lines over and over:</p>
<ul>
<li>“We are waiting on the platform team.”</li>
<li>“Can we make this an exception?”</li>
<li>“We built a small internal workaround.”</li>
<li>“The platform is a few weeks behind us.”</li>
</ul>
<p>None of those lines is fatal on its own. The pattern becomes a problem when they turn into the normal way work gets done.</p>
<p>A platform team becomes a bottleneck when it centralizes decisions that should have been made once, written down, and pushed into the default path.</p>
<h2 id="redesign-the-team-around-capabilities-not-control">Redesign the Team Around Capabilities, Not Control</h2>
<p>Good platform teams build  <a href="/blog/2019-03-11-building-internal-developer-platforms/"
   
   >paved roads</a>
.</p>
<p>They own the hard parts once:</p>
<ul>
<li>identity and access patterns</li>
<li> <a href="/blog/2024-03-18-multi-model-strategies/"
   
   >model routing defaults</a>
</li>
<li> <a href="/blog/2026-04-23-ai-evaluation-maturity/"
   
   >evaluation harnesses</a>
</li>
<li>logging and traceability</li>
<li>safe deployment templates</li>
<li>fallback behavior</li>
</ul>
<p>Then they get out of the way.</p>
<p>The wrong shape is a team that has to bless every new use case. The right shape is a team that makes the safe path easier than the unsafe one.</p>
<p>A good test: <strong>a platform team should  <a href="/blog/2026-05-14-build-the-system-the-model-cannot-break/"
   
   >remove waiting, not become a waiting room</a>
.</strong></p>
<h2 id="metrics-that-expose-a-platform-bottleneck">Metrics That Expose a Platform Bottleneck</h2>
<p>Most platform dashboards avoid the real question. You need blunt metrics.</p>
<p>Measure:</p>
<ul>
<li>time from request to usable platform support</li>
<li>exceptions granted per month</li>
<li>shadow systems discovered in production</li>
<li>hours spent waiting on platform review</li>
<li>AI workflows shipped without platform involvement</li>
</ul>
<p>Those metrics tell you whether the platform is compounding or constraining.</p>
<p>If exceptions keep rising and the team calls that “flexibility,” the default path is still too hard to use.</p>
<h2 id="what-good-looks-like">What Good Looks Like</h2>
<p>The best AI platform teams I have seen share three habits:</p>
<ol>
<li>They bias toward self-service.</li>
<li>They make safe defaults boring.</li>
<li>They track the cost of waiting as carefully as the cost of infrastructure.</li>
</ol>
<p>That last one matters. Waiting is not free. Every hour a product team spends blocked on the platform is an hour not spent learning from users.</p>
]]></content:encoded></item><item><title>Build the System the Model Cannot Break</title><link>https://lawzava.com/blog/2026-05-14-build-the-system-the-model-cannot-break/</link><pubDate>Thu, 14 May 2026 09:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-05-14-build-the-system-the-model-cannot-break/</guid><description>A manifesto for AI-native organizations: twelve tenets across strategy, architecture, economics, and people, and the one test that matters in year two.</description><content:encoded><![CDATA[<h2 id="quick-take">Quick take</h2>
<p>An AI-native company is not a company that uses AI. It is a company whose operating model (decisions, ownership, interfaces, capital, and failure boundaries) has been built so AI compounds inside it instead of evaporating around it.</p>
<p>The model will change. The system around it should not.</p>
<p>This is a manifesto. It is opinionated, deliberately. Twelve tenets, four movements, one test. Borrow what works. Argue with the rest.</p>
<hr>
<h2 id="movement-i-strategy">Movement I: Strategy</h2>
<h3 id="1-the-operating-model-is-the-strategy">1. The operating model is the strategy</h3>
<p>The model is the most expensive dependency in your stack. It is not the brain. The brain is everything you build around it: context assembly, retrieval, validation, retries, telemetry, fallback, escalation.</p>
<p>Two companies buy the same frontier model on the same Tuesday. One ships in six weeks with a deterministic fallback, a typed validator, and an eval gate on every PR. The other ships in six months with a notebook of &ldquo;good prompts&rdquo; and a Slack channel for incidents. Same model. Different company.</p>
<p>If your AI plan begins with &ldquo;which model should we buy,&rdquo; you are solving the easiest problem in the room. <strong>The moat is everything around the model.</strong></p>
<h3 id="2-capital-allocation-is-the-first-product-decision">2. Capital allocation is the first product decision</h3>
<p>Great AI teams do not start with a roadmap. They start with  <a href="/blog/2026-04-16-ai-capital-allocation-what-to-stop-funding/"
   
   >a kill list</a>
. Capital is finite. Attention is finite. Support burden is finite.</p>
<p>Three questions before any AI initiative gets funded:</p>
<ol>
<li>Does this increase <strong>margin</strong>, reduce <strong>risk</strong>, or improve <strong>speed</strong>?</li>
<li>Can we measure that effect within one to three quarters?</li>
<li>Do we own the <strong>fallback</strong> if the model or vendor changes?</li>
</ol>
<p>If the answer to all three is not yes, the default is no.</p>
<p>A common pattern in Series B to D companies that quietly stalled in 2024 and 2025: serious engineering and infra budget burned on internal copilots that never crossed adoption threshold, plus a duplicate prompt orchestration layer because two teams built one in parallel. Neither project had a measurable failure mode. Both had a sponsor.</p>
<p>A four-dimension scorecard makes the next budget meeting honest:</p>
<ul>
<li><strong>Adoption:</strong> are real users using it in a real workflow?</li>
<li><strong>Reliability:</strong> does it fail in bounded, observable ways?</li>
<li><strong>Margin:</strong> does it reduce cost or improve unit economics?</li>
<li><strong>Speed:</strong> does it shorten a real business cycle time?</li>
</ul>
<p><strong>If you cannot defend it with numbers, the project is not innovative. It is unpriced.</strong></p>
<h3 id="3-decision-latency-is-a-pl-variable">3. Decision latency is a P&amp;L variable</h3>
<p>Slow decisions look like caution. In practice, they are hidden expense. Every day a real decision sits unresolved, the business pays in delay, rework, and attention.</p>
<p>Headcount is an input.  <a href="/blog/2026-03-30-throughput-engineer-headcount-lagging-metric/"
   
   >Throughput is an outcome</a>
. Adding the tenth engineer to a system that takes nine days to approve a deploy adds nine more days of waiting, not 10% more output.</p>
<p>Track four numbers with the same seriousness as revenue:</p>
<ul>
<li>time from issue raised to decision made</li>
<li>time from decision made to action taken</li>
<li>escalations per decision class</li>
<li>decisions reopened after approval</li>
</ul>
<p><strong>Ambiguous ownership is the most expensive architecture in your company.</strong></p>
<hr>
<h2 id="movement-ii-architecture">Movement II: Architecture</h2>
<h3 id="4-build-firewalls-not-masterpieces">4. Build firewalls, not masterpieces</h3>
<p>A statistical engine cannot be expected to behave like deterministic infrastructure. If your architecture only works when the model is correct 100% of the time, it is not architecture. It is wishful thinking with a demo budget.</p>
<p>Three failure modes, three firewalls. They are not the same thing and they are not solved by the same code:</p>
<ul>
<li><strong>Inbound sanitization.</strong> What data is permitted into the prompt context. PII strippers, schema enforcers, retrieved-document trust scoring. This is also where indirect prompt injection (instructions hidden in a vendor PDF, a customer message, or a tool output) gets caught before it reaches the model.</li>
<li><strong>Outbound validation.</strong> A typed schema checker stands between the model and the operational database. Malformed JSON, out-of-range values, and policy-violating outputs are rejected at the boundary, not absorbed by downstream services.</li>
<li><strong>Operational fallback.</strong> Circuit breakers for vendor outages and rate limits. If the model returns invalid output three times in a row, the system degrades to a deterministic path instead of a stack trace in front of the user.</li>
</ul>
<p>Each of these is a separate piece of code with a separate owner, a separate test surface, and a separate failure mode. A &ldquo;kill switch&rdquo; that catches all three is a slide, not a system.</p>
<p><strong>You cannot prompt your way out of entropy. You have to architect your way out of it.</strong></p>
<h3 id="5-evaluation-is-the-spine">5. Evaluation is the spine</h3>
<p>If you cannot define an eval suite before shipping a feature, you do not understand the system well enough to ship it.</p>
<p>A  <a href="/blog/2026-04-23-ai-evaluation-maturity/"
   
   >five-level maturity ladder</a>
:</p>
<ol>
<li><strong>Vibes-based.</strong> Someone eyeballs prompts before release.</li>
<li><strong>Spreadsheet.</strong> Suite exists, runs occasionally, blocks nothing.</li>
<li><strong>CI/CD-integrated.</strong> Evals run on every PR. A failed gate stays failed.</li>
<li><strong>Continuous telemetry.</strong> Production samples scored asynchronously. Incidents become regression tests.</li>
<li><strong>Governance as moat.</strong> Evaluation shapes architecture before code. Margin, latency, and sovereignty tradeoffs are quantified, not asserted.</li>
</ol>
<p>Below Level 3 is not a production system. It is a demo with a pager.</p>
<p>Level 4 is where most organizations get stuck, and the reason is rarely effort. Judge models drift, ground truth ages, sampling bias creeps in, and your asynchronous scoring quietly stops tracking the failure mode you cared about. Mature teams hold a small, hand-labeled golden set as the anchor, treat the judge model as a versioned dependency, and re-calibrate when either changes.</p>
<p>Eval portability is a year-two survival trait. If your eval suite is hand-tuned to one model&rsquo;s tokenizer and one vendor&rsquo;s output quirks, you have not built an eval suite. You have built a benchmark for the model you are about to be unable to leave.</p>
<h3 id="6-agentic-systems-run-on-a-reliability-contract">6. Agentic systems run on a reliability contract</h3>
<p>Agents are not magical workers. They are autonomous systems with more ways to fail. The reliability discipline gets stricter, not looser.</p>
<p>Every production agent answers five questions in one meeting, without hand-waving:</p>
<ul>
<li>what is it allowed to do?</li>
<li>what is it explicitly not allowed to do?</li>
<li>what metrics prove it is healthy?</li>
<li>what happens when the model degrades?</li>
<li>who can stop it, and how fast?</li>
</ul>
<p>But the five questions are a meeting checklist. The contract is a published artifact with <strong>SLOs, blast-radius caps in dollars or rows or API calls, rollback latency targets, and a named owner per failure mode.</strong> Blast radius is the real design variable: data scope, action scope, time scope, permission scope, fallback scope.</p>
<p>Kill switches are not weakness. They are governance that can move faster than the failure. A useful test of any AI control: <strong>could an engineer follow this rule at 2 a.m. without calling a committee?</strong></p>
<p>A roadmap that ships an agent without answers to these questions is a roadmap that has shipped a liability with a product label. Every initiative names how it turns off, how it knows it is hurting, how fast it reverts, and what manual path exists when the model degrades.</p>
<p><em>Companion:  <a href="/docs/agent-reliability-contract"
   
   >Agent Reliability Contract template</a>
.  <a href="/docs/rollback-template"
   
   >Rollback document template</a>
.</em></p>
<p><strong>Autonomy without a reliability contract is just an incident waiting for a timeline.</strong></p>
<hr>
<h2 id="movement-iii-economics--externals">Movement III: Economics &amp; Externals</h2>
<h3 id="7-unit-economics-live-at-the-workflow-not-the-model-call">7. Unit economics live at the workflow, not the model call</h3>
<p>Teams fixate on tokens because tokens are visible. The real bill sits around the model: retries, context assembly, human correction, support escalation, and the work of proving the output is acceptable.</p>
<p>Route by value and by risk. Trivial work stays cheap and local. High-stakes work earns expensive inference and stronger checks. A finance-aware leader can answer, without hand-waving:</p>
<ul>
<li>what each class of request costs to serve, end to end</li>
<li>where the rework happens</li>
<li>what failure costs when the model is wrong</li>
<li>which parts of the workflow justify premium inference</li>
</ul>
<p>The cost question nobody owns until it explodes: <strong>when product ships a feature that 10x&rsquo;s tokens, who pays?</strong> If the answer is &ldquo;we&rsquo;ll figure it out,&rdquo; you have not designed an operating model. You have deferred a fight.</p>
<p>Compute placement is part of this calculation, not a separate one. For high-frequency agentic workloads, a chain of round-trips across regions and vendors compounds into real latency tax and real egress cost. Local-first, hardware-aware patterns earn their place where the workload mix justifies them, and create a worse outcome where it does not. Measure first, place compute second.</p>
<p><strong>A cheaper model that fails gracefully beats an expensive model that fails silently.</strong></p>
<h3 id="8-sovereignty-is-an-architecture-constraint">8. Sovereignty is an architecture constraint</h3>
<p> <a href="/blog/2026-04-06-sovereign-systems-privacy-non-optional/"
   
   >Privacy is not a feature you bolt on</a>
 before an enterprise contract closes. It is the shape of the system.</p>
<p>A sovereign system controls the full lifecycle of every piece of data: where it lives, who can access it, how long it persists, and what happens when someone asks you to delete it. In practice, four concrete patterns:</p>
<ul>
<li><strong>Customer-managed keys.</strong> BYOK or hold-your-own-key. If your cloud provider holds the only copy of the encryption key, &ldquo;we cannot access your data&rdquo; is a policy promise, not a verifiable claim.</li>
<li><strong>Regional routing with storage isolation.</strong> EU data does not leave EU infrastructure. The application layer handles the routing. The deployment pipeline ships multi-region.</li>
<li><strong>Scoped, short-lived access.</strong> No ambient credentials. Service-to-service tokens with explicit grants and automatic expiry.</li>
<li><strong>Immutable audit trails.</strong> Append-only, tamper-evident logging of every access, transformation, and movement.</li>
</ul>
<p>&ldquo;We use AWS&rdquo; is not an answer to &ldquo;where does my data live.&rdquo; <strong>Sovereignty is about specificity.</strong></p>
<p>The compounding bill arrives when you try to add this later. The discount arrives when you build it in early and close enterprise contracts without an architectural retrofit.</p>
<h3 id="9-the-threat-model-is-the-manifesto">9. The threat model is the manifesto</h3>
<p>An AI manifesto without a threat model is marketing copy. Four risks every operator names explicitly:</p>
<ul>
<li><strong>Indirect prompt injection.</strong> Instructions hidden in retrieved documents, tool outputs, and user uploads, not just in the user&rsquo;s direct prompt. Treat every retrieved string as potentially adversarial. Validate before it reaches the model. Strip before it reaches the agent.</li>
<li><strong>Silent quality drift.</strong> The model returns <em>slightly</em> worse reasoning. The tone shifts. The retrieval starts ignoring critical documents. There is no stack trace. Only asynchronous production scoring, anchored to a golden set, catches this before customers do.</li>
<li><strong>Vendor and model lock-in by accident.</strong> Fine-tunes, preference data calibrated to one model family, and prompts hand-tuned to a specific tokenizer compound. By year two, your &ldquo;swappable&rdquo; model is a six-month migration. Discipline preserves optionality: prompt abstraction, eval portability, vendor-neutral preference data, and a quarterly review of what would break if the vendor changed terms tomorrow.</li>
<li><strong>Agent blast radius creep.</strong> Permissions accumulate. The agent that summarizes documents quietly gains write access to your billing API because someone needed it once. Audit scope quarterly. Treat agent permissions like database credentials, not like configuration.</li>
</ul>
<p>Threat modeling is not a one-time exercise. It is the bill of materials your system runs on.</p>
<hr>
<h2 id="movement-iv-people--failure">Movement IV: People &amp; Failure</h2>
<h3 id="10-interfaces-beat-titles">10. Interfaces beat titles</h3>
<p>Most AI hiring plans try to fix an interface problem with resumes. They rarely work.</p>
<p>A working leadership system is not a roster of senior titles. It is a decision map. Four owners with explicit decision rights and explicit escalation paths:</p>
<ul>
<li><strong>Product:</strong> user outcomes, adoption, business tradeoffs.</li>
<li><strong>Platform:</strong> safe defaults, deployment paths, observability, paved roads.</li>
<li><strong>Applied AI:</strong> workflow behavior, routing, prompting, retrieval, evaluation quality.</li>
<li><strong>Governance:</strong> risk boundaries, sovereignty controls, escalation thresholds.</li>
</ul>
<p>The titles can be anything. The interfaces cannot be ambiguous. If the answers depend on who is online that day, the system is not operational.</p>
<p>The same logic governs platform teams. A platform exists to make repeated decisions disappear into the default path: identity, routing, eval harnesses, logging, safe deployment, fallback behavior. The moment platform becomes a queue that has to bless every use case,  <a href="/blog/2026-05-14-why-ai-platform-teams-become-bottlenecks/"
   
   >the queue is the product</a>
 and waiting is the cost. <strong>A platform should remove waiting, not become a waiting room.</strong></p>
<p>Hiring works after the operating contract is clear, not before. New hires scale the current operating model, good or bad. <strong>Org debt is interface debt with better branding.</strong></p>
<h3 id="11-anti-fragility-requires-portability-discipline">11. Anti-fragility requires portability discipline</h3>
<p>Resilience is surviving the shock. Anti-fragility is using the shock to remove the next one.</p>
<p>Fragility hides in the org chart and in the stack. One engineer who knows the routing. One vendor whose terms changed last week. One fine-tune that took six months to train and would take six months to migrate. That is not an organization or a system. That is a single point of failure wearing a department badge or a model card.</p>
<p>Four design choices build strength:</p>
<ul>
<li><strong>Modular ownership.</strong> No critical function depends on one person&rsquo;s memory. Deputies are named.</li>
<li><strong>Resettable interfaces.</strong> A model, vendor, or workflow can be swapped without a rewrite. This is not free. It requires prompt abstraction, eval portability, vendor-neutral preference data, and a regular drill where the team actually proves a swap is possible.</li>
<li><strong>Fast learning loops.</strong> Every failure produces a tighter eval, a better fallback, or a clearer operating boundary.</li>
<li><strong>Cross-training on the boring parts.</strong> Alerts, evals, fallback logic, access boundaries. The unglamorous work is what keeps the organization elastic.</li>
</ul>
<p>A short anti-fragility check:</p>
<ul>
<li>Can you swap a model without rewriting the product?</li>
<li>Can you lose a key engineer without losing the system?</li>
<li>Can you absorb a vendor price increase without panic?</li>
<li>Can you turn a production incident into an improved control?</li>
</ul>
<p>If any answer is no, the organization is more brittle than it thinks. The most expensive lie an AI organization tells itself is that the model is swappable when nobody has tried.</p>
<h3 id="12-the-year-two-test">12. The year-two test</h3>
<p>A lot of AI organizations look healthy in month three and brittle by year two. The model did not fail. The operating model did. Prototype energy is easy to create. Durable coordination is not.</p>
<p>The single question that separates the two:</p>
<blockquote>
<p>Can the AI system survive a senior person going on vacation for two weeks?</p>
</blockquote>
<p>If the answer is &ldquo;not really,&rdquo; the organization is still running on hidden tribal knowledge.</p>
<p>If the answer is &ldquo;yes, with documented ownership, a published reliability contract, an eval suite that blocks releases, and a fallback path the on-call engineer can execute at 2 a.m.,&rdquo; the company is moving from prototype to production.</p>
<p>That is the only year-two test that matters. Everything else in this manifesto is in service of passing it.</p>
<hr>
<h2 id="what-this-manifesto-is-not">What this manifesto is not</h2>
<p>It is not a prediction about which model wins. It is not a framework for replacing engineers with agents. It is not a defense of any vendor, any cloud, or any stack.</p>
<p>It is a statement about how serious companies organize for AI when the easy money, the demo budgets, and the hype cycles are done, and only the operating model is left to do the work.</p>
<p>The model will change.</p>
<p>The system around it should not.</p>
<hr>
<p><em>Law Zava writes about the operating model behind serious AI execution. Companion artifacts:  <a href="/docs/agent-reliability-contract"
   
   >Agent Reliability Contract template</a>
 ·  <a href="/docs/rollback-template"
   
   >Rollback document template</a>
 ·  <a href="/docs/eval-starter-kit"
   
   >Eval Suite starter kit</a>
. The canonical reading path is at  <a href="/blog"
   
   >/blog</a>
.</em></p>
]]></content:encoded></item><item><title>The CTO Communication Protocol for AI Programs</title><link>https://lawzava.com/blog/2026-05-12-cto-communication-protocol-ai-programs/</link><pubDate>Tue, 12 May 2026 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-05-12-cto-communication-protocol-ai-programs/</guid><description>AI programs fail when engineers, executives, and investors hear different definitions of success. A communication cadence that keeps one true story.</description><content:encoded><![CDATA[<p>AI programs rarely fail because one team is incompetent. They fail because the organization tells itself three different stories about the same system. Engineers hear one version of reliability, executives hear one version of commercial impact, and investors hear one version of scale. By the time those stories collide in a board meeting, the disagreement has already been baked into the program.  <a href="/blog/2026-04-14-ai-cto-perspective/"
   
   >A CTO&rsquo;s job</a>
 is to keep the story true enough that people can act on it.</p>
<h2 id="the-alignment-problem">The Alignment Problem</h2>
<p>Every layer in a company listens for a different failure.</p>
<p>Engineers ask: can we make it reliable without turning the stack into a science project?</p>
<p>Executives ask: can it matter this quarter, not someday?</p>
<p>Investors ask: can it scale without becoming a support burden, a security problem, or a  <a href="/blog/2026-04-28-margin-risk-speed-ai-strategy-metrics/"
   
   >margin leak</a>
?</p>
<p>If those questions are not coordinated, the organization drifts into avoidable conflict. Product thinks it shipped success. Engineering thinks it shipped risk. Finance thinks it shipped cost. The AI program becomes a political object instead of an operating system.</p>
<h2 id="what-each-layer-needs-to-hear">What Each Layer Needs to Hear</h2>
<p>A good communication protocol gives each audience the right level of detail and nothing more.</p>
<p><strong>Engineers</strong> need constraints, failure modes, ownership, and the exact conditions under which they should stop or escalate.</p>
<p><strong>Executives</strong> need the business outcome, the tradeoffs, the cost of delay, and the risk of waiting for a perfect answer.</p>
<p><strong>Investors or board members</strong> need the thesis, the numbers, the confidence interval around those numbers, and the reason the company believes the numbers are real.</p>
<p>The common mistake is predictable: over-share implementation detail upward and under-share operational reality downward. Leaders either talk past each other or sand off the complexity to keep the room calm. Neither habit helps. Clarity is kinder than politeness when the system is expensive.</p>
<h2 id="build-a-communication-rhythm">Build a Communication Rhythm</h2>
<p>Strong CTOs do not improvise every update. They set a rhythm that forces the same narrative to appear at predictable intervals, so the organization can spot drift before it becomes a surprise.</p>
<p>A practical cadence looks like this:</p>
<ul>
<li>weekly: operational progress, blockers, decisions made, decisions deferred</li>
<li>monthly:  <a href="/blog/2026-05-05-measure-ai-progress-without-theater/"
   
   >outcome metrics</a>
, risk posture, and what changed in the operating assumptions</li>
<li>quarterly: strategy shifts, tradeoffs, roadmap changes, and what the board should expect next</li>
</ul>
<p>That structure gives the organization memory and gives the board a clean way to compare this quarter with the last one.</p>
<p>More slides won&rsquo;t help. Keep the story consistent enough that people can challenge it on the merits.</p>
<p>Misaligned narratives are delayed incidents.</p>
<h2 id="use-the-same-three-questions-everywhere">Use the Same Three Questions Everywhere</h2>
<p>Keep asking the same three questions in every forum: what changed, what did it affect, and what happens next? Those questions work at the team level, the executive level, and the board level because they force the same discipline: outcome, consequence, next move. If a layer cannot answer them, the communication is not yet useful.</p>
<p>Alignment is not consensus. It is a shared operating picture.</p>
]]></content:encoded></item><item><title>AI Governance Without Bureaucracy</title><link>https://lawzava.com/blog/2026-05-07-ai-governance-without-bureaucracy/</link><pubDate>Thu, 07 May 2026 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-05-07-ai-governance-without-bureaucracy/</guid><description>AI governance that works: tighter defaults, named owners, fast escalation, and a small control stack engineers can follow at 2 a.m. No new committees.</description><content:encoded><![CDATA[<p>Good AI governance does not look busy. It looks boring: tighter defaults, named owners, and fast escalation paths. If governance slows safe work and never stops unsafe work, it is bureaucracy with a policy memo attached.</p>
<h2 id="the-governance-mistake">The Governance Mistake</h2>
<p>Most organizations confuse governance with oversight theater.</p>
<p>They create committees, review boards, and approval layers, then act surprised when teams route around them. The result is predictable: slow delivery, hidden risk, and a false sense of control.</p>
<p> <a href="/blog/2025-03-03-ai-governance-practice/"
   
   >AI governance</a>
 should answer a simpler question: what is allowed by default, what requires review, and what is forbidden?</p>
<p>If those boundaries are clear, teams can move. If they are not, every decision becomes a negotiation.</p>
<h2 id="tight-defaults-beat-loose-rules">Tight Defaults Beat Loose Rules</h2>
<p>Good governance systems do not ask engineers to remember every policy. They make the safe path the easy path.</p>
<p>That means:</p>
<ul>
<li>default data access is scoped, not ambient</li>
<li>model use is tied to approved workflows</li>
<li>logs retain enough context to investigate failures</li>
<li>high-risk actions require explicit escalation</li>
<li>evals run before release, not after incident review</li>
</ul>
<p>Governance works when it compresses uncertainty. It fails when it only adds paperwork.</p>
<p>A useful test: <strong>could an engineer follow the rule at 2 a.m. without calling a committee?</strong> If not, the rule is too vague or too heavy.</p>
<h2 id="ownership-matters-more-than-policy">Ownership Matters More Than Policy</h2>
<p>The fastest way to break governance is to make it everyone’s job.</p>
<p>Real governance needs named owners for:</p>
<ul>
<li> <a href="/blog/2025-09-15-ai-data-privacy/"
   
   >data classification</a>
</li>
<li>model approval</li>
<li> <a href="/blog/2026-04-23-ai-evaluation-maturity/"
   
   >evaluation coverage</a>
</li>
<li>exception handling</li>
<li> <a href="/blog/2025-11-10-ai-incident-management/"
   
   >incident response</a>
</li>
</ul>
<p>Without ownership, governance becomes a shared belief system. Shared belief systems feel flexible until something breaks.</p>
<p>The people who matter most can answer three questions: who decides, who reviews, and how fast can we change course? The author of the longest policy often can&rsquo;t.</p>
<h2 id="build-the-smallest-control-stack-that-works">Build the Smallest Control Stack That Works</h2>
<p>You do not need 30 controls to govern AI well. You need the smallest control stack that actually changes behavior.</p>
<p>Start with:</p>
<ol>
<li>a short list of approved data classes</li>
<li>a clear model use policy by workflow</li>
<li>required evals for release</li>
<li>a lightweight exception path</li>
<li>an incident review process that changes architecture, not just slides</li>
</ol>
<p>If you can keep that stack small, understandable, and enforced, you will get more compliance and less resistance.</p>
<p>A line worth keeping: <strong>the best control is the one engineers can still use at 2 a.m.</strong></p>
]]></content:encoded></item><item><title>AI Strategy Metrics: Margin, Risk, and Speed</title><link>https://lawzava.com/blog/2026-04-28-margin-risk-speed-ai-strategy-metrics/</link><pubDate>Tue, 28 Apr 2026 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-04-28-margin-risk-speed-ai-strategy-metrics/</guid><description>Replace AI novelty metrics with three executive numbers: margin, risk, and speed. Give each a baseline, target, owner, cadence, and rollback path.</description><content:encoded><![CDATA[<p>Most AI strategy decks are full of nouns and short on numbers. That is usually the tell. If a project cannot move margin, reduce risk, or shorten the path to an outcome, it is not strategy. It is activity with a steering committee.</p>
<h2 id="why-three-numbers-are-enough">Why Three Numbers Are Enough</h2>
<p>Leaders overcomplicate AI strategy because they do not want to choose.</p>
<p>But every AI decision eventually lands in one of  <a href="/blog/2026-04-16-ai-capital-allocation-what-to-stop-funding/"
   
   >three buckets</a>
:</p>
<ul>
<li><strong>Margin:</strong> does it improve unit economics?</li>
<li><strong>Risk:</strong> does it make the system safer or more controllable?</li>
<li><strong>Speed:</strong> does it shorten the path from decision to outcome?</li>
</ul>
<p>That is the executive frame. Everything else supports it.</p>
<p>If a project cannot clearly improve at least one of those numbers, it does not belong near the top of the roadmap.</p>
<h2 id="the-trap-of-novelty-metrics">The Trap of Novelty Metrics</h2>
<p>AI teams love the wrong metrics because the wrong metrics are easy to count.</p>
<p>Number of models tested. Number of pilots launched. Number of prompts written. Number of demos shown. Number of meetings held.</p>
<p>Those numbers can tell you whether work is happening. They do not tell you whether the company is getting more profitable, less exposed, or faster to act.</p>
<h2 id="build-a-scorecard-around-outcomes">Build a Scorecard Around Outcomes</h2>
<p>A serious AI scorecard is short.</p>
<ol>
<li>Did margin improve?</li>
<li>Did risk go down?</li>
<li>Did  <a href="/blog/2026-03-30-throughput-engineer-headcount-lagging-metric/"
   
   >cycle time</a>
 shorten?</li>
</ol>
<p>Everything else is instrumentation that helps answer those questions.</p>
<p>That does not mean you ignore adoption, reliability, or cost. It means you use them as inputs to the three executive numbers, not as substitutes for them.</p>
<p>The strongest boards and founders do not need twenty metrics. They need a few numbers that are hard to fake.</p>
<h2 id="make-the-three-numbers-operational">Make the Three Numbers Operational</h2>
<p>The framework only works if the numbers are real.</p>
<p>For each AI initiative, define:</p>
<ul>
<li>the baseline</li>
<li>the target</li>
<li>the measurement cadence</li>
<li>the owner</li>
<li>the rollback path if the numbers move the wrong way</li>
</ul>
<p>That keeps the conversation concrete and makes the project accountable.</p>
<p>A line worth keeping: <strong>if a strategy cannot change one of the three numbers, it is probably theater.</strong></p>
]]></content:encoded></item><item><title>AI Evaluation and Production Governance: A Maturity Model</title><link>https://lawzava.com/blog/2026-04-23-ai-evaluation-maturity/</link><pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-04-23-ai-evaluation-maturity/</guid><description>A five-level maturity model for AI evaluation and production governance, from vibes-based deploys to CI eval gates, production sampling, and rollback.</description><content:encoded><![CDATA[<p>Most AI teams do not have a model problem. They have a control problem. The gap between stable production AI and production chaos is usually governance: small trusted evals, release gates that actually block, and rollback paths that fire before users feel the drift. If you cannot explain how a change is tested, approved, and reversed, you do not have a production system. You have a demo with a pager.</p>
<h2 id="the-governance-maturity-model">The Governance Maturity Model</h2>
<h3 id="level-1-vibes-based-deployment">Level 1: &ldquo;Vibes-Based&rdquo; Deployment</h3>
<p>Evaluation is manual, episodic, and easy to ignore. Someone checks the prompts when there is time, ships the change, and waits for users to find the regression.</p>
<p>You can tell you are at Level 1 when the answer to &ldquo;How do you know yesterday&rsquo;s model swap was safe?&rdquo; is a shrug, a few sample prompts, or &ldquo;it looked fine.&rdquo; There is no baseline. There is no history. There is only whatever the latest person happened to test.</p>
<p>The failure mode is silent degradation. The model changes, behavior drifts, and the team learns about it weeks later from an angry customer or a support escalation that should never have reached production.</p>
<h3 id="level-2-the-spreadsheet-era">Level 2: The &ldquo;Spreadsheet&rdquo; Era</h3>
<p>There is an  <a href="/blog/2024-02-19-evaluating-llm-applications/"
   
   >eval suite</a>
, but it lives beside the delivery process instead of inside it. Someone runs a small Python script over a fixed list of cases before a big release and calls that &ldquo;testing.&rdquo;</p>
<p>Level 2 teams understand that evaluation matters, but they still treat it like a chore. The suite covers happy-path prompts and misses the things that actually break systems: adversarial inputs, schema violations, prompt injection, PII leakage. And because the results are not wired into release decisions, a bad run usually gets waved through anyway.</p>
<p>The failure mode is false confidence. The team trusts a narrow test set because it exists, not because it is representative. Then a multi-turn attack, a bad schema shift, or a quiet regression makes the gap obvious in production.</p>
<h3 id="level-3-cicd-integration-the-minimum-operational-bar">Level 3: CI/CD Integration (The Minimum Operational Bar)</h3>
<p>Evaluation is part of the delivery pipeline. The suite is broad enough to cover core capabilities and common failure modes, and the results block release candidates when they miss the bar.</p>
<p>At Level 3, every PR or deployment candidate runs the eval suite automatically. The checks include latency, cost per token, output schema validity, and the core reasoning path your product depends on. Results show up in CI next to unit tests. A failed gate stays failed until someone writes the exception and owns the risk.</p>
<p>This is the minimum bar for an enterprise team. A vendor can release an &ldquo;improved&rdquo; model on Tuesday, and a Level 3 team can run the suite on Wednesday morning and decide, with evidence, whether the new model actually helps their workload.</p>
<h3 id="level-4-continuous-production-telemetry">Level 4: Continuous Production Telemetry</h3>
<p>Evaluation does not stop when code ships. The system  <a href="/blog/2025-03-31-ai-observability-deep/"
   
   >keeps watching in production</a>
 and turns incidents into future tests.</p>
<p>At Level 4, an asynchronous sampling job pulls 5% of production responses, scores them with a cheaper model or other fast evaluator, and flags anomalies. When something goes wrong, the exact input/output pair that caused it becomes a regression test. The system assumes drift is normal, because with LLMs, it is.</p>
<h3 id="level-5-governance-as-a-strategic-moat">Level 5: Governance as a Strategic Moat</h3>
<p>Evaluation shapes architecture before code is written. Quality and privacy are constraints that drive the design from the start.</p>
<p>At Level 5, the team knows how much reasoning quality they give up if they move traffic from a large cloud API to a quantized local 8B model, because they have the metrics to prove it. That gives the CTO real room to choose between margin, latency, and data sovereignty. It also lets the company close larger enterprise deals because it can show, in operational terms, where customer data lives and where it does not.</p>
<h2 id="how-to-force-maturity">How to Force Maturity</h2>
<p>If you are leading a team stuck at Level 1 or 2, you will not buy your way out with a new tool. You have to change how releases work.</p>
<ol>
<li><strong>Stop accepting demos.</strong> Do not ship the next feature unless it includes a 20-case eval suite attached to the PR.</li>
<li><strong>Wire it to CI.</strong> If evaluation does not block the deploy, it is a suggestion, not a control.</li>
<li><strong>Build circuit breakers.</strong> Treat the model like a  <a href="/blog/2026-04-21-enterprise-ai-architecture-fails/"
   
   >flaky dependency</a>
. If it fails to return valid JSON three times, fall back to a deterministic system or fail safely. Do not hand hallucinations to the user and call that progress.</li>
</ol>
]]></content:encoded></item><item><title>AI Capital Allocation: What to Stop Funding First</title><link>https://lawzava.com/blog/2026-04-16-ai-capital-allocation-what-to-stop-funding/</link><pubDate>Thu, 16 Apr 2026 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-04-16-ai-capital-allocation-what-to-stop-funding/</guid><description>Strong AI strategy starts with a kill list. If a project cannot defend margin, risk, or speed, it should not survive the next budget meeting.</description><content:encoded><![CDATA[<p>Great AI teams do not start with a roadmap. They start with a kill list. If a project cannot defend margin, risk, or speed, it does not deserve the next budget cycle. Capital is finite. Attention is finite. Support burden is finite.</p>
<p>Most companies treat AI spend as a separate class of spend. It competes with product work, platform work, hiring, and operational debt like everything else. If you cannot explain why an AI initiative deserves scarce capital, you are not allocating capital. You are subsidizing hope.</p>
<h2 id="capital-allocation-is-the-first-product-decision">Capital Allocation Is the First Product Decision</h2>
<p>Capital allocation is not a finance problem that happens to engineering. It is a technical leadership problem with finance consequences.</p>
<p>Every AI project consumes three things:</p>
<ul>
<li>engineering time</li>
<li>infrastructure budget</li>
<li>organizational attention</li>
</ul>
<p>If the project does not improve one of three board-level outcomes (margin expansion, risk compression, or execution speed), it is likely a vanity project wearing a product costume.</p>
<p>That does not mean the project has to be immediately profitable. It does mean you should be able to state what gets better if the project works and what gets worse if it does not.</p>
<h2 id="what-should-die-first">What Should Die First</h2>
<p>The easiest place to make mistakes is the demo room. The second easiest is the budget meeting.</p>
<p>Stop funding these first:</p>
<ol>
<li>
<p><strong>Thin demos that do not survive workflow reality.</strong>
If the user needs three manual edits after every response, you have built a presentation layer, not a product.</p>
</li>
<li>
<p><strong>Duplicate platform work.</strong>
If two teams are building separate prompt orchestration, evaluation, or routing layers, one of them should stop. Duplication feels like speed until the maintenance bill lands.</p>
</li>
<li>
<p><strong>Ambiguous experiments with no owner.</strong>
“We should explore AI” is not a strategy. It is a permission slip for drift.</p>
</li>
<li>
<p><strong>Projects with no measurable failure mode.</strong>
If nobody can say what counts as bad output, bad latency, bad cost, or bad adoption, the project cannot be managed.</p>
</li>
</ol>
<p>There is a simple reason these projects linger: they are emotionally easy to defend. Nobody wants to kill a project that sounds innovative. But if you cannot defend it with numbers, the project is not innovative. It is unpriced.</p>
<h2 id="the-kill-list-rubric">The Kill-List Rubric</h2>
<p>A good kill list is a decision system. Personal dislikes don&rsquo;t belong on it.</p>
<p>Before funding a new AI initiative, ask three questions:</p>
<ul>
<li><strong>Does this increase margin, reduce risk, or improve speed?</strong></li>
<li><strong>Can we measure that effect within one quarter?</strong></li>
<li><strong>Do we own the fallback if the model or vendor changes?</strong></li>
</ul>
<p>If the answer to all three is not yes, the default should be no.</p>
<p>This is where a lot of teams get sentimental. They continue funding because the project has a sponsor, or because it already consumed sunk cost, or because it looks good in a board deck. Those are weak reasons to keep a system alive.</p>
<p>Strong reasons to keep funding an AI initiative usually look like this:</p>
<ul>
<li>it replaces high-volume manual work</li>
<li>it improves decision quality in a regulated workflow</li>
<li>it reduces customer wait time</li>
<li>it protects a revenue stream that depends on fast, accurate responses</li>
</ul>
<p>Notice that none of those reasons mention hype.</p>
<h2 id="what-to-keep-funding-instead">What to Keep Funding Instead</h2>
<p>The highest-return AI investments are boring in the best way.</p>
<p>Fund the parts that make the system measurable and durable:</p>
<ul>
<li>retrieval and context quality</li>
<li> <a href="/blog/2024-02-19-evaluating-llm-applications/"
   
   >evaluation harnesses</a>
</li>
<li>fallback logic</li>
<li> <a href="/blog/2024-03-18-multi-model-strategies/"
   
   >routing by task class</a>
</li>
<li>observability around bad outputs and retries</li>
<li>workflow-specific data collection</li>
</ul>
<p>Chasing the smartest model is a poor use of that money. Build a system that can absorb model churn without forcing a rewrite every six months.</p>
<p>A useful line to keep in mind: <strong>if a system cannot be measured under load, it is still a pilot.</strong> Pilots are fine. Pilots just should not keep consuming production budget forever.</p>
<h2 id="the-hard-part-is-saying-no">The Hard Part Is Saying No</h2>
<p>The best operators are not famous for being aggressive spenders. They are famous for being disciplined about what they do not fund.</p>
<p>That discipline becomes a reputation asset. The founder who sees you delete a weak AI project starts trusting your judgment. The board member who sees you cut duplicate work starts trusting your signal. The engineering team that sees you protect their time starts trusting your priorities.</p>
<p>Capital allocation is how you tell the truth about what matters. If a project cannot defend margin, risk, or speed, it should not survive by momentum alone. Fund the systems that make AI measurable, recoverable, and cheap to operate. Cut the rest.</p>
]]></content:encoded></item><item><title>AI Strategy for CTOs: It's Data Infrastructure</title><link>https://lawzava.com/blog/2026-04-14-ai-cto-perspective/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-04-14-ai-cto-perspective/</guid><description>AI strategy for CTOs: the moat is the context pipeline, the eval loop, and the fallback path. Picking a model is the easiest problem in the room.</description><content:encoded><![CDATA[<p>If your AI plan still starts with &ldquo;which model should we buy,&rdquo; you are solving the easiest problem in the room. In 2026, a CTO&rsquo;s AI strategy is an operating model for data, latency, evaluation, and failure. The model will change. The system around it should not. The moat is the pipeline that feeds context, the eval loop that catches regressions, and the fallback path that keeps the product standing when the model misses.</p>
<h2 id="the-strategy-is-the-infrastructure">The Strategy Is the Infrastructure</h2>
<p>The single biggest mistake engineering organizations make is treating the model as the brain. It is not. It is the most expensive dependency in the stack.</p>
<p>The brain is everything you build around it: context assembly, retrieval, validation, retries, telemetry, and rollback.</p>
<p>A CTO must focus ruthlessly on three pillars:</p>
<h3 id="1-the-context-pipeline">1. The Context Pipeline</h3>
<p>The model is only as intelligent as the context you feed it. If Postgres, Cassandra, or Scylla takes five seconds to assemble structured context, encode it, and hand it to the orchestrator, your feature is already late before inference begins.</p>
<p>Strategy means architecting data replication, embedding generation, and caching so the latency budget stays intact for the inference layer. If your data infrastructure is not close to real time, your AI will not be either.</p>
<h3 id="2-the-evaluation-framework">2. The Evaluation Framework</h3>
<p>If your organization is still eyeballing model outputs before deployment, you are running a pilot, not a production system.</p>
<p>Leadership means demanding continuous evaluation. Every PR that touches an orchestration layer must be blocked by a CI pipeline that runs 500 deterministic evals against the new reasoning flow. Building that telemetry <em>is</em> the AI strategy.</p>
<h3 id="3-graceful-degradation-and-fallbacks">3. Graceful Degradation and Fallbacks</h3>
<p>LLMs fail. APIs throttle. Endpoints rotate. If a model hallucinates malformed JSON and your core application crashes, that is an architectural failure. The model only exposed it.</p>
<p>A mature strategy wraps every AI interaction in  <a href="/blog/2026-03-23-agenticops-networking-bottleneck/"
   
   >circuit breakers</a>
. If the model fails three times, what is the deterministic fallback? If the cloud provider rate-limits you, where is the  <a href="/blog/2024-08-05-small-models-big-impact/"
   
   >local, quantized 8B-parameter fallback model</a>
 running in your own cluster?</p>
<h2 id="stop-chasing-the-frontier">Stop Chasing the Frontier</h2>
<p>The frontier-model conversation is a distraction. Unless you are OpenAI, Anthropic, or Google, you do not win by having the smartest model. You win by having the tightest feedback loop, the cleanest data access, and the lowest cost per transaction.</p>
<p>A strong CTO designs for  <a href="/blog/2024-03-18-multi-model-strategies/"
   
   >swapability</a>
: a single configuration commit, zero downtime, and telemetry that proves the new model performs 4% better on the exact workload that matters.</p>
<p>That is the strategy. Everything else is theater.</p>
]]></content:encoded></item><item><title>The Throughput Engineer: Why Headcount Is a Lagging Metric</title><link>https://lawzava.com/blog/2026-03-30-throughput-engineer-headcount-lagging-metric/</link><pubDate>Mon, 30 Mar 2026 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-03-30-throughput-engineer-headcount-lagging-metric/</guid><description>Headcount is a lagging metric. The best engineering organizations measure throughput: decision speed, defect containment, and constraint removal.</description><content:encoded><![CDATA[<p>Headcount is an input. Throughput is an outcome. The best engineering organizations have stopped asking &ldquo;how many engineers do we need?&rdquo; and started asking &ldquo;what&rsquo;s blocking the engineers we have?&rdquo; Teams that optimize for decision speed, defect containment, and execution clarity outperform teams twice their size. Hiring more people into a broken system just makes the system break faster.</p>
<h2 id="the-metric-everyone-tracks-and-nobody-questions">The Metric Everyone Tracks and Nobody Questions</h2>
<p>Every quarterly planning cycle, the same conversation happens. The roadmap is too ambitious for the team. The proposed solution is more headcount. The exec team approves some fraction of the ask. Six months later, the team is bigger but the roadmap is still slipping.</p>
<p>This pattern persists because headcount is easy to measure and feels actionable. You can put a number on a slide. You can point to it in a board meeting and say &ldquo;we&rsquo;re investing in engineering.&rdquo;</p>
<p>But headcount measures capacity the way adding lanes measures highway throughput. It works up to a point, then coordination overhead offsets the capacity gain. The tenth engineer doesn&rsquo;t add 10% more output. They add nine new communication paths (36 becomes 45, a 25% jump), more code review load, and another person who needs context on every architectural decision.</p>
<p>The organizations getting this right have shifted to outcome metrics. They ask how fast decisions move from identification to resolution, where they used to ask how many people they have. They ask about  <a href="/blog/2022-01-24-dora-metrics-implementation/"
   
   >change failure rate</a>
 and recovery time, where they used to count merged PRs.</p>
<h2 id="staff-growth-versus-constraint-removal">Staff Growth Versus Constraint Removal</h2>
<p>Adding staff is an additive intervention. It puts more resources into the system. Constraint removal is a multiplicative intervention. It makes every existing resource more effective.</p>
<p>Consider a team of eight engineers where the average PR sits in review for 18 hours. Hiring two more engineers does nothing to fix the review bottleneck. It makes it worse because there are now more PRs competing for the same review bandwidth. But changing the review process, setting a 4-hour SLA, pairing reviewers with authors, and shrinking PR scope, can cut that 18 hours to 4 without adding a single person.</p>
<p>The same principle applies at every level. Slow deploys, unclear ownership, meetings that could be async documents, long approval chains. Each costs every engineer on the team hours per week. Multiply by team size and the waste adds up fast.</p>
<p>If 20 engineers each lose 5 hours per week to process friction, that&rsquo;s 100 engineer-hours, equivalent to 2.5 full-time engineers doing nothing but waiting. Removing the friction is cheaper than hiring, faster to implement, and doesn&rsquo;t increase coordination costs.</p>
<p> <a href="/blog/2025-10-13-ai-team-productivity/"
   
   >AI tooling</a>
 has made this dynamic sharper. A well-structured team with good tooling and clear ownership regularly outships teams twice its size. But a poorly structured team with AI tooling just generates more half-finished work faster. AI amplifies the system it operates in, good or bad.</p>
<h2 id="the-operating-system-of-a-high-throughput-team">The Operating System of a High-Throughput Team</h2>
<p>High-throughput teams share three operational patterns that have nothing to do with individual talent.</p>
<p><strong>Clear intent over detailed instructions.</strong> When an engineer picks up a task, they should know the outcome that matters, not the exact steps to get there. &ldquo;Reduce P95 latency on the search endpoint below 200ms&rdquo; is clear intent. &ldquo;Refactor the search query builder to use connection pooling&rdquo; is a solution masquerading as a task. The first lets the engineer use judgment. The second removes it.</p>
<p>Teams that operate on intent move faster because decisions happen at the point of most information, the engineer doing the work, rather than being routed through a manager who has less context. This requires trust, and trust requires that the intent is genuinely clear and that the engineer has the authority to make reasonable tradeoffs.</p>
<p><strong>Delegated authority with explicit boundaries.</strong> Every recurring decision type should have a documented owner and a decision boundary. &ldquo;The on-call engineer can roll back any deploy without approval&rdquo; is a delegation. &ldquo;Database schema changes require review from the data team&rdquo; is a boundary. When these are written down and understood, decisions happen in minutes instead of hours.</p>
<p>The failure mode is implicit authority. Nobody knows who can make the call, so everyone escalates. The escalation chain adds latency to every decision. In a team of 15, this can mean that a simple operational decision takes a day instead of an hour because it bounces between three people who each assume someone else owns it.</p>
<p><strong> <a href="/blog/2020-04-13-async-communication-practices/"
   
   >Async-first communication</a>
.</strong> Synchronous communication, meetings, Slack pings expecting immediate response, tap-on-the-shoulder interruptions, is the most expensive coordination mechanism. It requires everyone to be available simultaneously and context-switch away from focused work.</p>
<p>Async-first doesn&rsquo;t mean no meetings. It means meetings are for decisions that genuinely require real-time discussion. Everything else is a written document, a recorded decision in a ticket, or a code review comment.</p>
<h2 id="a-weekly-operating-cadence">A Weekly Operating Cadence</h2>
<p>Decision tempo separates high-throughput teams from slow ones. A lightweight weekly cadence keeps the system self-correcting without drowning in noise.</p>
<p><strong>Weekly: review leading metrics.</strong> Cycle time from commit to production, change failure rate, time to recover from incidents, review queue depth, and decision latency on open questions. Don&rsquo;t track vanity metrics like lines of code or number of PRs.</p>
<p><strong>Biweekly: connect signals to causes.</strong> Is cycle time creeping up? Is one team&rsquo;s change failure rate spiking? Are the same types of decisions getting stuck repeatedly? The goal is systemic diagnosis, not individual blame.</p>
<p><strong>Biweekly: pick one constraint to remove.</strong> &ldquo;This sprint, we&rsquo;re going to cut our deploy time from 45 minutes to under 10&rdquo; is a decision. &ldquo;We&rsquo;re going to improve developer experience&rdquo; is not. One thing, not five.</p>
<p><strong>Continuous: execute, measure, repeat.</strong> Act on the decision, measure the result, and feed it back into the next weekly review. If cutting deploy time didn&rsquo;t improve cycle time, the constraint was elsewhere. Move to the next one.</p>
<h2 id="incentives-that-reward-impact-over-activity">Incentives That Reward Impact Over Activity</h2>
<p>Most engineering organizations accidentally incentivize busyness. The engineer who closes the most tickets gets praised. The team that ships the most features gets the biggest headcount allocation. The manager who runs the most meetings looks the most engaged.</p>
<p>Throughput-oriented incentives look different.</p>
<p>Reward engineers who eliminate recurring work, not just complete it. The engineer who automates away a manual process that costs the team 10 hours per week has created more value than the engineer who ships a new feature used by 50 people.</p>
<p>Reward teams that improve their own throughput metrics, not just output volume. A team that cuts its change failure rate from 15% to 3% has freed up enormous capacity that was previously spent on rollbacks, hotfixes, and incident response. That&rsquo;s worth more than two new features.</p>
<p>Reward leaders who make themselves less necessary. The manager whose team operates smoothly when they&rsquo;re on vacation has built a better system than the manager who&rsquo;s cc&rsquo;d on every decision.</p>
<h2 id="a-12-week-operating-reset">A 12-Week Operating Reset</h2>
<p>For teams experiencing delivery drag, a structured reset works better than a reorg.</p>
<p><strong>Weeks 1-3: Measure.</strong> Instrument cycle time, change failure rate, review latency, and decision latency. Don&rsquo;t change anything yet. Establish a baseline that everyone agrees on.</p>
<p><strong>Weeks 4-6: Remove one constraint.</strong> Pick the biggest bottleneck revealed by the data. If review latency is the worst, fix the review process. If deploy time is the worst, fix the pipeline. One constraint at a time.</p>
<p><strong>Weeks 7-9: Delegate and document.</strong> Write down the top 10 recurring decision types and who owns each one. Set decision boundaries. Remove one layer of approval from the most common workflow.</p>
<p><strong>Weeks 10-12: Sustain.</strong> Establish the weekly review cadence. Compare throughput metrics to the week-1 baseline. Identify the next constraint. Make the cycle self-reinforcing.</p>
<p>Teams that complete this reset usually see cycle time drop without adding staff. The improvement comes from removing friction that was invisible because everyone had adapted to it.</p>
<h2 id="board-facing-metrics-that-map-engineering-to-business-risk">Board-Facing Metrics That Map Engineering to Business Risk</h2>
<p>Boards understand risk and return. Translate engineering throughput into those terms.</p>
<p><strong>Cycle time</strong> maps to market responsiveness. &ldquo;We can respond to a competitor move in days, not months&rdquo; is a strategic capability that boards care about.</p>
<p><strong>Change failure rate</strong> maps to operational risk. &ldquo;5% of our changes cause incidents&rdquo; is a risk number a board can evaluate, especially when paired with the cost of those incidents.</p>
<p><strong>Recovery time</strong> maps to resilience. &ldquo;When something breaks, we fix it in under an hour&rdquo; is a durability statement that affects customer trust and revenue protection.</p>
<p><strong>Decision latency</strong> maps to organizational agility. &ldquo;Strategic decisions take 2 days to reach execution, not 2 weeks&rdquo; tells the board that the organization can adapt.</p>
<p>None of these metrics mention headcount. That&rsquo;s the point. Headcount funds capacity. These metrics measure whether that capacity produces results.</p>
]]></content:encoded></item><item><title>AI Team Structures 2026: Central, Embedded, and Hybrid Models</title><link>https://lawzava.com/blog/2026-02-16-ai-team-structures/</link><pubDate>Mon, 16 Feb 2026 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2026-02-16-ai-team-structures/</guid><description>Central, embedded, or hybrid AI team? How to decide where AI ownership lives, with roles, tradeoffs, platform-to-product ratios, and scaling rules.</description><content:encoded><![CDATA[<p>By mid-February 2026, the org question has moved from &ldquo;should we have an AI team?&rdquo; to &ldquo;where does ownership live?&rdquo; AI work has shifted from experiments to ongoing product and operations work, and most organizations that ship AI features have converged on a small set of structures. The best ones make evaluation, cost, and incident response someone&rsquo;s job instead of a shared worry. Most teams land on a hybrid: a small enabling platform group plus embedded delivery in product teams.</p>
<p>The right choice still depends on maturity, product criticality, and how much shared infrastructure is needed. The structure also changes how teams manage  <a href="/blog/2026-02-09-ai-cost-trends/"
   
   >AI inference cost</a>
,  <a href="/blog/2026-01-26-ai-native-architecture-2026/"
   
   >AI-native architecture</a>
, and governance. This post covers structures that stay stable under real delivery pressure.</p>
<h2 id="team-models-that-hold-up">Team models that hold up</h2>
<h3 id="central-platform-team">Central platform team</h3>
<p>A central platform team builds and operates shared AI infrastructure, evaluation tooling, and common components. This model fits organizations that need consistency, strong governance, and shared reliability across many teams. It works particularly well in regulated industries where auditability and compliance require one view across all AI usage.</p>
<p>Where it breaks down is speed. When every product team routes requests through a central group, the platform team becomes a bottleneck. This is common in organizations with ten or more product teams sharing a three-person AI platform group. The queue grows, the platform team triages by business priority, and lower-priority teams either wait or build workarounds. If you choose this model, staff it generously or accept that iteration speed will be gated.</p>
<h3 id="embedded-in-product-teams">Embedded in product teams</h3>
<p>AI engineers live inside product teams and ship features end to end. This model fits products where AI is core to user experience and iteration speed matters. A team building a search product or a conversational interface benefits from having the AI engineer sit in the same standup, hear the same customer feedback, and own the same on-call rotation as the rest of the squad.</p>
<p>The risk is fragmentation. When several product teams solve the same problems independently, you end up with three prompt evaluation frameworks, two model routing strategies, and no shared understanding of cost. This model works best when you have a small number of product teams, or when AI use cases are different enough that shared infrastructure would not save much effort.</p>
<h3 id="hybrid-model">Hybrid model</h3>
<p>A small platform team provides shared foundations while product teams embed AI engineers for delivery. This is the most common model because it balances infrastructure consistency with product-team autonomy.</p>
<p>The platform team in a hybrid model typically owns inference infrastructure, model selection and routing, shared evaluation tooling, and cost observability. Product-team AI engineers own feature-level prompts, domain-specific evaluation datasets, and production behavior for their use case. The boundary between these layers matters more than the org chart. Writing down the interface contract, what the platform provides and what the product team owns, prevents most of the friction that kills hybrid models.</p>
<p>The hybrid model fails when the platform team behaves like an internal vendor rather than an enabling function. If product teams have to file tickets and wait for releases to get basic capabilities, you&rsquo;re back to the central bottleneck problem with extra steps. The platform team should ship self-serve tooling and stay close to the product engineers who use it.</p>
<h2 id="decision-criteria">Decision criteria</h2>
<p>Use the structure that matches the work, not the other way around. Three factors tend to dominate the decision.</p>
<p>First, how many teams need the same AI capabilities and standards. If the answer is two, embedded is fine. If it&rsquo;s eight, you need a platform function or you will drown in duplication.</p>
<p>Second, how frequently AI features ship and change. High iteration velocity favors embedded engineers who can move with the product team&rsquo;s sprint rhythm. Slower, more deliberate releases are easier to route through a central group.</p>
<p>Third, how much operational risk and compliance pressure exists. Regulated environments benefit from centralized governance and audit trails. Lower-risk consumer products can afford more distributed ownership.</p>
<p>Add one more that teams often forget: <strong>how expensive mistakes are</strong>. If the blast radius is high, you want tighter standards, stronger review, and explicit gating.</p>
<h2 id="roles-and-responsibilities-in-2026">Roles and responsibilities in 2026</h2>
<h3 id="ai-engineer">AI engineer</h3>
<p>Builds AI features inside product flows, owns evaluation in production, and partners with design and data for quality. The role blends software engineering with systematic testing and monitoring. In 2026, the AI engineer is distinct from the ML engineer or data scientist. An ML engineer typically focuses on model training, fine-tuning, and training infrastructure. A data scientist focuses on analysis, experiment design, and statistical rigor. The AI engineer works downstream of both: integrating models into products, building evaluation harnesses that catch regressions, and owning production behavior. Think of it as the difference between building the engine and building the car.</p>
<h3 id="ai-platform-engineer">AI platform engineer</h3>
<p>Owns shared systems like inference services, evaluation pipelines, and model routing. The focus is reliability, scale, and cost control for many teams at once. This role requires strong infrastructure engineering skills and an understanding of how product teams consume AI capabilities. Strong platform engineers pair with product-team AI engineers to understand real usage patterns rather than building abstractions in isolation.</p>
<h3 id="ai-product-manager">AI product manager</h3>
<p>Defines the use case scope, success metrics, and rollout plan. The role emphasizes rigorous tradeoffs between quality, latency, and cost, with clear ownership of user outcomes. An AI PM needs to be comfortable with probabilistic behavior and must resist the urge to promise deterministic results. They own the decision of when a feature is good enough to ship and when it needs more evaluation investment.</p>
<h2 id="team-size-and-scaling">Team size and scaling</h2>
<p>Most teams start too large. A single AI engineer embedded in a product team, supported by a lightweight shared toolkit, is enough to validate whether AI adds value to a workflow. Scaling up before validation leads to expensive teams that optimize solutions to the wrong problems.</p>
<p>For the platform function, two to three engineers can support four or five product teams if the scope is well-defined. Once you pass that ratio, the platform team needs to grow or the scope needs to shrink. A common mistake is building a platform team of six that tries to serve fifteen product teams and ends up serving none of them well.</p>
<p>When hiring, prioritize engineers who have shipped AI features into production over those with impressive research backgrounds but no operational experience. The gap between a working prototype and a reliable production system is where most AI projects stall, and that gap is an engineering problem, not a research problem.</p>
<h3 id="ai-security--governance-partner">AI security / governance partner</h3>
<p>Whether this is a dedicated role or a shared function, someone must own policy: data handling rules, permission models, logging requirements, and review gates. Teams that skip this role tend to slow down later under audit pressure.</p>
<h2 id="common-failure-modes">Common failure modes</h2>
<p>These patterns show up across teams. Platform teams that ship abstractions without enabling product speed often build elaborate internal APIs nobody asked for while product teams work around them. Product teams that skip evaluation and discover quality issues late usually treat AI features like deterministic code, then get surprised when behavior drifts after a model update. Ambiguous ownership for model behavior in production creates incidents where nobody knows whether the platform team or the product team should respond. Usually it is both, but the escalation path was never defined.</p>
<h2 id="what-this-looks-like-at-different-sizes">What This Looks Like At Different Sizes</h2>
<ul>
<li><strong>Small startup (1 to 2 AI engineers)</strong>: embed in the product, keep tooling lightweight, and use strict output validation plus a small eval set. Avoid platform work that nobody will maintain.</li>
<li><strong>Mid-size company (multiple product teams)</strong>: introduce a small platform function to own routing, eval tooling, and shared guardrails, while keeping delivery embedded in product teams.</li>
<li><strong>Large org (regulated, many teams)</strong>: platform + governance becomes non-negotiable. Embedded teams still ship features, but standards, audit trails, and permissions need central ownership.</li>
</ul>
<h2 id="operating-practices-that-matter">Operating practices that matter</h2>
<p> <a href="/blog/2024-02-19-evaluating-llm-applications/"
   
   >Evaluation</a>
 is a first-class deliverable. Teams that ship reliably treat test sets, error analysis, and monitoring as part of every release. Evaluation datasets are versioned alongside code, and regressions in evaluation scores block releases the same way failing tests would.</p>
<p>Clear service ownership and on-call rotations prevent AI incidents from becoming orphaned problems. Every AI feature in production should have a named owner who is paged when it degrades. Cost management belongs in planning, not just finance review after launch. Model inference costs can surprise you, and the time to catch a cost spike is before it compounds for a month.</p>
<h2 id="a-pragmatic-starting-point">A pragmatic starting point</h2>
<p>If the organization is early, start embedded with a lightweight shared toolkit and a small platform function. As adoption grows, formalize the platform team and tighten standards. Revisit the structure every six months, because the problem shifts as AI moves from pilot to core workflow. The structure that got you to your first production feature is rarely the structure that will support your tenth.</p>
<h2 id="faq">FAQ</h2>
<h3 id="what-is-the-best-ai-team-structure-in-2026">What is the best AI team structure in 2026?</h3>
<p>For most companies, the best default is hybrid: a small platform group owns shared infrastructure, routing, evaluation, and governance, while product teams own delivery and workflow quality.</p>
<h3 id="when-should-ai-engineers-be-embedded-in-product-teams">When should AI engineers be embedded in product teams?</h3>
<p>Embed AI engineers when iteration speed and workflow context matter more than central consistency. This works best when use cases are distinct or when the company is still validating where AI creates value.</p>
<h3 id="when-does-a-central-ai-platform-team-make-sense">When does a central AI platform team make sense?</h3>
<p>A central platform team makes sense when many product teams need the same model access, evaluation tooling, governance, and cost controls. It fails when it becomes a ticket queue.</p>
<h3 id="who-owns-ai-quality-in-production">Who owns AI quality in production?</h3>
<p>The product team should own user-facing behavior. The platform team should own shared reliability, model access, routing, observability, and guardrails. The interface between those teams must be explicit.</p>
]]></content:encoded></item><item><title>Scaling AI in the Enterprise Is a Management Problem</title><link>https://lawzava.com/blog/2025-11-24-ai-enterprise-scale/</link><pubDate>Mon, 24 Nov 2025 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2025-11-24-ai-enterprise-scale/</guid><description>AI pilots work. What fails is going from five demos to fifty production features without an operating model. That&amp;amp;rsquo;s a management problem.</description><content:encoded><![CDATA[<p>The simplest test for whether your enterprise is actually scaling AI: can a team outside the AI group ship a safe, supported AI feature without reinventing the wheel?</p>
<p>If the answer is no, you aren&rsquo;t scaling. You&rsquo;re doing pilots.</p>
<p>I see this constantly. The technology isn&rsquo;t the bottleneck. Models are good enough. The tooling exists. What&rsquo;s missing is the operating model: the boring work that turns a demo into something that runs in production for years, with clear ownership, predictable costs, and a way to handle failures.</p>
<h2 id="the-pilot-trap">The pilot trap</h2>
<p>Every large organization I&rsquo;ve worked with has successful  <a href="/blog/2024-06-03-enterprise-ai-adoption/"
   
   >AI pilots</a>
: impressive demos, enthusiastic teams. Then the question comes: &ldquo;How do we do this across 50 teams?&rdquo;</p>
<p>The answer is never &ldquo;give everyone API keys and let them figure it out.&rdquo; That path leads to duplicated effort, inconsistent security practices, and a support burden that lands on the same three experts who built the original pilot. I&rsquo;ve watched this happen more than once, including at a large telecom company I worked with. The pattern is remarkably consistent.</p>
<h2 id="what-an-ai-operating-model-looks-like">What an AI operating model looks like</h2>
<p>Separate shared capabilities from local execution. It&rsquo;s no more complicated than that.</p>
<p><strong>Shared capabilities</strong> are the things every team shouldn&rsquo;t have to reinvent:  <a href="/blog/2022-11-07-platform-engineering-rise/"
   
   >platform services</a>
, security guardrails, eval frameworks, model access, and policy. A small central group owns these. Their job is to make it easy to build safely.</p>
<p><strong>Local execution</strong> belongs to the business teams who own use cases and outcomes. They pick the problems. They ship the features. They own the quality.</p>
<p>The balance matters. Too centralized, and you create a bottleneck where every AI idea has to go through a committee. Too distributed, and you get security gaps, wasted spend, and inconsistent quality. The sweet spot is a lightweight forum that resolves cross-team issues and keeps standards current without becoming a gate.</p>
<h2 id="governance-as-a-lane-not-a-wall">Governance as a lane, not a wall</h2>
<p>The word &ldquo;governance&rdquo; makes engineers groan. I get it. But  <a href="/blog/2025-03-03-ai-governance-practice/"
   
   >governance done right</a>
 makes you faster, not slower.</p>
<p>The practical version is simple: data access is intentional and documented, model behavior is testable, audit trails exist, incident response has an owner, and rollback is a button, not a project.</p>
<p>If governance is a checklist that lives in a SharePoint nobody reads, teams will work around it. If it&rsquo;s embedded into the build process (eval gates in CI, prompt versioning in the repo, monitoring that ships with the feature), teams will rely on it because it makes their lives easier.</p>
<h2 id="enablement-not-evangelism">Enablement, not evangelism</h2>
<p>Scaling fails when enablement is treated like a training event. A two-hour workshop on &ldquo;prompt engineering&rdquo; doesn&rsquo;t help a product team ship a reliable feature. What helps: repeatable patterns, starter templates, and a support path that doesn&rsquo;t depend on cornering the same overworked ML engineer.</p>
<p>Extend the practices you already have. Your teams already know how to run CI pipelines, do code reviews, and  <a href="/blog/2021-09-06-feature-flags-at-scale/"
   
   >deploy behind feature flags</a>
. Add eval suites to the pipeline. Add prompt reviews to the PR process. Make AI features fit into the existing delivery workflow instead of inventing a parallel one.</p>
<h2 id="what-to-measure">What to measure</h2>
<p>Not tool adoption. Not number of pilots. Not &ldquo;AI maturity scores.&rdquo;</p>
<p>Track what&rsquo;s in production and whether it&rsquo;s maintained. Track support burden. Track which use cases are paused or retired. These signals tell leaders where to invest and what to stop. Everything else is decoration.</p>
<h2 id="the-sequence-that-works">The sequence that works</h2>
<p>Establish the platform and guardrails first. Prove the model with a small set of high-leverage use cases. Expand to more teams with consistent support. Review outcomes and simplify anything that causes friction.</p>
<p>The order matters. Each step creates the preconditions for the next. Skip ahead and you&rsquo;re scaling demand faster than capability, which is how you end up with 50 broken pilots instead of 5 working ones.</p>
<p>This is a management problem. Treat it like one.</p>
]]></content:encoded></item><item><title>Building AI Teams: Ownership and Evaluation Beat Hiring</title><link>https://lawzava.com/blog/2024-12-02-building-ai-teams/</link><pubDate>Mon, 02 Dec 2024 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2024-12-02-building-ai-teams/</guid><description>Most AI team failures come from unclear ownership and weak evaluation, not missing talent. Team structures that work, who to hire, and the operating loop.</description><content:encoded><![CDATA[<p>I&rsquo;ve spent the last few years on and around AI teams, at startups and at larger companies. One lesson keeps repeating: teams rarely fail at AI because they lack talent. They fail because nobody owns the outcome.</p>
<p>That sounds harsh. It&rsquo;s also true.</p>
<h2 id="the-ownership-gap">The Ownership Gap</h2>
<p>Here&rsquo;s how it usually goes. A company decides to &ldquo;do AI.&rdquo; They hire an ML engineer, maybe two. Those engineers build a demo. Leadership is impressed. Then someone asks, &ldquo;Who owns this in production?&rdquo; and the room goes quiet.</p>
<p>The ML engineer built the model. The product team didn&rsquo;t spec the success criteria. The data engineer wasn&rsquo;t involved. The designer has no idea what happens when the model gets it wrong. And nobody defined what &ldquo;getting it wrong&rdquo; even means.</p>
<p>I&rsquo;ve seen this exact pattern at large enterprises and small startups. The blocker is structure.</p>
<h2 id="three-models-that-work">Three Models That Work</h2>
<p>Every successful team I&rsquo;ve seen fits one of three structures, and the core tradeoff has not changed.</p>
<p><strong>Embedded.</strong> AI engineers sit inside product teams. They ship features directly, own the evaluation, and live with the consequences of their choices. This works when AI is a feature, not a platform. The downside: practices drift across teams because there&rsquo;s no central coordination.</p>
<p><strong>Platform.</strong> A central team builds shared infrastructure: model serving, evaluation harnesses, prompt management, observability. Product teams consume that platform. This works when multiple products need AI. The downside: the platform team gets pulled in every direction and loses focus on any single product.</p>
<p><strong>Hybrid.</strong> A platform team builds the core. Embedded engineers in product teams customize it. This is the most common pattern at companies that have scaled this successfully. It also requires the most coordination. Without clear ownership boundaries, it degenerates into blame-passing between platform and product.</p>
<p>Pick the model that matches your current scale, not the one you hope to need in two years.</p>
<h2 id="who-to-hire">Who to Hire</h2>
<p>The best  <a href="/blog/2024-01-08-ai-engineering-discipline/"
   
   >AI engineers</a>
 I&rsquo;ve worked with share a few traits that don&rsquo;t show up on resumes.</p>
<p>They can explain how their system fails. Not just how it works, but how it breaks and what happens when it does. This is the best interview signal I&rsquo;ve found.</p>
<p>They think in systems, not models. The model is one component. The retrieval layer, validation step, fallback path, and monitoring are just as important. A candidate who talks only about model architecture is missing the point.</p>
<p>They build evaluations before they build features. If you can&rsquo;t measure whether the thing works, you&rsquo;re guessing. The best engineers treat  <a href="/blog/2024-02-19-evaluating-llm-applications/"
   
   >eval sets</a>
 like test suites. They version them, maintain them, and refuse to ship without them.</p>
<p>They&rsquo;ve shipped something to real users. Not a notebook. Not a demo. Something people used, complained about, and forced them to iterate on. Production experience changes how you think about every design choice.</p>
<h2 id="the-operating-loop">The Operating Loop</h2>
<p>Fancy process frameworks aren&rsquo;t necessary. A tight loop between four phases covers it:</p>
<p><strong>Discovery.</strong> Define success in measurable terms. What does &ldquo;good&rdquo; look like? What are the edge cases? Is the data available? A clear definition of success is worth more than a long list of ideas.</p>
<p><strong>Prototyping.</strong> Run small experiments with real examples. Document the failures, not just the successes. Bring domain experts in early. They know the edge cases you&rsquo;ll miss.</p>
<p><strong>Development.</strong> Build the evaluation suite first. Version prompts and retrieval logic as code. Test against known failure cases whenever models or data change.</p>
<p><strong>Production.</strong> Roll out gradually. Monitor quality and cost in the same dashboard. Treat regressions as product issues with named owners, not vague &ldquo;the model changed&rdquo; explanations.</p>
<h2 id="what-goes-wrong">What Goes Wrong</h2>
<p>The problems I see most often aren&rsquo;t technical:</p>
<ul>
<li>Nobody owns evaluation for a specific feature. There&rsquo;s a shared checklist but no named person.</li>
<li>Success criteria are undefined, so feedback becomes opinion. &ldquo;This doesn&rsquo;t feel right&rdquo; isn&rsquo;t actionable.</li>
<li>The pipeline is too complex for the use case. Someone built a multi-agent system for what should have been a single prompt.</li>
<li>Knowledge stays in people&rsquo;s heads. When someone leaves, the team loses context that took months to build.</li>
</ul>
<p>Fix these four problems and you&rsquo;re ahead of most AI teams. No new tools required. No new hires. Just clarity about who owns what and how you know it&rsquo;s working.</p>
]]></content:encoded></item><item><title>Why Enterprise AI Pilots Stall Between Demo and Production</title><link>https://lawzava.com/blog/2024-06-03-enterprise-ai-adoption/</link><pubDate>Mon, 03 Jun 2024 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2024-06-03-enterprise-ai-adoption/</guid><description>Most enterprise AI pilots stall between demo and production. The blockers are organizational: ownership, security review, data access, governance.</description><content:encoded><![CDATA[<p>Every enterprise AI conversation I&rsquo;ve had this year follows the same arc. Someone builds a proof of concept. The demo goes well. Leadership gets excited. Then, three months later, the project is stuck in limbo: security reviews, data access requests, and nobody quite sure who actually owns it.</p>
<p>I see this pattern across telecom and fintech organizations, large and small. The demo-to-production gap is an organizational problem far more than a technical one.</p>
<h2 id="the-demo-was-the-easy-part">The demo was the easy part</h2>
<p>A POC can skip everything that makes enterprise software hard. It runs on a developer&rsquo;s laptop with test data. It doesn&rsquo;t need to handle real user volumes. During a demo, nobody asks about audit trails or data retention policies.</p>
<p>Then the project moves toward production and reality hits. Security wants a threat model. Legal wants to know where the data goes. The platform team wants to know who pays for compute. The data science team discovers the training data is messier than expected. None of this is surprising. These are the same problems every enterprise system faces, plus a few new AI-specific ones: model drift, prompt management, and probabilistic outputs.</p>
<p>The teams that get stuck are the ones that treated the POC as the starting line instead of a feasibility check.</p>
<h2 id="start-boring-stay-boring">Start boring, stay boring</h2>
<p>The single best predictor of success I&rsquo;ve seen is picking a first use case that&rsquo;s low-risk and internal. Something where a human reviews the output before anything happens. Document summarization for internal teams. Draft generation for support responses that get edited before sending. Classification of inbound requests to route them to the right queue.</p>
<p>These aren&rsquo;t exciting. That&rsquo;s the point. You want a use case where a bad output is an inconvenience, not a liability. One where you can iterate on prompts and evaluate quality without a customer ever seeing an unpolished result.</p>
<p>I keep telling teams the same thing: your first AI feature should be invisible to customers. Ship it internally, prove it works, build the muscle memory for operating AI in production, then expand.</p>
<h2 id="build-the-platform-before-the-pilots-multiply">Build the platform before the pilots multiply</h2>
<p>Here&rsquo;s what happens when you don&rsquo;t have a shared platform: every team builds its own integration. They pick different models, prompt patterns, and logging approaches. Six months later, you have eight AI features and no way to compare quality, manage costs, or enforce policies across them.</p>
<p>The fix is unglamorous. Build a thin shared layer early. It needs three things:</p>
<ol>
<li><strong>Centralized model access</strong> with authentication, rate limiting, and cost tracking.</li>
<li><strong>A prompt registry</strong> so prompts are versioned, reviewable, and not buried in application code.</li>
<li><strong> <a href="/blog/2024-02-19-evaluating-llm-applications/"
   
   >Evaluation tooling</a>
</strong> that every team can use to measure output quality against a golden set.</li>
</ol>
<p>This doesn&rsquo;t need to be perfect or fully featured. It needs to exist before the third team starts building their own AI integration. I&rsquo;ve watched organizations try to consolidate after the fact. It&rsquo;s painful and expensive.</p>
<h2 id="governance-that-enables-instead-of-blocks">Governance that enables instead of blocks</h2>
<p>The worst governance models I see are designed by committee without input from the engineering teams that have to live with them. They produce a 40-page policy document, a six-week review cycle, and a strong incentive for teams to quietly build things without telling anyone.</p>
<p>Good governance is lightweight and fast, and it treats  <a href="/blog/2023-10-16-responsible-ai-development/"
   
   >responsible AI as risk management</a>
. A one-page use case template. A clear risk-tier system: low risk gets self-service approval, high risk gets review. A standing meeting where legal, security, and engineering are in the same room instead of a months-long email chain.</p>
<p>One organization I worked with reduced its AI approval cycle from eight weeks to five days by switching from a document-based review to a 30-minute live walkthrough with all stakeholders. Same rigor. Fraction of the time.</p>
<h2 id="the-organization-is-the-bottleneck">The organization is the bottleneck</h2>
<p>When enterprise AI projects fail, the organization is usually less ready than the technology. The AI works fine in the demo. The procurement process takes four months. The data team can&rsquo;t provide clean training data. The legal review has no precedent to follow, so it defaults to &ldquo;no&rdquo; until someone escalates.</p>
<p>If you want to ship AI in an enterprise, spend less time evaluating models and more time clearing organizational roadblocks. Get a budget owner. Get a security sponsor. Get data access sorted before you write the first prompt.</p>
<p>Process beats talent. Every time.</p>
]]></content:encoded></item><item><title>Restructuring Engineering Orgs After Layoffs</title><link>https://lawzava.com/blog/2023-06-12-engineering-org-restructuring/</link><pubDate>Mon, 12 Jun 2023 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2023-06-12-engineering-org-restructuring/</guid><description>Most post-layoff reorgs redraw boxes instead of fixing ownership gaps. What worked in 2023: explicit owners, killing work, and direct communication.</description><content:encoded><![CDATA[<p>I&rsquo;ve been pulled into three different &ldquo;help us restructure after layoffs&rdquo; conversations this year. The pattern is remarkably consistent. Company does  <a href="/blog/2022-11-14-tech-layoffs-engineering-resilience/"
   
   >layoffs</a>
 in Q4 2022 or Q1 2023. The remaining engineers are spread thin. Ownership is unclear. Two or three critical systems now belong to nobody. Leadership decides a reorg will fix it.</p>
<p>It usually doesn&rsquo;t. Not because reorgs are bad, but because they&rsquo;re solving the wrong problem. If your reorg is a PowerPoint exercise to make the reduced headcount look intentional, stop. Fix ownership gaps, not org charts. The people who survived the layoffs already know what&rsquo;s broken. Ask them.</p>
<h2 id="what-actually-happened">What actually happened</h2>
<p>Here&rsquo;s the real situation at most of these companies. They cut 20-30% of engineering. The layoffs weren&rsquo;t surgical. They hit across teams, sometimes based on recency bias or cost rather than capability. The survivors are demoralized, overloaded, and wondering if they&rsquo;re next.</p>
<p>Then someone proposes a reorg. New team names, new reporting lines, maybe a shift from project teams to product teams. The slide deck looks clean. The reality is chaos.</p>
<p>What these orgs need is three things: clear ownership of the systems that still matter, explicit decisions about what to stop doing, and honest communication that doesn&rsquo;t insult people&rsquo;s intelligence.</p>
<h2 id="when-a-reorg-is-actually-justified">When a reorg is actually justified</h2>
<p>Sometimes the layoffs genuinely changed the shape of the work enough that the old structure doesn&rsquo;t make sense. Real signals:</p>
<ul>
<li>Two teams were merged but nobody decided which team&rsquo;s approach wins, so both codebases rot.</li>
<li>A critical system lost its entire owning team and it&rsquo;s being maintained by whoever has time, which is nobody.</li>
<li>The product strategy changed alongside the layoffs, and the old team boundaries don&rsquo;t align to the new priorities.</li>
<li>Dependencies between teams have become the primary blocker because the connecting-tissue people were let go.</li>
</ul>
<p>These are structural problems that structural changes can help with.</p>
<h2 id="when-its-not">When it&rsquo;s not</h2>
<p>And sometimes the reorg is cover. I&rsquo;ve seen all of these:</p>
<ul>
<li>A new VP wants to &ldquo;put their stamp&rdquo; on things. The org was fine. The VP needed to justify their hire.</li>
<li>Conflict between two directors is being &ldquo;solved&rdquo; by separating their teams instead of addressing the conflict.</li>
<li>Leadership wants to signal activity to the board. &ldquo;We restructured&rdquo; sounds better than &ldquo;we&rsquo;re still figuring it out.&rdquo;</li>
<li>Someone read the Team Topologies book on a flight and now every conversation includes the phrase &ldquo;stream-aligned.&rdquo;</li>
</ul>
<p>If the root problem is people, process, or strategy, moving boxes around won&rsquo;t help. It&rsquo;ll just add a transition tax to an already exhausted org.</p>
<h2 id="what-i-actually-recommend">What I actually recommend</h2>
<p>Based on what&rsquo;s worked across these situations, the playbook is unsexy. Which is why it works.</p>
<p><strong>Step 1: Map what&rsquo;s actually broken.</strong> Not theoretically broken. Actually broken. Talk to the ICs. They know which systems are unowned, which dependencies are blocked, and which meetings are pointless. I usually spend the first week just listening. The engineers are relieved someone is asking.</p>
<p><strong>Step 2: Make ownership explicit.</strong> Write down, for every critical system: who owns it, who&rsquo;s on-call for it, and what the plan is. &ldquo;Shared ownership&rdquo; is a euphemism for &ldquo;no ownership.&rdquo; If a system matters, one team owns it. Full stop.</p>
<p><strong>Step 3: Kill things.</strong> This is the hard one. After layoffs, you have fewer people. You can&rsquo;t do the same amount of work. Something has to stop. The reorg should make it clear what&rsquo;s being stopped, not just what&rsquo;s being reorganized. At one company, the single most impactful change was killing two internal tools that each had one user. That freed up enough capacity to actually staff the important systems.</p>
<p><strong>Step 4:  <a href="/blog/2023-02-20-engineering-leadership-uncertainty/"
   
   >Communicate like adults</a>
.</strong> The worst thing I&rsquo;ve seen is the &ldquo;exciting restructuring&rdquo; email that uses words like &ldquo;streamlined&rdquo; and &ldquo;focused&rdquo; to describe what everyone knows was a layoff aftermath. Don&rsquo;t do that. Be direct: &ldquo;We lost good people. Here&rsquo;s how we&rsquo;re adjusting. Here&rsquo;s what we&rsquo;re stopping. Here&rsquo;s what we&rsquo;re doubling down on. Questions welcome.&rdquo;</p>
<p>At a mobility startup, we went through a version of this during a pivot. Smaller scale, but the same dynamics. The team that handled it best was the one where the lead said &ldquo;I don&rsquo;t have all the answers yet, but here&rsquo;s what I know and here&rsquo;s when I&rsquo;ll know more.&rdquo; Trust went up. Attrition went down.</p>
<h2 id="the-transition-matters-as-much-as-the-design">The transition matters as much as the design</h2>
<p>Even when the new structure is right, the transition can kill it. A few things that consistently matter:</p>
<ul>
<li><strong>In-flight work needs a home.</strong> Every project that&rsquo;s mid-stream needs an explicit owner in the new structure. Not &ldquo;we&rsquo;ll figure it out.&rdquo; A name, by the end of the week.</li>
<li><strong>New teams need a charter.</strong> Not a manifesto. A one-pager: what you own, what you don&rsquo;t, what your first quarter looks like. Teams that don&rsquo;t get this spend months figuring out their boundaries through conflict.</li>
<li><strong>Give it six months.</strong> The urge to tweak the new structure after four weeks is strong. Resist it. Reorgs take a full quarter to settle and another quarter to show results. Constant adjustment destroys any chance of stability.</li>
</ul>
<h2 id="how-to-know-if-it-worked">How to know if it worked</h2>
<p>Short-term (first month): are the ownership questions answered? Do people know who to go to? Has the &ldquo;who owns this?&rdquo; Slack question frequency dropped?</p>
<p>Medium-term (one quarter): is delivery predictability improving? Are cross-team dependencies less painful? Are the right things getting built?</p>
<p>Long-term (two quarters): retention. If you&rsquo;re losing the people you wanted to keep, the reorg failed regardless of what the delivery metrics say. The engineers who stayed through layoffs and a reorg have a very low tolerance for more disruption. Respect that.</p>
<h2 id="what-the-survivors-are-watching">What the survivors are watching</h2>
<p>Reorgs after layoffs are emotional events disguised as structural ones. The people in those boxes are tired, uncertain, and watching closely to see if leadership actually has a plan or is just rearranging furniture.</p>
<p>The best restructuring I&rsquo;ve seen this year was at a company where the CTO stood up and said: &ldquo;This is hard. We&rsquo;re going to get some of it wrong. But here&rsquo;s the logic, and here&rsquo;s how we&rsquo;ll adjust.&rdquo; No spin. No excitement. Just honesty.</p>
<p>That org stabilized in eight weeks. The one that did the polished all-hands with the aspirational vision? They&rsquo;re still losing people.</p>
]]></content:encoded></item><item><title>Leading Engineering Teams Through Uncertainty</title><link>https://lawzava.com/blog/2023-02-20-engineering-leadership-uncertainty/</link><pubDate>Mon, 20 Feb 2023 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2023-02-20-engineering-leadership-uncertainty/</guid><description>Early 2023 layoffs and budget cuts brought startup-style uncertainty to every engineering team. What helps: weekly updates, explicit stops, firm standards.</description><content:encoded><![CDATA[<p>I&rsquo;ve been through this before.</p>
<p>At a mobility startup, we ran out of runway while the product was still finding its footing. At a startup I founded, I built for a market that was still finding its legs. In a founder program, half the cohort pivoted their entire thesis in the first month. Uncertainty isn&rsquo;t a 2023 thing. It&rsquo;s a startup thing that finally hit big companies too.</p>
<p>The  <a href="/blog/2022-11-14-tech-layoffs-engineering-resilience/"
   
   >layoffs</a>
, budget cuts, and strategic pivots of early 2023 feel familiar to anyone who has founded something. The difference is scale. When it&rsquo;s your five-person startup, you talk it through over coffee. When it&rsquo;s a 200-person engineering org, the communication problem compounds fast.</p>
<h2 id="what-your-team-actually-needs">What Your Team Actually Needs</h2>
<p>When things get uncertain, engineers ask the same four questions no matter the company:</p>
<p>What matters right now? How stable is the direction? Do I have any say in this? And does my daily work actually connect to something real?</p>
<p>These aren&rsquo;t complicated needs. They just become urgent when the floor is shifting. You don&rsquo;t need perfect answers. You need consistent signals.</p>
<p>At a fintech startup, when we had to make hard prioritization calls, the single most useful thing I did was be direct about what we weren&rsquo;t going to build. People can handle &ldquo;we aren&rsquo;t doing X and here is why.&rdquo; They can&rsquo;t handle silence followed by a surprise reorg.</p>
<h2 id="communication-is-the-whole-job">Communication Is the Whole Job</h2>
<p>When I was working with larger organizations, I noticed something: the engineering leaders who struggled most were the ones who communicated least. Not because they were hiding things, but because they were waiting for certainty before saying anything.</p>
<p>That&rsquo;s backwards. In uncertain times, the absence of communication is the communication. And what it communicates is &ldquo;nobody knows and nobody is in charge.&rdquo;</p>
<p>A simple pattern that works: here is what we know and why it matters, here is what we don&rsquo;t know and when we&rsquo;ll revisit it, here are the decisions that flow from this context.</p>
<p>Say it every week. Even if nothing changed. Especially if nothing changed. That consistency is what creates trust.</p>
<h2 id="stop-starting-start-stopping">Stop Starting, Start Stopping</h2>
<p>When budgets tighten, the instinct is to do more with less. That&rsquo;s wrong. The correct move is to do less, better.</p>
<p>Ask three questions about every active project: Does it protect or grow the core business? What happens if we ship it versus if we delay it? Is there a smaller version that delivers the essential outcome?</p>
<p>If the answers are weak, pause the project. Explicitly. Say &ldquo;we&rsquo;re stopping this because we need to focus&rdquo; instead of letting it die quietly of resource starvation. Teams respect that. They don&rsquo;t respect the slow fade where a project is technically alive but has no one working on it.</p>
<h2 id="the-standards-that-cant-flex">The Standards That Can&rsquo;t Flex</h2>
<p>Pressure invites shortcuts. Some shortcuts are fine. Ship with less documentation. Defer the refactor. Reduce scope on a feature.</p>
<p>But some things are non-negotiable: security practices, code review on critical paths, and operational ownership for anything in production. When you cut those, you create compounding debt that hits you exactly when you can least afford it.</p>
<p>The job is to be explicit about where quality is required and where flexibility exists.</p>
<h2 id="resilience-isnt-a-motivational-poster">Resilience Isn&rsquo;t a Motivational Poster</h2>
<p> <a href="/blog/2022-12-12-building-resilient-teams/"
   
   >Resilience is operational</a>
. Cross-train key responsibilities so a single absence doesn&rsquo;t stall the team. Keep critical knowledge written down, not just in someone&rsquo;s head. Maintain a pace that doesn&rsquo;t depend on perpetual urgency.</p>
<p>I learned this the hard way at the mobility startup. We had one person who understood the payment integration end to end. When they were out for a week, we couldn&rsquo;t debug a billing issue that was actively losing us users. Never again.</p>
]]></content:encoded></item><item><title>Resilient Engineering Teams Are Boring Teams</title><link>https://lawzava.com/blog/2022-12-12-building-resilient-teams/</link><pubDate>Mon, 12 Dec 2022 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2022-12-12-building-resilient-teams/</guid><description>The engineering teams that got through 2022 best had the least drama: no heroics, no single points of failure, sane on-call, and bad news raised early.</description><content:encoded><![CDATA[<p>I have a theory about engineering teams: the boring ones win.</p>
<p>Not boring in the sense of uninspired. Boring in the sense of predictable. When something breaks, they know who handles it. When someone leaves, the work continues. When priorities shift, they adapt without a crisis meeting. Boring means the system works without heroics.</p>
<p>This year put that theory to the test.  <a href="/blog/2022-11-14-tech-layoffs-engineering-resilience/"
   
   >Layoffs</a>
, budget cuts, reorgs, shifting priorities: 2022 threw a lot at engineering teams. The ones that stayed productive through it all shared some common traits. None of them were flashy.</p>
<h2 id="heroics-are-a-smell">Heroics Are a Smell</h2>
<p>When you hear &ldquo;Sarah stayed up until 3am and saved the release,&rdquo; that isn&rsquo;t a success story. That&rsquo;s a failure story with a happy ending. It means the system depended on one person being awake and willing to sacrifice sleep. That works once. It doesn&rsquo;t work twice.</p>
<p>At a mobility startup, we had a period where our deployment process was held together by one engineer&rsquo;s knowledge and willpower. It felt fine until that engineer took a vacation and nobody knew how to handle a rollback. We fixed it by making the process boring: documented, automated, executable by anyone on the team.</p>
<p>Resilience is the opposite of heroics. It spreads capability so that no single failure, human or technical, creates a crisis.</p>
<h2 id="psychological-safety-isnt-a-buzzword">Psychological Safety Isn&rsquo;t a Buzzword</h2>
<p>I know &ldquo;psychological safety&rdquo; sounds like something from an HR slideshow. But it&rsquo;s the most practical thing I can recommend for team resilience.</p>
<p>If people on your team can&rsquo;t say &ldquo;I don&rsquo;t understand this,&rdquo; &ldquo;I made a mistake,&rdquo; or &ldquo;I think this plan is wrong,&rdquo; you have a team that hides problems until they become incidents. I&rsquo;ve seen this play out at multiple organizations this year. The teams that recovered fastest from shocks were the ones where bad news traveled quickly because people felt safe delivering it.</p>
<p>How to tell if your team has it:</p>
<ul>
<li>People ask questions in meetings instead of nodding along.</li>
<li>Risks get raised before they become outages.</li>
<li>Postmortems discuss systems and processes, not blame.</li>
</ul>
<p>Leaders set this tone through small repeated actions, not speeches. How you react to the first mistake someone reports to you determines whether they will report the next one.</p>
<h2 id="kill-single-points-of-failure-in-your-org-chart">Kill Single Points of Failure (In Your Org Chart)</h2>
<p>Every team has them. The person who&rsquo;s the only one who understands the billing system. The engineer who always handles the deploys. The manager who&rsquo;s the only one with context on why the architecture looks the way it does.</p>
<p>These aren&rsquo;t star performers. They&rsquo;re organizational risks.</p>
<p>Rotate on-call. Pair on critical systems. Document the &ldquo;why&rdquo; behind decisions, not just the &ldquo;what.&rdquo; Make sure at least two people can deploy, debug, and recover every service that matters. This isn&rsquo;t exciting work. It&rsquo;s the work that keeps the team functional when someone is sick, leaves, or gets pulled onto a different project.</p>
<p>At a large consumer platform, the infrastructure team made a deliberate effort to rotate ownership of critical services every quarter. It was slower in the short term. It made the team dramatically more resilient in the medium term.</p>
<h2 id="on-call-that-doesnt-burn-people-out">On-Call That Doesn&rsquo;t Burn People Out</h2>
<p>On-call is where team resilience gets stress-tested, and  <a href="/blog/2021-11-29-incident-management-practices/"
   
   >incidents</a>
 are where it shows. A sustainable rotation has a few non-negotiable properties:</p>
<p><strong>Alert quality matters.</strong> If your pager fires for things that aren&rsquo;t actually urgent, people stop taking it seriously. Tune your alerts. Remove the noise. Every false alarm erodes the team&rsquo;s willingness to respond.</p>
<p><strong>Runbooks must work under stress.</strong> A runbook that requires calm reading comprehension and background knowledge isn&rsquo;t a runbook. It&rsquo;s documentation. Real runbooks work at 2am when you&rsquo;re tired and anxious: clear steps, decision trees, escalation paths.</p>
<p><strong>Recovery time is real time.</strong> If someone gets paged at 3am, they shouldn&rsquo;t be expected to perform at full capacity the next morning. Build recovery time into the rotation. Burnout is a team problem, not an individual weakness.</p>
<h2 id="two-habits-that-compound">Two Habits That Compound</h2>
<p>After working with a lot of teams, I think two practices matter more than most:</p>
<p><strong>Retrospectives that produce action items.</strong> Not retrospectives that produce feelings. Not retrospectives that produce a long list of complaints. Short, focused retrospectives that produce two or three concrete follow-ups, with owners and deadlines. Then actually do them.</p>
<p><strong>Celebrating progress.</strong> Teams under pressure tend to only talk about what&rsquo;s wrong. Acknowledging what went well, even small things, keeps momentum and morale from decaying. This sounds soft. It works.</p>
<h2 id="built-before-the-crisis">Built Before the Crisis</h2>
<p>Resilient teams aren&rsquo;t built during a crisis. They&rsquo;re built in the quiet periods before one. Shared knowledge, clear processes, honest communication, sustainable pace: none of it is exciting. All of it compounds.</p>
<p>The teams that came through 2022 in good shape didn&rsquo;t have a secret. They had discipline. And discipline, unlike heroics, scales.</p>
]]></content:encoded></item><item><title>Tech Layoffs 2022: What I Saw From the Inside</title><link>https://lawzava.com/blog/2022-11-14-tech-layoffs-engineering-resilience/</link><pubDate>Mon, 14 Nov 2022 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2022-11-14-tech-layoffs-engineering-resilience/</guid><description>What I saw during the 2022 tech layoff wave, and what helps engineering teams survive contraction without burning out.</description><content:encoded><![CDATA[<p>I&rsquo;m writing this in November 2022, and the layoff announcements are coming faster than I can track. Meta. Twitter. Stripe. Lyft. Dozens more. Having worked across different organizations, I have a strange vantage point: watching the same wave hit in different ways, seeing which ones handle it well and which ones make it worse.</p>
<p>This isn&rsquo;t a framework post. It&rsquo;s what I&rsquo;ve seen and what I think matters.</p>
<h2 id="the-shift-nobody-planned-for">The Shift Nobody Planned For</h2>
<p>Eighteen months ago, every company I talked to was hiring aggressively. &ldquo;We can&rsquo;t find enough engineers&rdquo; was the universal complaint. Now the complaint is &ldquo;we hired too fast and the math doesn&rsquo;t work.&rdquo;</p>
<p>The market shifted from rewarding growth to rewarding efficiency. That&rsquo;s a legitimate economic correction. But the speed of the pivot is brutal. Teams that were told to scale fast are now being told to do more with less, sometimes by the same leadership that set the original targets.</p>
<h2 id="what-ive-seen-go-wrong">What I&rsquo;ve Seen Go Wrong</h2>
<p>The worst layoffs I&rsquo;ve watched (and I&rsquo;ve watched a few this year) share common traits.</p>
<p><strong>Multiple waves.</strong> Nothing destroys trust faster than a &ldquo;one-time reduction&rdquo; followed by another one six weeks later. If leadership doesn&rsquo;t know the full scope of cuts, they should say so honestly rather than promise stability they can&rsquo;t guarantee.</p>
<p><strong>Silence from above.</strong> At one organization I worked with, the engineering org learned about layoffs from Twitter before they heard from their own leadership. That isn&rsquo;t a communication problem. That&rsquo;s a respect problem.</p>
<p><strong>Pretending the plan didn&rsquo;t change.</strong> After cutting 20% of engineering, one organization kept the same roadmap and the same deadlines. The remaining team burned out within two months. Three more people left voluntarily. The original cost savings evaporated.</p>
<p><strong>Knowledge walking out the door.</strong> I saw a team lose the only person who understood their payment processing pipeline. No  <a href="/blog/2022-06-13-engineering-documentation-practices/"
   
   >documentation</a>
, no pairing history, no runbooks. Three months later they were still reverse-engineering their own system.</p>
<h2 id="what-ive-seen-go-right">What I&rsquo;ve Seen Go Right</h2>
<p>The organizations that handled this well did a few things consistently.</p>
<p>They were honest about the business reason. Not corporate-speak, not &ldquo;rightsizing for the future.&rdquo; Honest: &ldquo;Revenue is down, burn rate is too high, and we need to cut costs to survive.&rdquo; People can handle hard truths. They can&rsquo;t handle feeling manipulated.</p>
<p>They treated departing people with real dignity. Generous severance where possible. Genuine references. Time to say goodbye. The remaining team watches how you treat the people who leave. It tells them everything about what they can expect.</p>
<p>They immediately rescoped. Smaller team means smaller roadmap. Full stop. The best leader I watched through this process cancelled three initiatives within a week of the layoff, told the team &ldquo;we&rsquo;re doing these two things well, nothing else,&rdquo; and stuck to it. That team stabilized faster than any other I saw.</p>
<h2 id="for-the-people-who-remain">For the People Who Remain</h2>
<p>Survivor guilt is real and poorly understood. You kept your job, so you should be grateful, right? Except your friend got walked out, your workload doubled, and nobody has told you whether more cuts are coming. &ldquo;Grateful&rdquo; isn&rsquo;t the word that comes to mind.</p>
<p>What actually helps:</p>
<p><strong>Acknowledge the loss.</strong> Don&rsquo;t skip past it. The people who left were colleagues, mentors, friends. Pretending everything is normal is insulting and counterproductive.</p>
<p><strong>Reset expectations explicitly.</strong> What are we building? What are we not building? Who owns what now? If these questions aren&rsquo;t answered within a week, anxiety fills the vacuum.</p>
<p><strong>Protect sustainable pace.</strong> A smaller team carrying a larger roadmap is a team in the process of losing more people. Voluntary attrition after layoffs is the hidden second wave that leadership never budgets for.</p>
<h2 id="distribute-knowledge-before-you-have-to">Distribute Knowledge Before You Have To</h2>
<p>The best insurance against knowledge loss is rotation, even more than documentation. Pair on critical systems. Rotate on-call. Make sure at least two people can deploy, debug, and recover every service that matters.</p>
<p>I keep coming back to this: resilience means building systems, human systems included, that can absorb shocks without collapsing. That means shared ownership, documented decisions, and deliberately avoiding single points of failure in your org chart.</p>
<h2 id="for-leaders">For Leaders</h2>
<p>You can&rsquo;t control the macro environment. You can control how clearly you communicate, how honestly you scope, and how consistently you protect your team&rsquo;s focus.</p>
<p>Watch for burnout signals: declining code quality, slower response times, people going quiet in meetings who used to speak up. These are leading indicators of the next round of attrition: the voluntary kind that hurts even more because it&rsquo;s your best people who leave first.</p>
<p>Advocate upward for realistic expectations. If leadership expects the same output from a smaller team, push back with data. &ldquo;We can deliver A and B by Q1, or A, B, and C by Q2. Pick one.&rdquo; That isn&rsquo;t defiance. That&rsquo;s responsible leadership.</p>
<h2 id="a-personal-note">A Personal Note</h2>
<p>Having founded a company through a founder program, I know what it&rsquo;s like to make hard calls about scope when the money is running out. It&rsquo;s never clean. But the difference between organizations that recover and organizations that spiral comes down to honesty and scope discipline.</p>
<p>Heroics don&rsquo;t scale. Discipline does. The teams that will come out of this cycle stronger are the ones that cut scope honestly, protected their people&rsquo;s energy, and resisted the temptation to pretend nothing changed.</p>
]]></content:encoded></item><item><title>Engineering Metrics: DORA, Error Budgets, and DevEx Signals</title><link>https://lawzava.com/blog/2022-10-17-engineering-metrics-that-matter/</link><pubDate>Mon, 17 Oct 2022 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2022-10-17-engineering-metrics-that-matter/</guid><description>Most engineering metrics measure activity. The few worth tracking: DORA, user-facing reliability with error budgets, developer friction, and outcomes.</description><content:encoded><![CDATA[<p>Stop counting lines of code and story points. Measure deployment frequency, lead time, restore time, and change failure rate. Add a few developer experience signals. Connect them to business outcomes. Kill anything that drives bad behavior.</p>
<p>I&rsquo;ve watched teams drown in dashboards. At one company I walked into a weekly review where the VP proudly scrolled through forty-seven metrics. Nobody in the room could tell me which three mattered most. That isn&rsquo;t measurement. That&rsquo;s decoration.</p>
<p>The goal is simple: a small set of numbers that tell you whether the system (the whole system of people, code, and process) is getting healthier or sicker. Everything else is noise.</p>
<h2 id="why-most-metrics-backfire">Why Most Metrics Backfire</h2>
<p>Metrics fail when they measure motion instead of progress. Lines of code reward verbosity. Story points inflate the moment managers tie them to performance reviews. Ticket counts incentivize splitting work into trivial pieces. Time-in-seat confuses presence with output.</p>
<p>Goodhart&rsquo;s Law isn&rsquo;t a thought experiment. I watched it play out at a company where a &ldquo;PRs merged per sprint&rdquo; target led to engineers opening tiny, low-value PRs just to hit the number. The charts looked great. The product didn&rsquo;t move.</p>
<p>If a metric can be gamed without improving outcomes, it will be gamed. That isn&rsquo;t cynicism. It&rsquo;s human nature meeting bad incentive design.</p>
<h2 id="the-dora-four-still-the-best-starting-point">The DORA Four: Still the Best Starting Point</h2>
<p>The four DORA metrics have held up across every team shape and stack I&rsquo;ve worked with, as long as nobody  <a href="/blog/2022-01-24-dora-metrics-implementation/"
   
   >puts them on a performance review</a>
. They connect speed to stability without prescribing a specific process.</p>
<ul>
<li><strong>Deployment frequency</strong>: how often you ship to production.</li>
<li><strong>Lead time for changes</strong>: from commit to running in prod.</li>
<li><strong>Time to restore service</strong>: how fast you recover from incidents.</li>
<li><strong>Change failure rate</strong>: how often a deployment causes a problem.</li>
</ul>
<p>These work because they measure the path from idea to production and what happens when that path breaks. Collect them at the team or service level. Never use them to rank individuals. The moment you turn DORA into a leaderboard, the numbers become meaningless.</p>
<p>At a large consumer platform, we tracked deployment frequency per service as a health signal, not a target. When a team&rsquo;s frequency dropped, it was usually a sign of flaky tests or a painful merge process. System problems, not people problems.</p>
<h2 id="reliability-measure-what-users-feel">Reliability: Measure What Users Feel</h2>
<p>Availability percentages are fine, but they hide a lot. A service can be &ldquo;99.9% available&rdquo; and still have p99 latency so bad that the checkout flow feels broken.</p>
<p>Track what customers actually experience:</p>
<ul>
<li>Latency at a meaningful percentile (p95 or p99, not averages)</li>
<li>Error rates on critical paths</li>
<li>Throughput trends</li>
</ul>
<p> <a href="/blog/2019-05-20-effective-slos/"
   
   >Error budgets</a>
 are the best policy tool I&rsquo;ve seen for balancing reliability with feature velocity. Agree on how much unreliability is acceptable for a service in a given period. When the budget burns too fast, slow down feature work and fix the foundations. When there&rsquo;s budget left, ship faster. Simple.</p>
<p>The key is treating error budgets as a decision framework, not a spreadsheet exercise. If nobody changes behavior when the budget burns, you don&rsquo;t have an error budget. You have a dashboard.</p>
<h2 id="developer-experience-is-a-leading-indicator">Developer Experience Is a Leading Indicator</h2>
<p>By the time delivery metrics go red, the developer experience problems that caused them are months old. Slow feedback loops, painful CI, confusing onboarding: these drag on quality and morale long before they show up in DORA numbers.</p>
<p>A few signals that capture friction without turning into surveillance:</p>
<ul>
<li><strong>Time to first meaningful change</strong> for a new engineer. If onboarding takes three weeks before someone ships anything real, that&rsquo;s a system problem.</li>
<li><strong>End-to-end build and test duration.</strong> If CI takes forty minutes, developers batch changes and context-switch. Both hurt quality.</li>
<li><strong>Time to first review on a PR.</strong> Review latency is one of the most underrated bottlenecks. A PR sitting for two days is two days of context decay.</li>
<li><strong>Time from merge to production.</strong> If this is hours instead of minutes, your deployment pipeline needs work.</li>
</ul>
<p>These are system health checks. Improvements here compound into better delivery and reliability outcomes downstream.</p>
<h2 id="connect-to-business-outcomes">Connect to Business Outcomes</h2>
<p>Engineering metrics should relate to things the business cares about. Not everything needs a revenue number attached, but there should be a clear line between what you measure and why it matters.</p>
<p>Three signals that bridge the gap:</p>
<ul>
<li>Feature adoption or usage change after launch</li>
<li>Customer-reported issues (trending down is good; zero is suspicious)</li>
<li>Time from idea approval to customer availability</li>
</ul>
<p>At a real-time messaging platform I worked with, connecting deployment lead time to customer feature requests was eye-opening. We could show exactly how much faster a customer got value when the pipeline was healthy versus when it was degraded. That made infrastructure investment easy to justify.</p>
<h2 id="how-to-start-without-creating-overhead">How to Start Without Creating Overhead</h2>
<p>Pick four to six metrics. Automate collection. Review monthly with a trend line, not a snapshot. That&rsquo;s it.</p>
<p>The pitfalls are predictable:</p>
<ul>
<li><strong>Using metrics to punish.</strong> This kills psychological safety and data quality simultaneously.</li>
<li><strong>Expanding the list.</strong> Every quarter someone wants to add &ldquo;just one more.&rdquo; Resist. If something new goes in, something old comes out.</li>
<li><strong>Reporting numbers without narrative.</strong> A chart without context is an inkblot test. Everyone sees what they want to see.</li>
</ul>
<p>If a metric drives unhelpful behavior, change it or kill it. Metrics exist to guide decisions, not to prove a point. The best set is small enough to remember, stable enough to trend, and connected enough to tell a coherent story about how your engineering system is actually performing.</p>
]]></content:encoded></item><item><title>Engineering Onboarding: Ship a Real PR by Day Three</title><link>https://lawzava.com/blog/2022-03-21-engineering-onboarding-excellence/</link><pubDate>Mon, 21 Mar 2022 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2022-03-21-engineering-onboarding-excellence/</guid><description>Most engineering onboarding wastes the first week on access requests and context overload. The fix is simple: ship a real PR by day three.</description><content:encoded><![CDATA[<p>The single best metric for onboarding quality is time to first merged PR. Not time to complete a training module. Not time to attend all the introductory meetings. Time to ship real code into a real codebase. I made the case for  <a href="/blog/2019-10-07-engineering-onboarding/"
   
   >a day-one PR back in 2019</a>
.</p>
<p>At a mobility startup, we got this down to day two for most new hires. Not because we had some elaborate onboarding program. Because we had a checklist, a buddy system, and a backlog of small tasks tagged &ldquo;good first issue.&rdquo; The new engineer&rsquo;s first PR was reviewed and merged before they finished reading the architecture docs. That&rsquo;s the order it should happen in. Ship first, context second.</p>
<h2 id="why-most-onboarding-stalls">Why most onboarding stalls</h2>
<p>Most onboarding programs are designed around what the company wants to communicate, not around what the new hire needs to be productive. Day one becomes a parade of slides: company history, org chart, values, benefits, security training. The engineer sits through hours of content they won&rsquo;t remember, and by the end of the day they still can&rsquo;t push to the repo because their access request is pending.</p>
<p>Every hour spent in orientation that could have been spent writing code is a signal that the company values process over output. New hires pick up on that fast.</p>
<h2 id="week-one-access-a-real-task-a-buddy">Week one: access, a real task, a buddy</h2>
<p><strong>Access on day one.</strong> Laptop, accounts, repo access, dev environment: all of it should be working before the engineer opens Slack for the first time. If access provisioning takes more than a day, your onboarding is already behind. Automate it. Test the automation quarterly by running it against a clean machine.</p>
<p><strong>A real first task.</strong> Not a tutorial. Not &ldquo;read the docs.&rdquo; A real bug fix or small feature that touches the production codebase. It should be small enough to finish in a day, scoped enough to not need deep context, and assigned to a specific reviewer who will prioritize the review.</p>
<p>The first merge matters more than any presentation. It proves the workflow works, the environment is set up correctly, and the engineer can contribute. Everything after that is momentum.</p>
<p><strong>A buddy, not a babysitter.</strong> The buddy answers the dumb questions. &ldquo;Where do I find the staging URL?&rdquo; &ldquo;Who reviews changes to this service?&rdquo; &ldquo;How do I get a test database?&rdquo; The buddy isn&rsquo;t responsible for the new hire&rsquo;s career development or performance evaluation. That&rsquo;s the manager&rsquo;s job. Keep the roles separate.</p>
<h2 id="stop-over-documenting-start-pairing">Stop over-documenting, start pairing</h2>
<p>I&rsquo;ve seen teams spend months building elaborate onboarding wikis that nobody maintains. They go stale within a quarter. A 30-minute pairing session where the buddy walks through the deploy pipeline is worth more than a 20-page document about the deploy pipeline.</p>
<p>Keep documentation focused on what changes slowly: architecture overview, service map, on-call runbook. For everything else, pair. New hires should be encouraged to update docs when they find gaps. Fresh eyes catch stale content better than any scheduled review.</p>
<h2 id="the-30-day-check">The 30-day check</h2>
<p>By the end of month one, a new engineer should be able to pick up a ticket, implement it, get it reviewed, and deploy it without asking how. If they can&rsquo;t, something in the onboarding failed. Treat it as a systems problem, not a people problem. Did they get enough context on the codebase? Was the first month&rsquo;s work well-scoped? Did the buddy actually check in?</p>
<p>Measure this with two signals: time to first solo PR (without buddy assistance on the workflow) and the new hire&rsquo;s own confidence level. Ask them directly. &ldquo;Do you feel productive? What&rsquo;s still blocking you?&rdquo; The answers will tell you more than any dashboard.</p>
<p>Onboarding compounds. Every new hire who has a good first week becomes someone who can onboard the next person. Every broken onboarding creates someone who spends their first month confused and frustrated, and that frustration echoes through their entire tenure.</p>
]]></content:encoded></item><item><title>SRE Team Structures: Stop Renaming Your Ops Team</title><link>https://lawzava.com/blog/2021-11-08-sre-team-structures/</link><pubDate>Mon, 08 Nov 2021 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2021-11-08-sre-team-structures/</guid><description>Centralized, embedded, or platform SRE: how each model fails, the engagement tiers and entry criteria I use, and why renaming ops to SRE changes nothing.</description><content:encoded><![CDATA[<p>I have a test I run when I walk into a new organization. I ask the SRE team lead: &ldquo;When was the last time you gave a service back to a product team because they met their reliability bar?&rdquo; If the answer is never, they don&rsquo;t have an SRE team. They have an ops team with a trendy name.</p>
<p>SRE is fundamentally about incentives and ownership. Not tooling. Not Prometheus dashboards. The org structure you choose determines whether reliability work gets prioritized or gets dumped on a small group of people who burn out.</p>
<h2 id="the-three-models-that-actually-exist">The Three Models That Actually Exist</h2>
<p><strong>Centralized SRE</strong> is one team supporting many services. It works early on when you&rsquo;re establishing standards and building your first incident response muscle. I recommend it for companies under 200 engineers with shared infrastructure.</p>
<p>The failure mode is predictable. The SRE team becomes a ticket queue. Product teams throw things over the wall. SREs lose context on individual services. On-call burden grows faster than headcount. I&rsquo;ve seen centralized SRE teams where every member was on call every other week. That isn&rsquo;t sustainable. That&rsquo;s a resignation factory.</p>
<p><strong>Embedded SRE</strong> puts reliability engineers inside product teams. Strong domain knowledge. Clear ownership. I like this model for complex services where the operational profile is unique: payment processing, real-time data pipelines, anything where the SRE needs to understand the business logic to debug production.</p>
<p>The failure mode here is fragmentation. Every team invents their own monitoring stack. Incident learnings don&rsquo;t spread. SREs get treated as &ldquo;the person who does the ops stuff&rdquo; instead of a partner. And career growth gets weird because the SRE reports to a product manager who doesn&rsquo;t understand their work.</p>
<p><strong>Platform/Enablement SRE</strong> is the model I push most organizations toward, eventually. A central team builds reliability tooling, templates, and automation. Product teams own their own operations. The SRE team makes reliability easy instead of doing reliability for everyone.</p>
<p>This only works if the platform is good. If your self-service tooling is bad, product teams can&rsquo;t actually own their operations and everything escalates back to the same five experts. I&rsquo;ve watched this fail spectacularly at companies that tried to jump straight here without building the self-service layer first.</p>
<h2 id="what-i-actually-recommend">What I Actually Recommend</h2>
<p>Most organizations over 300 engineers should run a hybrid. Central platform work for the shared layer. Embedded support for the three to five most critical services. Everything else gets the self-service platform and advisory engagement.</p>
<p>The key is having explicit engagement levels. Not every service deserves dedicated SRE attention. I use three tiers:</p>
<ul>
<li><strong>Advisory:</strong> Architecture reviews and SLO guidance. Minimal operational involvement. This is for most services.</li>
<li><strong>Partner:</strong> Joint SLOs, shared incident response, regular reliability reviews. This is for important services with active reliability investment.</li>
<li><strong>Full support:</strong> Dedicated SRE ownership of production and on-call. This is for your revenue-critical, customer-facing, &ldquo;if this breaks the CEO calls someone&rdquo; services.</li>
</ul>
<p>Scale engagement up as criticality increases. Scale it back as the product team matures. The goal is always to make the SRE team less needed, not more.</p>
<h2 id="the-entry-criteria-nobody-wants-to-set">The Entry Criteria Nobody Wants to Set</h2>
<p>Here is where I get unpopular. I tell organizations to require teams to meet a baseline before they get dedicated SRE support. Defined  <a href="/blog/2019-05-20-effective-slos/"
   
   >SLOs</a>
. Monitoring that reflects user impact. Up-to-date runbooks. Automated deployments with rollback. Participation in postmortems.</p>
<p>If a product team can&rsquo;t be bothered to define an SLO, they aren&rsquo;t ready for an SRE partner. They want someone to carry their pager. That&rsquo;s a different thing.</p>
<h2 id="sizing">Sizing</h2>
<p>The &ldquo;1 SRE per 10 developers&rdquo; ratio gets thrown around a lot. It&rsquo;s a fine starting point but it means nothing without context. A team of 10 developers running a single stateless API needs less SRE support than a team of 10 running a distributed database cluster.</p>
<p>What matters more: can you sustain your on-call rotations? You need at least 5-6 people per rotation to avoid burnout. If you can&rsquo;t staff that, you either have too many services or too few SREs. Probably both.</p>
<h2 id="the-anti-patterns-i-see-everywhere">The Anti-Patterns I See Everywhere</h2>
<p><strong>Renaming ops to SRE.</strong> Same people, same work, new title. Nobody adopted  <a href="/blog/2018-04-30-site-reliability-engineering-principles/"
   
   >error budgets</a>
. Nobody does blameless postmortems. Nobody is writing automation to replace toil. Just a title change and a conference talk about &ldquo;our SRE journey.&rdquo;</p>
<p><strong>SRE as deployment gatekeeper.</strong> If every deploy needs SRE approval, you&rsquo;ve built a bottleneck and called it reliability. Deployments should be automated and safe by default. SRE shouldn&rsquo;t be in the approval chain for routine changes.</p>
<p><strong>SRE as permanent firefighter.</strong> If your SRE team spends 80% of their time on incident response and 20% on prevention, the math never gets better. Google&rsquo;s original guidance was a 50% cap on operational work. I&rsquo;ve never seen an enterprise hit exactly 50%, but the principle is right. If there&rsquo;s no time for prevention, you&rsquo;re just managing decline.</p>
<p>The best SRE team I&rsquo;ve worked with was at a mid-sized fintech. Six people. They supported the whole company not by owning every service, but by building such good tooling and templates that product teams could own their own reliability. The SRE team&rsquo;s backlog was mostly platform improvements. Incidents were handled by the teams that owned the services. SREs showed up for the big ones and ran the postmortems.</p>
<p>That&rsquo;s what good looks like. SRE as a leverage point, not a fire department.</p>
]]></content:encoded></item><item><title>Most 'Technical Debt' Is Just Decisions You Disagree With Now</title><link>https://lawzava.com/blog/2021-09-20-technical-debt-management/</link><pubDate>Mon, 20 Sep 2021 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2021-09-20-technical-debt-management/</guid><description>Most &amp;amp;rsquo;technical debt&amp;amp;rsquo; is code that aged, not debt. How to spot real debt by its costs (incidents, delivery, security, hiring) and get fixes funded.</description><content:encoded><![CDATA[<p>I&rsquo;m tired of the phrase &ldquo;technical debt.&rdquo;</p>
<p>Not the concept. The concept is real and useful. I&rsquo;m tired of how it&rsquo;s used. Every codebase I inherit, someone pulls me aside and says &ldquo;we have a lot of technical debt.&rdquo; What they mean is: there&rsquo;s code they don&rsquo;t like. There are decisions they didn&rsquo;t make. There&rsquo;s a system that was designed for a different stage of the company.</p>
<p>That&rsquo;s not debt. That&rsquo;s software aging. And calling everything &ldquo;debt&rdquo; makes it impossible to prioritize the things that actually need fixing.</p>
<h2 id="what-technical-debt-actually-is">What technical debt actually is</h2>
<p>Ward Cunningham&rsquo;s original 1992 metaphor was specific: shipping first-time code is like going into debt. A little debt speeds development, as long as it&rsquo;s paid back promptly with a rewrite. The danger is debt that never gets repaid, where every minute spent on not-quite-right code counts as interest.</p>
<p>That&rsquo;s useful framing. It implies intent and a plan to repay.</p>
<p>What most people call &ldquo;tech debt&rdquo; is something else entirely:</p>
<ul>
<li>Code written by someone who left, in a style nobody likes anymore</li>
<li>An architecture that was right for 10 users but not for 10,000</li>
<li>A framework choice that fell out of fashion</li>
<li>A service that works but is hard to understand</li>
<li>An API that&rsquo;s ugly but functional</li>
</ul>
<p>None of that&rsquo;s debt in the Cunningham sense. It&rsquo;s just&hellip; code that aged. Software entropy. The natural consequence of building something over years with changing teams, changing requirements, and changing fashions.</p>
<p>The distinction matters because debt implies you should pay it back. And a lot of the stuff people label as &ldquo;tech debt&rdquo; doesn&rsquo;t need fixing. It needs acceptance.</p>
<h2 id="when-it-actually-matters">When it actually matters</h2>
<p>Real debt, the kind worth tracking and paying down, has measurable costs:</p>
<p><strong>It causes incidents.</strong> If the same component is behind repeated production issues, that&rsquo;s not aesthetic displeasure. That&rsquo;s a reliability risk with a price tag.</p>
<p><strong>It blocks delivery.</strong> If adding a feature to a specific area takes 3x longer than it should because of tangled dependencies or missing tests, you&rsquo;re paying interest on every sprint.</p>
<p><strong>It creates security risk.</strong> Outdated dependencies with known vulnerabilities. Auth systems with gaps. Unencrypted data stores. This is debt with existential consequences.</p>
<p><strong>It prevents hiring from working.</strong> If new engineers can&rsquo;t contribute meaningfully for months because the codebase is impenetrable, that&rsquo;s a real cost.</p>
<p>If none of those apply, you probably don&rsquo;t have a debt problem. You have a preference problem. And that&rsquo;s fine. But don&rsquo;t burn engineering capacity rewriting a working system because someone doesn&rsquo;t like the coding style.</p>
<h2 id="the-rewrite-it-trap">The &ldquo;rewrite it&rdquo; trap</h2>
<p>The most expensive form of fake debt management is the rewrite. I&rsquo;ve seen it at three different companies. The pitch is always the same: &ldquo;The current system is unmaintainable. We need to rewrite it from scratch. It&rsquo;ll take 6 months.&rdquo;</p>
<p>It never takes 6 months. It takes 18. The new system ships with half the features of the old one. The old system keeps running in parallel because the migration is never complete. Now you have two systems to maintain.</p>
<p>At my infrastructure startup, I almost fell into this with my own billing system. It was ugly. It was a monolith. I hated working on it. But it worked. It processed payments correctly. It handled every edge case I had hit so far.</p>
<p>Instead of rewriting, I  <a href="/blog/2019-07-01-microservices-migration-strategy/"
   
   >strangled it</a>
. Extracted one capability at a time into new services. Kept the old system running for the parts I hadn&rsquo;t migrated yet. It took longer than a rewrite would have, but there was never a period where billing was half-working.</p>
<h2 id="how-to-actually-manage-it">How to actually manage it</h2>
<p>If you have real debt (the kind that causes incidents, blocks delivery, or creates security risk), track it explicitly.</p>
<p>I keep a  <a href="/blog/2018-12-10-tech-debt-tracking-and-prioritization/"
   
   >simple registry</a>
. Each entry has: what the debt is, who owns it, what the impact is, and what the decision is (fix now, fix later, accept permanently).</p>
<p>The key is that last field. Some debt you accept. Permanently. The system works. The cost of fixing it exceeds the cost of living with it. That&rsquo;s a valid decision. Write it down and move on.</p>
<p>For debt you do want to fix, allocate a steady percentage of capacity. I recommend 15-20%. Not in a dedicated &ldquo;debt sprint&rdquo; once a quarter; that never works because it gets deprioritized. Bake it into every sprint. Every team, every sprint, some debt work alongside feature work.</p>
<h2 id="make-the-business-case">Make the business case</h2>
<p>The worst thing you can do is use &ldquo;tech debt&rdquo; as a catch-all complaint. When everything is debt, nothing is. When you bring a list of 50 items labeled &ldquo;tech debt&rdquo; to a planning meeting, leadership tunes out. Reasonably.</p>
<p>Instead: &ldquo;This component caused 3 incidents last quarter and adding the subscription feature will take 4 extra weeks because of its coupling to the payment module. Fixing the coupling first saves net time and reduces incident risk.&rdquo;</p>
<p>That&rsquo;s a business case. That gets funded.</p>
<p>&ldquo;The auth service is old and ugly&rdquo; isn&rsquo;t a business case. If it works, it works. Spend your credibility on the things that actually hurt.</p>
]]></content:encoded></item><item><title>Remote Work for Engineering Teams: Benefits and Dangers</title><link>https://lawzava.com/blog/embracing-remote-work/</link><pubDate>Fri, 04 Jun 2021 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/embracing-remote-work/</guid><description>Years of running distributed engineering teams: what remote work gives you, where it hurts (isolation, blurred boundaries, eroding trust), and what works.</description><content:encoded><![CDATA[<p>Remote work is great for focused engineering work, hiring across borders, and reclaiming your commute hours. It&rsquo;s also bad for loneliness, blurred boundaries, and the slow erosion of team trust when you stop being intentional about it.</p>
<h3 id="why-i-care-about-this-topic">Why I care about this topic</h3>
<p>I&rsquo;ve been working remotely in some form for most of my career. That was no accident: I kept building teams that were distributed by default. When you&rsquo;re hiring engineers across multiple countries, &ldquo;remote-first&rdquo; stops being a philosophy and starts being a logistics problem you solve every week.</p>
<p>So when the pandemic hit and every company suddenly discovered remote work, I watched the discourse with a mix of amusement and frustration. Amusement because most of the &ldquo;tips&rdquo; being shared were things distributed teams had figured out years ago. Frustration because the loudest voices were often people who had been remote for six months and were already writing definitive guides about it.</p>
<p>This is what I&rsquo;ve learned from doing it for years, including the parts that nobody puts in their LinkedIn posts.</p>
<h3 id="the-benefits">The benefits</h3>
<p><strong>Deep work actually happens.</strong> This is the biggest one and it isn&rsquo;t even close. In an office, your calendar gets colonized by meetings, drive-by questions, and the guy who wants to tell you about his weekend every Monday at 9:15. At home, I can put on headphones, close Slack, and write code or review architecture for three hours straight. That kind of focus is rare in an open office. It&rsquo;s the default when you work remotely.</p>
<p><strong>You hire from everywhere.</strong> When I stopped requiring people to live near an office, the talent pool didn&rsquo;t just grow. It changed completely. Some of the best engineers I&rsquo;ve worked with lived in cities I had never heard of. When you&rsquo;re a smaller company that can&rsquo;t compete with FAANG salaries, being remote-friendly is one of the most powerful recruiting advantages you can have.</p>
<p><strong>No commute is life-changing.</strong> I know this sounds obvious but people underestimate it. Getting back one to two hours per day isn&rsquo;t a minor convenience. It&rsquo;s the difference between exercising or not, cooking a real meal or ordering delivery, spending time with family or showing up already exhausted. Over a year, that&rsquo;s hundreds of hours. I&rsquo;ve never met anyone who went back to commuting and said they were happier.</p>
<p><strong>Autonomy breeds better engineers.</strong> Remote work forces people to be more self-directed. You can&rsquo;t tap someone on the shoulder to ask a question, so you learn to read the docs, check the logs, and form a hypothesis before escalating. Teams I&rsquo;ve managed remotely tend to develop stronger individual problem-solving habits over time. Not everyone thrives in that environment, but the ones who do become significantly better engineers.</p>
<h3 id="the-dangers">The dangers</h3>
<p><strong>Loneliness isn&rsquo;t a joke.</strong> I&rsquo;m not going to sugarcoat this. Working from home alone, day after day, can be isolating. The casual human interactions that happen in an office (grabbing coffee, complaining about the build system, eating lunch together) disappear. You don&rsquo;t notice it at first because you&rsquo;re enjoying the quiet. Then six months in you realize you haven&rsquo;t had a real conversation with a colleague that wasn&rsquo;t about a Jira ticket. This hits people harder than they expect.</p>
<p><strong>Work never ends unless you end it.</strong> When your office is your living room, there&rsquo;s no physical act of &ldquo;leaving work.&rdquo; The laptop is right there. The PR review can happen after dinner. The Slack message at 10pm gets a reply because you saw the notification. I&rsquo;ve caught myself multiple times checking deployment dashboards at midnight not because anything was on fire, but because the boundary between &ldquo;on&rdquo; and &ldquo;off&rdquo; had completely dissolved. This is the fastest path to burnout I&rsquo;ve seen in remote teams.</p>
<p><strong>Trust erodes silently.</strong> In an office, you see people working. You see them stuck on a problem, you see them helping a colleague, you see them at their desk deep in thought. Remotely, you see none of that. What you see is Slack status, commit history, and meeting attendance. Managers who don&rsquo;t trust their teams start tracking mouse movements and requiring cameras on. Engineers who feel watched start performing visibility instead of doing actual work. This dynamic is toxic and it happens gradually.</p>
<p><strong>Junior engineers suffer the most.</strong> This one took me a while to fully appreciate. Senior engineers have the context, the network, and the confidence to thrive remotely. Junior engineers need to absorb how a team thinks, how decisions get made, how to ask for help without feeling stupid. In an office, a lot of that happens through osmosis. Remotely, you have to build explicit systems to replace what used to happen naturally, and most teams don&rsquo;t bother.</p>
<h3 id="what-works">What works</h3>
<p><strong>Have a shutdown ritual.</strong> &ldquo;Set boundaries&rdquo; is useless advice. I mean a specific, repeatable action that signals &ldquo;work is done.&rdquo; For me, it&rsquo;s closing the laptop lid, putting it in a drawer, and going for a walk. It sounds silly, but your brain needs a physical transition when there&rsquo;s no commute to provide one. Find yours and do it every day.</p>
<p><strong>Write everything down.</strong> This is non-negotiable for remote teams. Decisions made in a call that aren&rsquo;t documented didn&rsquo;t happen. Use written proposals for anything important. Record the outcome of every meeting. Make your team&rsquo;s memory searchable. I&rsquo;ve  <a href="/blog/2020-04-13-async-communication-practices/"
   
   >written about async communication before</a>
 and I stand by it: writing-first culture is the single most important habit for distributed teams.</p>
<p><strong>Create space for non-work interaction.</strong> Not forced fun, not mandatory virtual happy hours. Just space. A Slack channel for random conversation. Occasional calls with no agenda. Optional video coffee chats. The key word is optional. The moment you mandate socializing, it stops being social and starts being another meeting.</p>
<p><strong>Over-invest in onboarding.</strong> When a new engineer joins a remote team, their first two weeks determine whether they will thrive or quietly disengage.  <a href="/blog/2020-09-28-distributed-team-practices/"
   
   >Onboarding is the stress test</a>
 for the whole system. Pair them with someone. Give them a small, completable task on day one. Have their manager check in daily, not weekly. Write an onboarding guide that actually reflects how the team works, not the aspirational version.</p>
<p><strong>Default to async, escalate to sync.</strong> Start with a written message or document. If the thread is going in circles, jump on a call. After the call, write down what was decided. This flow protects focus time while still allowing real-time collaboration when it&rsquo;s actually needed.</p>
<h3 id="intentionality-is-the-difference">Intentionality is the difference</h3>
<p>What separates teams that make remote work stick from teams that suffer through it is intentionality: about communication, about culture, about the human side of staring at a screen alone for eight hours a day.  <a href="/blog/2021-05-03-hybrid-work-engineering/"
   
   >Hybrid setups</a>
 make that harder, not easier.</p>
<p>I&rsquo;m still a strong believer in remote-first teams. But I&rsquo;m a much more clear-eyed one than I was five years ago.</p>
]]></content:encoded></item><item><title>Hybrid Work for Engineering Teams Is Harder Than Full Remote</title><link>https://lawzava.com/blog/2021-05-03-hybrid-work-engineering/</link><pubDate>Mon, 03 May 2021 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2021-05-03-hybrid-work-engineering/</guid><description>Hybrid engineering teams drift into a two-tier system unless you run them remote-first: written decisions, async defaults, outcome-based reviews.</description><content:encoded><![CDATA[<p>Last month I was on a call with an engineering team. Eight people. Five in a conference room, three on video. The five in the room were having a conversation among themselves: body language, side comments, whiteboard sketches. The three on video were watching a slightly out-of-focus camera pointed at the whiteboard, hearing about half of the side conversations, and contributing maybe 10% of the ideas.</p>
<p>After the call, one of the remote engineers messaged me privately: &ldquo;I have no idea what we decided.&rdquo;</p>
<p>That&rsquo;s hybrid work in one sentence.</p>
<h2 id="the-worst-of-both-worlds">The worst of both worlds</h2>
<p>I&rsquo;ve been fully remote for years. I&rsquo;ve led  <a href="/blog/2020-09-28-distributed-team-practices/"
   
   >distributed teams</a>
. I worked with remote engineers at the fintech startup. Remote works because everyone operates under the same constraints. Nobody has hallway access. Nobody has a whiteboard advantage. All context lives in written artifacts because it has to.</p>
<p>Hybrid breaks that symmetry. Some people are in the room. Some aren&rsquo;t. And the people in the room have massive advantages they don&rsquo;t even notice.</p>
<p>Decisions happen in hallway conversations after the meeting ends. Context gets shared over lunch. Feedback happens in passing (&ldquo;hey, nice work on that PR&rdquo;), which sounds trivial until you realize the remote people never hear it.</p>
<p>The office people aren&rsquo;t doing this maliciously. It&rsquo;s just how humans work when they share physical space. Information flows through proximity. Hybrid means some people get that flow and some don&rsquo;t.</p>
<h2 id="remote-first-is-the-only-fix">Remote-first is the only fix</h2>
<p>If you&rsquo;re going hybrid, you have to operate as remote-first. Not &ldquo;remote-friendly.&rdquo; Not &ldquo;we have good video conferencing.&rdquo; Remote-first.</p>
<p>That means: if one person in a meeting is remote, everyone joins from their own device. Even the five people sitting in the same conference room. Yes, it feels awkward. Yes, it works. Because now everyone has the same audio quality, the same view, and the same ability to participate.</p>
<p>That means: decisions are documented in writing. Not &ldquo;we&rsquo;ll share notes later.&rdquo; The notes are the decision. If it&rsquo;s not written down, it didn&rsquo;t happen. This was already true for remote teams. Hybrid teams need to adopt it explicitly because the temptation to rely on in-person context is strong.</p>
<p>That means:  <a href="/blog/2020-04-13-async-communication-practices/"
   
   >async communication</a>
 is the default for status updates, progress sharing, and non-urgent questions. Sync time is reserved for things that genuinely benefit from real-time interaction: architecture discussions, debugging sessions, retrospectives.</p>
<h2 id="what-the-office-is-actually-good-for">What the office is actually good for</h2>
<p>I&rsquo;m not anti-office. The office is great for specific things. Onboarding new engineers who need face time to build relationships. Design workshops where you need a whiteboard and rapid iteration. Team retrospectives where emotional nuance matters. Pairing sessions on hard problems.</p>
<p>The office is terrible for status meetings. It&rsquo;s terrible for solo focus work. It&rsquo;s terrible for anything that could be a written update but instead becomes a 30-minute calendar block because someone wanted &ldquo;face time.&rdquo;</p>
<p>If your team&rsquo;s office days are filled with meetings that could have been documents, you&rsquo;re using the office wrong.</p>
<h2 id="the-meeting-problem">The meeting problem</h2>
<p>Meetings are where hybrid equity dies. I have a strict rule for the teams I advise:</p>
<p>Every meeting needs a written agenda shared before the meeting starts. If there&rsquo;s no agenda, there&rsquo;s no meeting. Every meeting gets notes published within an hour of ending. Action items have names and dates. Follow-up conversations that happen in the hallway get summarized in the notes channel.</p>
<p>This is annoying. It&rsquo;s also the minimum viable process for making hybrid fair. Without it, the remote engineers are always operating on incomplete information and always a step behind.</p>
<h2 id="performance-management-by-green-dot">Performance management by green dot</h2>
<p>What makes me angry about how some organizations do hybrid is that they evaluate performance by presence. Who is in the office. Who responds fastest on Slack. Who is &ldquo;always available.&rdquo;</p>
<p>That&rsquo;s not measuring performance. That&rsquo;s measuring proximity. And it systematically disadvantages remote engineers, parents with caregiving responsibilities, anyone in a different time zone, and anyone who does their best work in focused blocks without interruption.</p>
<p>Measure outcomes. Code shipped. Problems solved. Systems improved. Incidents handled. If the work is good, I don&rsquo;t care where the person was sitting when they did it.</p>
<h2 id="why-this-is-harder-than-full-remote">Why this is harder than full remote</h2>
<p>Full remote forces discipline. You have to write things down because there&rsquo;s no alternative. You have to make meetings inclusive because everyone is remote. You have to trust people to manage their time because you can&rsquo;t see them.</p>
<p>Hybrid lets you be lazy. The in-office group gets context through osmosis and assumes everyone else has it too. Meetings are &ldquo;inclusive&rdquo; because there&rsquo;s a camera in the conference room. The written documentation is &ldquo;good enough&rdquo; because the office people fill in the gaps verbally.</p>
<p>That laziness creates a two-tier system. And it compounds over months. The remote engineers gradually lose context. They get passed over for projects that start with in-person conversations. They burn out from constantly feeling behind.</p>
<p>I&rsquo;ve seen this happen at three different organizations this year alone.</p>
<p>If you&rsquo;re going hybrid, commit to remote-first practices. Or go full remote and skip the hardest coordination problem in engineering management. For most teams, that&rsquo;s the better call.</p>
]]></content:encoded></item><item><title>Developer Productivity Metrics: Why I Only Trust DORA</title><link>https://lawzava.com/blog/2020-08-31-developer-productivity-metrics/</link><pubDate>Mon, 31 Aug 2020 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2020-08-31-developer-productivity-metrics/</guid><description>Lines of code, commit counts, and velocity charts fail as developer productivity metrics. The four DORA metrics, tracked per team, are worth your time.</description><content:encoded><![CDATA[<p>Someone on LinkedIn this week posted a dashboard showing lines of code per developer per sprint. Color-coded. Red for the &ldquo;underperformers.&rdquo; Green for the heroes. I wanted to throw my laptop out the window.</p>
<p>We&rsquo;re in 2020. Half the industry just  <a href="/blog/2020-03-16-rapid-remote-work-transition/"
   
   >went remote overnight</a>
 and managers are panicking. I get it. You can&rsquo;t see people at their desks anymore. So now there&rsquo;s this desperate scramble to measure <em>something</em> to prove people are working. And the tools are happy to sell you that something.</p>
<p>Lines of code is the worst offender but it&rsquo;s far from the only one. Commits per day. Tickets closed. Story points completed. Velocity. All garbage when used to evaluate individual developer performance. Every single one.</p>
<h2 id="why-these-metrics-are-garbage">Why these metrics are garbage</h2>
<p>I once mass-deleted 12,000 lines of dead code from a Rails monolith in a single afternoon. Most productive day I&rsquo;d had in months. By a lines-of-code metric, I went negative. Fire me, I guess.</p>
<p>Commits per day? I know devs who commit every time they save. I know devs who work on a complex problem for three days and push one beautiful, well-tested commit. The second developer is almost always doing better work.</p>
<p>Story points are the sneakiest one. They were invented as a <em>planning</em> tool. A way for teams to forecast how much they could take on. Somewhere along the way, managers started treating velocity as a performance metric. &ldquo;Your velocity dropped this sprint, what happened?&rdquo; What happened is Goodhart&rsquo;s Law. The moment you use velocity to judge people, teams inflate their estimates. Suddenly a two-pointer becomes a five-pointer. Velocity goes up. Actual output stays the same. Everyone pretends not to notice.</p>
<p>I&rsquo;ve watched this play out at three different companies now. Same story every time.</p>
<h2 id="the-only-metrics-i-actually-care-about">The only metrics I actually care about</h2>
<p>DORA metrics. That&rsquo;s it. Four numbers, from the research behind <em>Accelerate</em> and the State of DevOps reports. Boring, validated, and hard to game.</p>
<p><strong>Deployment frequency.</strong> How often are you shipping to production? Not &ldquo;how often are you merging PRs.&rdquo; Actually shipping. If your team deploys once a month, you have a delivery problem. Fix it before you measure anything else.</p>
<p><strong>Lead time for changes.</strong> From commit to production. This tells you how much friction is in your pipeline. Long lead times mean slow code review, flaky CI, painful deployments, or all three. Every one of those is worth fixing.</p>
<p><strong>Change failure rate.</strong> What percentage of deployments cause a failure? This is the quality counterweight. You can&rsquo;t just deploy fast and break everything. Well, you can. But this number will catch you.</p>
<p><strong>Time to restore service.</strong> When something breaks, how fast do you fix it? This is the one that actually matters at 3am. And it tells you more about your team&rsquo;s operational maturity than any sprint dashboard ever will.</p>
<p>These four together give you a real picture. Speed <em>and</em> stability. You can&rsquo;t game them easily because they pull in opposite directions. Ship faster but break things? Your failure rate goes up. Over-index on stability? Your deployment frequency drops.</p>
<h2 id="what-i-actually-do">What I actually do</h2>
<p>On my teams, I track DORA metrics at the team level. Not individual. Never individual. I don&rsquo;t care which developer deployed what. I care whether the system is getting better or worse.</p>
<p>We look at the numbers monthly. Trend lines, not snapshots. If lead time is creeping up, we dig into why. Usually it&rsquo;s a CI problem or a review bottleneck. Fix the system, not the people.</p>
<p>I also ask one question in retros: &ldquo;What slowed you down this week?&rdquo; The answers are always more useful than any dashboard. Flaky tests. Unclear requirements. Waiting two days for a review. That&rsquo;s where the real productivity wins are hiding.</p>
<h2 id="stop-measuring-people-fix-the-system">Stop measuring people, fix the system</h2>
<p>The entire premise of individual developer productivity metrics is broken. Software is collaborative. The best developer on your team might spend half their time unblocking others,  <a href="/blog/2017-11-13-why-code-review-quality-matters-more-than-quantity/"
   
   >reviewing code</a>
, and mentoring juniors. By any activity metric, they look &ldquo;less productive&rdquo; than the person grinding out solo features. But remove them and watch the whole team slow down.</p>
<p>If your response to remote work is to install monitoring software or build LOC dashboards, what you have is a trust problem, and no metric is going to fix that.</p>
<p>Measure the system. Use DORA. Fix the bottlenecks. Talk to your team. Everything else is theater.</p>
]]></content:encoded></item><item><title>Async-First Remote Work: Stop Recreating the Office on Zoom</title><link>https://lawzava.com/blog/2020-04-13-async-communication-practices/</link><pubDate>Mon, 13 Apr 2020 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2020-04-13-async-communication-practices/</guid><description>Most teams that went remote just moved the office onto video calls. Async communication is the real unlock. These are the rules I work by.</description><content:encoded><![CDATA[<p>Most companies didn&rsquo;t go remote this year. They went to Zoom jail.</p>
<p>I&rsquo;ve worked remote-first for a while now, and my infrastructure startup has been remote since day one. When the pandemic hit, I watched every company around me  <a href="/blog/2020-03-16-rapid-remote-work-transition/"
   
   >scramble to &ldquo;go remote&rdquo;</a>
 and immediately do it wrong. Their playbook was simple: take every in-person meeting, slap it on a video call, and declare victory. Then wonder why everyone is exhausted by 3pm.</p>
<p>That&rsquo;s not remote work. That&rsquo;s the office with worse lighting.</p>
<h2 id="the-point-is-async">The point is async</h2>
<p>The bigger advantage of remote work is time flexibility, more than location. Your engineers can do deep work when their brain is on fire instead of when the calendar says so. But that only works if your default communication mode is async.</p>
<p>Async means I write something clear enough that you can read it, understand it, and act on it without needing me online at the same time.  <a href="/blog/2017-12-11-async-communication-makes-better-engineering-teams/"
   
   >I&rsquo;ve argued for this before</a>
. Not complicated in theory. Apparently very complicated in practice.</p>
<h2 id="why-most-teams-get-this-wrong">Why most teams get this wrong</h2>
<p>Because writing is harder than talking. In a meeting, you can ramble for ten minutes and people nod along. In async, you actually have to think before you communicate. You have to structure your thoughts. You have to anticipate questions.</p>
<p>Most people have never been asked to do this at work. So they default to what&rsquo;s easy: &ldquo;Hey, got a minute for a quick call?&rdquo;</p>
<p>No. I don&rsquo;t. And neither does any engineer in the middle of debugging a production issue.</p>
<h2 id="the-async-rules-i-work-by">The async rules I work by</h2>
<p>A few rules keep async working:</p>
<p><strong>Write complete thoughts.</strong> Don&rsquo;t send &ldquo;hey&rdquo; and wait. Don&rsquo;t drip-feed context across fifteen messages. One message. Full context. Clear ask. Done.</p>
<p><strong>Decisions go in writing.</strong> If it happened in a call and nobody wrote it down, it didn&rsquo;t happen. We write short decision docs: what we decided, why, what we considered and rejected. Takes five minutes. Saves weeks of &ldquo;wait, I thought we agreed to&hellip;&rdquo;</p>
<p><strong>Response times are explicit.</strong> Chat gets same-day responses. PR reviews within 24 hours. Decision docs get a couple of days. On-call stuff is immediate. No ambiguity.</p>
<p><strong>Meetings are the exception.</strong> We use sync time for things that are hard to resolve in text: conflict, brainstorming, incident response. Not for status updates. Never for status updates. Write those down and give people their mornings back.</p>
<h2 id="the-hard-part">The hard part</h2>
<p>Async requires trust. You have to trust that someone not responding immediately is working, not slacking. You have to judge people by what they ship, not by their green dot in Slack.</p>
<p>Most managers aren&rsquo;t ready for that. They&rsquo;ve spent their careers managing by presence. Seeing butts in seats. Remote forces a reckoning with that, and a lot of them are responding by demanding cameras-on all day. Which is somehow worse than the office.</p>
<p>If you&rsquo;re a leader and your reaction to remote work was &ldquo;more meetings,&rdquo; you missed the point entirely. The unlock is fewer interruptions, better writing, and trusting your team to be adults.</p>
<p>Stop recreating the office on Zoom. Start writing things down.</p>
]]></content:encoded></item><item><title>Engineering Onboarding: First PR on Day One</title><link>https://lawzava.com/blog/2019-10-07-engineering-onboarding/</link><pubDate>Mon, 07 Oct 2019 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2019-10-07-engineering-onboarding/</guid><description>Most engineering onboarding is a polite abandonment ritual. What I&amp;amp;rsquo;ve learned across startups about getting new engineers shipping fast.</description><content:encoded><![CDATA[<p>My first day at a fintech startup, I was handed a laptop with Ubuntu pre-installed, pointed at a Confluence page titled &ldquo;Getting Started (OUTDATED - see Dave)&rdquo;, and told Dave was on holiday. The Confluence page referenced a Docker Compose setup that hadn&rsquo;t worked since the previous quarter. By 4pm I&rsquo;d cloned six repos, broken my local Postgres twice, and shipped exactly nothing.</p>
<p>I ended up as tech lead at that company, and the first thing I fixed was onboarding.</p>
<p>Not because it was the sexiest problem. Because it was the most expensive one nobody was measuring. Stop treating onboarding as &ldquo;show them the wiki and hope for the best.&rdquo; Script the dev setup to three commands, pair new hires with a buddy who has fresh context, give them real work that touches production in week one, then ask them what was broken and fix it.</p>
<h2 id="the-real-cost-nobody-tracks">The Real Cost Nobody Tracks</h2>
<p>Building my infrastructure startup in my founder-program cohort this year has reminded me how little time a startup has to waste. At a startup, a slow ramp-up isn&rsquo;t an inconvenience. It&rsquo;s an existential threat. But even at larger places, the math is brutal: a senior engineer who takes eight weeks to ship independently instead of three just cost you five weeks of salary for zero output. Multiply that by every hire per year.</p>
<p>The usual excuse is &ldquo;our codebase is complex.&rdquo; No. Your onboarding is lazy. Complexity is a reason to invest <em>more</em> in onboarding, not less.</p>
<h2 id="what-good-onboarding-looks-like">What Good Onboarding Looks Like</h2>
<p>I&rsquo;ve onboarded engineers at the fintech startup and at a mobility startup. Different products, different stacks, different countries. The pattern that works is boringly consistent.</p>
<p><strong>Day one: the new engineer opens a PR.</strong> Not a meaningful one. Not a feature. A typo fix, a config tweak, a test improvement. The point is they&rsquo;ve touched the full cycle (clone, build, branch, change, test, review, merge, deploy) before they go home. If your setup takes longer than a morning, it&rsquo;s broken.</p>
<p><strong>Week one: they own a real bug fix.</strong> Something with a clear repro, a limited blast radius, and enough context that they learn the codebase by reading the code that matters, not by reading a stale architecture doc.</p>
<p><strong>Month one: they&rsquo;re independently picking up work.</strong> They know who to ask, where the bodies are buried, and how deploys actually work (not how the wiki says they work).</p>
<p>That&rsquo;s it. No elaborate 90-day plans. No onboarding &ldquo;program&rdquo; with a PowerPoint deck. Just a tight loop of ship, learn, ship.</p>
<h2 id="make-setup-or-go-home"><code>make setup</code> Or Go Home</h2>
<p>At the mobility startup, we ran Go services talking to a handful of microservices. When I joined (before eventually leading the engineering), the local dev setup involved seventeen manual steps spread across a README that contradicted itself in three places. I rewrote it as a Makefile, the kind of  <a href="/blog/2019-08-12-developer-experience-platform/"
   
   >ad-hoc tooling that beats a platform</a>
 at that size.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>git clone git@github.com:company/app.git
</span></span><span style="display:flex;"><span>make setup
</span></span><span style="display:flex;"><span>make dev
</span></span></code></pre></div><p>Three commands. If it takes more than three commands to go from zero to a running local environment, you have a setup problem, not a complexity problem. Script it, containerize the dependencies, seed the database automatically. The new hire&rsquo;s laptop is a test of your infrastructure&rsquo;s maturity. If you can&rsquo;t reproduce your dev environment reliably, production probably isn&rsquo;t any better.</p>
<p>When I set up the dev environment at my infrastructure startup, I literally timed it. Fifteen minutes from <code>git clone</code> to running tests. If it crept past that, I treated it as a bug.</p>
<h2 id="the-buddy-system-done-right">The Buddy System (Done Right)</h2>
<p>Every new engineer gets a buddy. Not their manager. Not the tech lead. Someone close enough to the codebase to answer &ldquo;where does this thing live?&rdquo; questions but not so senior that the new hire feels stupid asking.</p>
<p>The buddy&rsquo;s job is simple: be interruptible for the first two weeks. That&rsquo;s the whole job description. They don&rsquo;t need to teach. They need to unblock.</p>
<p>At the fintech startup, I paired each new hire with whoever had last touched the area of code they&rsquo;d be working in. Not because that person was the best teacher, but because they had the freshest context. Onboarding is a transfer of context, not knowledge. The knowledge is in the code. The context (why this weird pattern exists, which service is actually deprecated but still running, where the real config lives) is in people&rsquo;s heads.</p>
<h2 id="starter-tasks-that-arent-insulting">Starter Tasks That Aren&rsquo;t Insulting</h2>
<p>The worst onboarding pattern is the &ldquo;starter project&rdquo; that&rsquo;s actually a garbage task nobody else wanted to do. New engineers can smell it. It tells them their time isn&rsquo;t valued.</p>
<p>Good starter work has three properties:</p>
<ol>
<li><strong>It touches production.</strong> The whole point is building confidence that they can ship safely.</li>
<li><strong>It has a clear definition of done.</strong> Not &ldquo;explore the payment service and propose improvements.&rdquo; That&rsquo;s a research project disguised as onboarding.</li>
<li><strong>It teaches something specific about your system.</strong> A bug in the notification service teaches them about the event pipeline. An error message improvement teaches them about the API contract.</li>
</ol>
<p>Keep a backlog of tagged issues specifically for this. Not fake work. Real bugs and improvements that were scoped to one or two days and came with enough context that someone new could pick them up without a forty-minute walkthrough.</p>
<h2 id="documentation-less-is-more">Documentation: Less Is More</h2>
<p>I&rsquo;ve seen onboarding wikis with fifty pages of architecture history, org charts, and &ldquo;philosophy&rdquo; documents. Nobody reads them. The new hire skims the first two, gets overwhelmed, and asks their buddy anyway.</p>
<p>What new engineers need written down:</p>
<ul>
<li>How to set up their machine (the Makefile)</li>
<li>How to deploy and how to roll back</li>
<li>How to ask for help and who reviews what</li>
<li>A one-page system overview with a data flow diagram</li>
</ul>
<p>That&rsquo;s four documents. Keep them short. Update them every time someone joins and finds something wrong. The onboarding docs should be the most maintained docs in your entire company, because they&rsquo;re the only ones that get tested regularly by people who have no prior context.</p>
<h2 id="the-feedback-loop-most-teams-skip">The Feedback Loop Most Teams Skip</h2>
<p>What separates decent onboarding from great onboarding: you ask the new hire what was broken.</p>
<p>Every new engineer who joins should file at least one issue against the onboarding process itself. Not as a suggestion. As a requirement. &ldquo;What was confusing? What was wrong? What did you have to ask someone that should have been written down?&rdquo;</p>
<p>At the fintech startup, we turned this into a standing item in the 30-day check-in. Every single round of onboarding made the next one better. By the time I left, the setup was tight enough that contractors could be productive on day two.</p>
]]></content:encoded></item><item><title>How We Track and Prioritize Tech Debt at a Fintech Startup</title><link>https://lawzava.com/blog/2018-12-10-tech-debt-tracking-and-prioritization/</link><pubDate>Mon, 10 Dec 2018 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2018-12-10-tech-debt-tracking-and-prioritization/</guid><description>A framework for cataloging technical debt, scoring it by impact and risk, and scheduling paydown without stalling feature delivery.</description><content:encoded><![CDATA[<p>Tech debt won&rsquo;t fix itself. Put it in a registry, score it, and schedule it like real work. We did this at the fintech startup and it turned a chaotic backlog of &ldquo;we should really fix that&rdquo; into something we ship against every sprint.</p>
<p>Every engineering team I&rsquo;ve worked with has some version of the same conversation. Someone mentions a gnarly part of the codebase. Everyone nods. Someone says &ldquo;we should really clean that up.&rdquo; Nobody does.</p>
<p>At the fintech startup, we hit a point where this was hurting us. Our data pipeline had accumulated enough shortcuts and half-finished migrations that feature work was getting slower every quarter. Not dramatically. Just enough friction that estimates kept creeping up and nobody could point to exactly why.</p>
<p>So I built a system for it. Nothing fancy. But it changed how we think about debt.</p>
<h2 id="what-tech-debt-is">What tech debt is</h2>
<p>Tech debt is a  <a href="/blog/2016-02-22-the-true-cost-of-technical-debt/"
   
   >future cost</a>
 you created with a present decision. Sometimes that decision was smart: you shipped faster and the tradeoff was worth it. Sometimes it was accidental: the design was fine until requirements shifted. Either way, the cost is real.</p>
<p>The forms we see most often:</p>
<ul>
<li><strong>Deliberate shortcuts.</strong> You knew it was a hack. You shipped anyway. Fair enough.</li>
<li><strong>Accidental debt.</strong> Looked fine at the time. Scale or new requirements proved otherwise.</li>
<li><strong>Environmental shifts.</strong> A dependency gets deprecated. A compliance rule changes. Not your fault, still your problem.</li>
<li><strong>Operational gaps.</strong> Missing monitoring, thin tests, no runbook. The kind of thing that bites you at 2am.</li>
</ul>
<h2 id="our-debt-registry">Our debt registry</h2>
<p>We created a debt registry: a shared list of known liabilities that lives right in our issue tracker. Not a separate doc. Not a wiki page nobody reads. Same board, same sprint planning, same visibility as feature work.</p>
<p>Each entry looks roughly like this:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">id</span>: <span style="color:#ae81ff">TD-021</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">title</span>: <span style="color:#ae81ff">Legacy auth flow lacks rate limiting</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">area</span>: <span style="color:#ae81ff">auth-service</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">impact</span>: <span style="color:#ae81ff">Security, reliability</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">risk</span>: <span style="color:#ae81ff">High</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">effort</span>: <span style="color:#ae81ff">3-4</span> <span style="color:#ae81ff">weeks</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">owner</span>: <span style="color:#ae81ff">Platform</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">status</span>: <span style="color:#ae81ff">Proposed</span>
</span></span></code></pre></div><p>The key insight was treating debt entries as first-class work items. When debt lives in a separate spreadsheet, it gets ignored. When it sits next to feature tickets in the same planning session, it gets discussed.</p>
<p>We review the registry every two weeks during sprint planning. Takes ten minutes. That alone changed how we worked.</p>
<h2 id="scoring-keep-it-dead-simple">Scoring: keep it dead simple</h2>
<p>We tried complex scoring matrices. They didn&rsquo;t survive contact with reality. What stuck was three dimensions and a formula you can do in your head:</p>
<ul>
<li><strong>Impact.</strong> How much does this slow us down or degrade the product?</li>
<li><strong>Risk.</strong> What happens if it gets worse or fails outright?</li>
<li><strong>Effort.</strong> How much work to fix it?</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>priority = (impact * 2) + risk - effort
</span></span></code></pre></div><p>Each on a 1-5 scale. Is it perfect? No. But it forces you to compare things that otherwise feel impossible to rank. &ldquo;The auth system is scary&rdquo; versus &ldquo;the build is slow&rdquo; suddenly becomes a conversation with numbers instead of gut feelings.</p>
<h2 id="when-to-act-now-versus-later">When to act now versus later</h2>
<p>Some things can&rsquo;t wait:</p>
<ul>
<li>Security exposure. Full stop.</li>
<li>The same root cause behind repeated incidents.</li>
<li>A dependency about to hit end-of-life.</li>
<li>Workarounds that tax every single release.</li>
</ul>
<p>Everything else goes into the prioritized backlog. High impact, low effort items get picked up opportunistically. Large refactors get scheduled as dedicated work with clear milestones.</p>
<h2 id="how-we-schedule-paydown">How we schedule paydown</h2>
<p>We tried three approaches before settling on a hybrid:</p>
<p><strong>Capacity allocation.</strong> We reserve roughly 20% of each sprint for maintenance and debt work. Non-negotiable. Product knows about it. This is the baseline.</p>
<p><strong>Debt sprints.</strong> Every six weeks, we run a focused sprint on the highest-priority debt items. Engineers pick from the top of the registry. These sprints have been some of the most satisfying work the team does.</p>
<p><strong>Opportunistic paydown.</strong> If you&rsquo;re already in the code, improve it. Boy scout rule. We just ask people to tag the cleanup commits so we can track the effort.</p>
<h2 id="incremental-migration-over-big-rewrites">Incremental migration over big rewrites</h2>
<p>We learned this the hard way. Big-bang rewrites fail. They just do. Every large debt item at the fintech startup now follows the same pattern:</p>
<ul>
<li>Run old and new paths in parallel.</li>
<li>Migrate the highest-traffic paths first.</li>
<li>Set a cutover date. Remove old code on that date. No exceptions.</li>
</ul>
<p>Feature flags make this safe:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">if</span> flags<span style="color:#f92672">.</span>new_auth_flow:
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> new_auth<span style="color:#f92672">.</span>authenticate(user)
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">return</span> legacy_auth<span style="color:#f92672">.</span>authenticate(user)
</span></span></code></pre></div><p>The flag gives you a kill switch. Sleep better at night.</p>
<h2 id="selling-debt-work-to-non-engineers">Selling debt work to non-engineers</h2>
<p>This is where most teams fail. You can&rsquo;t walk into a planning meeting and say &ldquo;the auth code is messy.&rdquo; Nobody cares.</p>
<p>What works: translate debt into business language. &ldquo;Feature X takes twice as long to ship because every change requires manual regression testing in the auth module.&rdquo; Now it&rsquo;s a delivery speed conversation. Product managers understand delivery speed.</p>
<p>At the fintech startup, we started including debt impact in our sprint velocity reports. When the team could show that velocity dropped 15% quarter-over-quarter and tie it to specific debt items, getting time allocated stopped being a fight.</p>
<h2 id="prevention">Prevention</h2>
<p>A few guardrails go further than any cleanup sprint:</p>
<ul>
<li>Lightweight design reviews for anything touching critical paths.</li>
<li>Code review checklists that ask about maintainability, not just correctness.</li>
<li>Quarterly dependency upgrades so you never face a multi-year jump.</li>
<li>Documentation expectations for anything another team will touch.</li>
</ul>
<h2 id="why-the-registry-worked">Why the registry worked</h2>
<p>The registry wasn&rsquo;t sophisticated. It was a handful of fields in Jira. It worked because it made invisible costs visible, and once everyone can see the cost, the conversation about paying it down gets a lot easier. You took a loan; now you have a repayment plan.</p>
]]></content:encoded></item><item><title>Scaling Engineering Teams: What Breaks at 10, 25, and 50</title><link>https://lawzava.com/blog/2018-11-12-scaling-engineering-teams/</link><pubDate>Mon, 12 Nov 2018 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2018-11-12-scaling-engineering-teams/</guid><description>How engineering teams change as they grow: what breaks at each size, explicit ownership, written decisions, and process that follows pain.</description><content:encoded><![CDATA[<p>When I joined the fintech startup, the engineering team was small enough that we could hash out every decision over lunch. Five of us in a room, whiteboarding architecture, shipping features the same week we specced them. It was fast, messy, and it worked.</p>
<p>Then we started growing.</p>
<p>By the time we hit fifteen engineers, things that used to happen naturally (knowledge sharing, aligning on priorities, knowing who owned what) stopped happening on their own. Nobody did anything wrong. The team just outgrew its own communication patterns. I remember one week where two engineers independently built overlapping caching layers because neither knew the other was working on it. That was the moment I realized: scaling a team is a fundamentally different problem than building a product.</p>
<h2 id="the-stages-nobody-warns-you-about">The stages nobody warns you about</h2>
<p>There&rsquo;s no smooth curve from small team to big team. It&rsquo;s a series of phase transitions, and each one breaks something that was working fine before.</p>
<p><strong>Around 10 engineers</strong>, everything runs on shared context. You all know the codebase, you all know each other, decisions are fast. Feels great. Savor it.</p>
<p><strong>At 25 to 30</strong>, you wake up one morning and realize you have actual teams now. Dependencies show up. Duplication shows up. That thing where you just shout across the room to coordinate? Gone. You need to be intentional about who talks to whom about what.</p>
<p><strong>At 40 to 60</strong>, you need real structure. Managers. Defined roles. Onboarding that goes beyond &ldquo;ask anyone.&rdquo; I saw this at a startup accelerator this year: founders hitting this wall where the informal culture that made them fast was now making them slow. Every single one of them resisted adding structure. Every single one eventually had to.</p>
<p><strong>At 80 to 100</strong>, you&rsquo;re doing organizational design whether you like it or not. Cross-team alignment becomes someone&rsquo;s actual job. Architecture decisions need governance. Career paths matter because people will leave if they can&rsquo;t see a future.</p>
<h2 id="ownership-has-to-be-explicit">Ownership has to be explicit</h2>
<p>This was the hardest lesson for me. At a small startup, ownership is fluid. Whoever cares most picks it up. That works well until it stops working.</p>
<p>At the fintech startup we moved to small, mission-focused teams. Each team owned a clear slice of the product: the domain, the code, the on-call rotation, the technical direction. We wrote it down. A simple team charter: here&rsquo;s what we own, here are our interfaces, here&rsquo;s who&rsquo;s on-call. Nothing fancy.</p>
<p>The effect was immediate. Fewer &ldquo;who should I ask about this?&rdquo; questions. Faster decisions. Less duplicated work. Turns out people move quickly when they know their boundaries.</p>
<p>Four team shapes held up well for us:</p>
<ul>
<li><strong>Product teams</strong> delivering customer value end to end</li>
<li><strong>Platform teams</strong> providing shared infrastructure</li>
<li><strong>Temporary expert teams</strong> that unblock others and then move on</li>
<li><strong>Specialist teams</strong> for the genuinely hard subsystems</li>
</ul>
<h2 id="communication-doesnt-scale-by-accident">Communication doesn&rsquo;t scale by accident</h2>
<p>At 10 people, context spreads by osmosis. You overhear things. You absorb the state of the project just by sitting in the same room.</p>
<p>At 50, that&rsquo;s completely gone. If you don&rsquo;t write it down, it didn&rsquo;t happen.</p>
<p>We learned it at fifteen, the hard way. The practices that helped, most of them  <a href="/blog/2017-12-11-async-communication-makes-better-engineering-teams/"
   
   >async and written</a>
:</p>
<ul>
<li>Short written updates after decisions. Not meeting notes. Actual &ldquo;here&rsquo;s what we decided and why.&rdquo;</li>
<li>Weekly demos. Not polished presentations. Just &ldquo;here&rsquo;s what shipped, here&rsquo;s what&rsquo;s stuck.&rdquo;</li>
<li>Lightweight architecture decision records for anything that changes a shared interface.</li>
<li>Clear escalation paths. When something is on fire, people need to know who to call without digging through a wiki.</li>
</ul>
<p>The goal is fewer surprises, not more meetings.</p>
<h2 id="process-should-follow-pain">Process should follow pain</h2>
<p>I&rsquo;ve seen teams add process preemptively: policies for problems they haven&rsquo;t hit yet. It rarely works. Process should show up when the pain of not having it outweighs the overhead of maintaining it.</p>
<p>At the fintech startup, our process grew roughly like this:</p>
<ul>
<li><strong>Early days</strong>: Code review. A deployment checklist. Basic on-call.</li>
<li><strong>Growing pains</strong>: Incident response runbooks. A planning cadence. Team charters.</li>
<li><strong>Later</strong>: Engineering levels. Hiring rubrics. Decision records for cross-cutting changes.</li>
</ul>
<p>One thing that helped a lot: tiered decision authority. Small decisions stay inside the team. Medium decisions involve peer teams. Big decisions get a written proposal and a review window. This kept us from bottlenecking everything through a single approval chain.</p>
<h2 id="hiring-is-the-long-game">Hiring is the long game</h2>
<p>Scaling headcount without scaling hiring quality will hurt you for years. We put  <a href="/blog/2018-04-16-technical-interviewing-what-actually-works/"
   
   >rubrics</a>
 in place before we ramped hiring. Trained interviewers. Calibrated scoring across panels. It slowed us down initially but the consistency paid off.</p>
<p>Onboarding was the other half. A 30/60/90 day plan with real milestones. A buddy for every new hire. A living checklist that we actually updated when things changed. The faster someone ships their first meaningful change, the faster they feel like they belong.</p>
<h2 id="invest-in-the-platform-early">Invest in the platform early</h2>
<p>Every team rebuilding the same deployment pipeline or logging setup is a team not shipping product features. We stood up a  <a href="/blog/2017-12-28-building-platform-teams/"
   
   >small platform team</a>
 earlier than most people would recommend, and I&rsquo;d do it again.</p>
<p>Standardize the expensive stuff: languages, infrastructure patterns, observability tooling, security practices. Leave room for teams to make their own choices where it doesn&rsquo;t create systemic risk. That balance is never perfect. You just keep adjusting.</p>
<p>Technical debt compounds with team size. The more people writing code, the faster it accumulates. Give it an owner. Give it time. If nobody is responsible for paying it down, nobody will.</p>
<h2 id="culture-doesnt-transmit-itself">Culture doesn&rsquo;t transmit itself</h2>
<p>This one hit me at the accelerator. Talking to founders from all over Asia, the pattern was the same. They had a strong culture at 10 people. At 40, new hires didn&rsquo;t absorb it. The founders were frustrated because they thought culture was something you just had, not something you built and maintained.</p>
<p>Culture scales when values are written down, repeated constantly, and, most importantly, modeled by leaders. Recognize behaviors, not just outcomes. Document expectations in an engineering handbook instead of relying on tribal knowledge. Celebrate progress. Do blameless postmortems and actually mean it.</p>
<h2 id="organizational-design-is-the-hard-part">Organizational design is the hard part</h2>
<p>The technical work is the easy part of scaling a team. The hard part is making ownership, decisions, and communication explicit enough that dozens of people can move fast without stepping on each other. Get that right and growth is a multiplier. Get it wrong and every new hire makes you slower.</p>
]]></content:encoded></item><item><title>Technical Interviews: Work Samples Beat Whiteboard Puzzles</title><link>https://lawzava.com/blog/2018-04-16-technical-interviewing-what-actually-works/</link><pubDate>Mon, 16 Apr 2018 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2018-04-16-technical-interviewing-what-actually-works/</guid><description>Most technical interviews test the wrong things. What hiring engineers at a fintech startup taught me: work samples, pairing, deep dives, and rubrics.</description><content:encoded><![CDATA[<p>Last month I sat across from a candidate who&rsquo;d built distributed systems handling millions of financial data points. Impressive resume. Real production experience. Then we asked him to reverse a binary tree on a whiteboard, and he froze. We almost passed on him. That would have been a terrible mistake.</p>
<p>He&rsquo;s one of our best hires.</p>
<p>That experience broke something in how I thought about interviewing. At the fintech startup we were growing the engineering team fast, and I kept seeing the same pattern: candidates who crushed whiteboard problems but couldn&rsquo;t debug a real issue, and candidates who struggled with algorithmic puzzles but wrote clean, thoughtful code every day.</p>
<p>Something was deeply wrong with how our industry interviews people.</p>
<h2 id="the-stuff-that-doesnt-work">The stuff that doesn&rsquo;t work</h2>
<p><strong>Whiteboard algorithms.</strong> I get why they&rsquo;re popular. They feel rigorous. But think about what you&rsquo;re actually testing. You&rsquo;re testing whether someone recently crammed LeetCode. You&rsquo;ve stripped away their IDE, their docs, their ability to Google something. You&rsquo;ve removed every tool they&rsquo;d use on the job and then judged them on the result. That&rsquo;s not an interview. That&rsquo;s hazing.</p>
<p><strong>Brain teasers.</strong> &ldquo;How many golf balls fit in a school bus?&rdquo; If you&rsquo;re still asking these in 2018, please stop. Google&rsquo;s head of people operations, Laszlo Bock, told the New York Times back in 2013 that brainteasers are &ldquo;a complete waste of time&rdquo; and &ldquo;don&rsquo;t predict anything.&rdquo;</p>
<p><strong>Trivia questions.</strong> &ldquo;What&rsquo;s the time complexity of HashMap.get() in Java?&rdquo; Cool, they memorized it. Or they didn&rsquo;t. Either way you&rsquo;ve learned nothing about whether they can build software.</p>
<p><strong>Massive take-home projects.</strong> I&rsquo;ve seen companies send 8-hour assignments and call it &ldquo;a small exercise.&rdquo; You&rsquo;re not testing skill. You&rsquo;re filtering for people with no life outside work. Single parents, people with side commitments, anyone who values their free time: they just opt out. And you never even know what you missed.</p>
<h2 id="what-predicts-performance">What predicts performance</h2>
<p>I&rsquo;ve been iterating on our process at the fintech startup for a while now. This is what&rsquo;s worked.</p>
<h3 id="give-them-a-laptop-and-a-real-problem">Give them a laptop and a real problem</h3>
<p>This is the single biggest improvement we made. Instead of a whiteboard, we hand candidates a laptop with an IDE, internet access, and a small codebase. The task is something close to what they&rsquo;d actually do on the job. Add a feature. Fix a bug. Review a pull request.</p>
<p>You learn so much more this way. How do they read unfamiliar code? Do they check edge cases? How do they use their tools? Do they ask good questions when stuck?</p>
<p>One of our best interview tasks is a broken API endpoint with a failing test. The candidate gets logs, the codebase, and 45 minutes. We&rsquo;re not looking for a perfect fix. We&rsquo;re watching how they think.</p>
<h3 id="pair-with-them">Pair with them</h3>
<p>Pair programming sessions are gold. You pick a small problem, sit next to the candidate, and work on it together. As a collaborator, not an examiner.</p>
<p>This tells you things no other format can. How do they handle suggestions? Do they explain their thinking? Can they take feedback without getting defensive? These are the things that actually matter when you&rsquo;re shipping code with a team.</p>
<h3 id="talk-about-what-theyve-already-built">Talk about what they&rsquo;ve already built</h3>
<p>For senior roles especially, I&rsquo;ve started spending more time on deep dives into past work. Pick a system they built. Ask them to walk you through the architecture. Then start pulling threads. Why this database? What would you change? What broke in production?</p>
<p>Good engineers light up during these conversations. They remember the tradeoffs. They&rsquo;ll tell you about the decision they regret. The ones who padded their resume get vague fast.</p>
<h3 id="use-rubrics-not-vibes">Use rubrics, not vibes</h3>
<p>Early on at the fintech startup, our debriefs were a mess. &ldquo;I liked her.&rdquo; &ldquo;He seemed smart.&rdquo; &ldquo;I don&rsquo;t know, something felt off.&rdquo; That&rsquo;s not a hiring decision. That&rsquo;s a gut check, and guts are biased.</p>
<p>Now every interviewer fills out a rubric before the debrief. Same questions, same scale. You write down specific evidence, not impressions. It&rsquo;s not glamorous, but it&rsquo;s the difference between a process and a coin flip.</p>
<h2 id="designing-the-loop">Designing the loop</h2>
<p>Keep it tight. Nobody needs a six-round interview for a backend role.</p>
<p>Here&rsquo;s roughly what we do:</p>
<ul>
<li><strong>Phone screen</strong> (30-45 min): Can this person communicate? Do they have the baseline?</li>
<li><strong>Work sample</strong> (60-90 min): Laptop, real problem, real tools.</li>
<li><strong>Deep dive</strong> (45 min): Walk me through something you built.</li>
<li><strong>Team fit</strong> (45 min): Values, collaboration style, how they handle disagreement.</li>
</ul>
<p>For senior roles, swap the deep dive for a system design conversation. Let them drive. Ask about tradeoffs, not trivia.</p>
<h2 id="train-your-interviewers">Train your interviewers</h2>
<p>This one&rsquo;s overlooked constantly. Most engineers are terrible interviewers. Not because they&rsquo;re bad people, but because nobody taught them. They default to whatever they experienced as a candidate, which was probably also bad.</p>
<p>At the fintech startup we started having new interviewers shadow experienced ones. We review rubrics together. We debrief on the debrief. It takes time, but the signal quality goes way up.</p>
<h2 id="candidate-experience-is-your-reputation">Candidate experience is your reputation</h2>
<p>I can&rsquo;t count how many times a candidate told me about a horrible interview experience at some other company. Ghosted after three rounds. Left waiting in a lobby for 40 minutes. Given a problem that had nothing to do with the role.</p>
<p>Every candidate who walks out of your office talks about it. To their friends, to their colleagues, sometimes on Glassdoor. At a startup where we&rsquo;re  <a href="/blog/2016-08-01-hiring-engineers-when-you-cant-compete-on-salary/"
   
   >competing with bigger names for talent</a>
, that reputation matters enormously.</p>
<p>Be clear about the process upfront. Respect their time. If you&rsquo;re not making an offer, tell them why. It costs you nothing and it&rsquo;s the right thing to do.</p>
<h2 id="watch-out-for-these-traps">Watch out for these traps</h2>
<p><strong>Hiring for similarity.</strong> If your whole team went to the same three schools and thinks the same way, you don&rsquo;t have a team. You have an echo chamber. Diverse panels, evidence-based decisions, focus on complementary strengths.</p>
<p><strong>Credential worship.</strong> A degree from a top university tells you someone got into a top university. It doesn&rsquo;t tell you they can debug a production outage at 2am or write code their teammates can actually read.</p>
<p><strong>Letting one bad interview tank a candidate.</strong> Single data points are noisy. If four interviews went great and one was mediocre, look at the full picture. Maybe the interviewer had an off day. Maybe the question was bad. Aggregate the signal.</p>
<p>Most companies copy what everyone else does without asking whether it works. The bar isn&rsquo;t that high, and most of our industry still can&rsquo;t clear it.</p>
]]></content:encoded></item><item><title>Async-First Engineering Teams: Cutting Decision Latency</title><link>https://lawzava.com/blog/2017-12-11-async-communication-makes-better-engineering-teams/</link><pubDate>Mon, 11 Dec 2017 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2017-12-11-async-communication-makes-better-engineering-teams/</guid><description>How our fintech team cut meetings and decision latency across time zones: written decisions, response-time rules, and calls only when they earn it.</description><content:encoded><![CDATA[<p>In distributed organizations, decision latency is usually a bigger throughput bottleneck than effort. Not all meetings are waste, but the default &ldquo;let&rsquo;s hop on a call&rdquo; reflex is one of the biggest productivity drains I&rsquo;ve seen.</p>
<p>At the fintech startup, we figured this out the hard way. We had engineers spread across time zones, a product moving fast, and a calendar that looked like a game of Tetris nobody was winning. Something had to give.</p>
<h2 id="the-real-cost-of-lets-just-sync-up">The real cost of &ldquo;let&rsquo;s just sync up&rdquo;</h2>
<p>A meeting at 10am and another at 2pm doesn&rsquo;t give you a four-hour block in the middle. It gives you two useless slices where you can&rsquo;t get into anything deep. You sit down, start loading the problem into your head, glance at the clock, realize you&rsquo;ve got 40 minutes before the next call, and end up on Slack or email instead. The hard problems don&rsquo;t get touched.</p>
<p>I watched this happen at the fintech startup. Smart engineers shipping shallow work because they never had the uninterrupted time to do the real thing.</p>
<p>The other cost is memory. Verbal decisions vanish. Someone says &ldquo;we agreed on X&rdquo; and three people remember it differently. New hires ask why something was built a certain way and the answer is &ldquo;I think we discussed it in a meeting last March.&rdquo; That&rsquo;s oral tradition.</p>
<h2 id="writing-changes-everything">Writing changes everything</h2>
<p>We shifted to async by default. Questions, proposals, decisions: write them down first. If the thread stalls or things get heated, jump on a call. But always come back and capture what was decided in writing.</p>
<p>The results were immediate. Engineers got their mornings back. People in different time zones stopped being second-class citizens. And decisions actually stuck because you could point to the thread where the trade-offs were discussed.</p>
<p>I also noticed something I didn&rsquo;t expect: the quality of decisions went up. When you force someone to  <a href="/blog/2017-06-26-technical-leadership-without-authority/"
   
   >write a proposal</a>
 instead of pitching it verbally in a meeting, they think harder. They check the code. They pull up the docs. Writing is thinking, and thinking is what we&rsquo;re paying engineers to do.</p>
<h2 id="how-we-did-it">How we did it</h2>
<p>We kept it simple. For any meaningful decision, someone writes up a short doc:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-markdown" data-lang="markdown"><span style="display:flex;"><span># Decision: [Title]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">## Context
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">## Decision
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">## Consequences
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">## Owner and date
</span></span></span></code></pre></div><p>Nothing fancy. Took five minutes to fill out. Saved hours of re-litigation later.</p>
<p>We set response time expectations so nobody felt anxious. Urgent stuff: respond within a couple hours. Normal threads: by end of day. Low priority: a couple days is fine. Once people knew the rules, the pressure to be &ldquo;always on&rdquo; disappeared.</p>
<p>Status updates went into public channels. Short, async, scannable. We killed the weekly status meeting entirely. Nobody missed it.</p>
<h2 id="sync-still-matters-sometimes">Sync still matters (sometimes)</h2>
<p>I&rsquo;m not anti-meeting. I&rsquo;m anti-default-meeting. There are times when you absolutely should get on a call:</p>
<p><strong>Building trust.</strong> Onboarding a new engineer, one-on-ones, team bonding: these need face time. Text doesn&rsquo;t build relationships the same way.</p>
<p><strong>Gnarly debugging sessions.</strong> When you&rsquo;re staring at a production issue with six moving parts, a live whiteboard session beats a 47-message Slack thread.</p>
<p><strong>Conflict.</strong> If two people disagree and the thread is getting tense, get on a call. Tone matters and text is terrible at conveying it.</p>
<p><strong>Incidents.</strong> When the site is down, you don&rsquo;t write a proposal. You get on a call and  <a href="/blog/2017-10-23-incident-management-for-growing-teams/"
   
   >run the incident</a>
.</p>
<p>The key is making sync the exception, not the rule.</p>
<h2 id="the-discipline-of-good-async">The discipline of good async</h2>
<p>Bad async is worse than meetings. I&rsquo;ll admit that. If people write vague messages, bury the ask in paragraph four, or never specify deadlines, async becomes a graveyard of unanswered threads.</p>
<p>So we had rules. State what you need in the first sentence. Give just enough context to answer. Be specific about when you need a response. Batch your reading instead of living in Slack all day. And for the love of god, don&rsquo;t put long-term decisions in ephemeral chat. Use a doc, a wiki, a PR description, something searchable.</p>
<h2 id="what-i-learned">What I learned</h2>
<p>Switching to async-first was a cultural statement as much as a process change: we trust our engineers to manage their own time, and we value output over presence. The engineers who thrived were the ones who could write clearly, think independently, and reach out when they were actually stuck.</p>
<p>The calendar got quieter. The code got better. And when we did have meetings, they were short, focused, and worth everyone&rsquo;s time. That&rsquo;s the trade-off I&rsquo;ll take every single time.</p>
]]></content:encoded></item><item><title>Engineering Manager vs Tech Lead: How the Roles Differ</title><link>https://lawzava.com/blog/2017-10-09-engineering-manager-vs-tech-lead/</link><pubDate>Mon, 09 Oct 2017 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2017-10-09-engineering-manager-vs-tech-lead/</guid><description>Engineering manager vs tech lead: what each role does day to day, how we split them at a fintech startup, and how to test which track fits you.</description><content:encoded><![CDATA[<p>Managers multiply through people. Tech leads multiply through systems. Pick based on what drains you least, not what sounds prestigious.</p>
<h3 id="the-fork-nobody-prepares-you-for">The fork nobody prepares you for</h3>
<p>Every strong engineer eventually faces this question. Do you go into management, or do you stay technical and lead from there?</p>
<p>I&rsquo;ve watched this fork up close at the fintech startup. When we were small, the two jobs blurred together: architecture decisions, hiring, 1:1s, code review. It was unsustainable. Once we grew past a handful of engineers, the roles had to split. And more importantly, we had to figure out what each role <em>actually</em> demanded so we could hire and promote into them properly.</p>
<p>Here&rsquo;s what I learned.</p>
<h3 id="side-by-side-breakdown">Side-by-side breakdown</h3>
<table>
  <thead>
      <tr>
          <th></th>
          <th><strong>Engineering Manager</strong></th>
          <th><strong>Tech Lead</strong></th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><strong>Primary focus</strong></td>
          <td>People, process, delivery</td>
          <td>Architecture, code quality, technical direction</td>
      </tr>
      <tr>
          <td><strong>Typical day</strong></td>
          <td>1:1s, standups, cross-team syncs, hiring calls</td>
          <td>Code reviews, design docs, debugging hard problems, prototyping</td>
      </tr>
      <tr>
          <td><strong>Authority</strong></td>
          <td>Direct: owns performance reviews, promotions, team composition</td>
          <td>Indirect: influences through proposals, standards, and example</td>
      </tr>
      <tr>
          <td><strong>Codes?</strong></td>
          <td>Sometimes, in small teams. Shouldn&rsquo;t be on the critical path.</td>
          <td>Yes. Expected to ship meaningful work.</td>
      </tr>
      <tr>
          <td><strong>Accountable for</strong></td>
          <td>Team health, velocity, retention, stakeholder alignment</td>
          <td>System quality, technical debt, architectural coherence</td>
      </tr>
      <tr>
          <td><strong>Hardest part</strong></td>
          <td>Difficult conversations. Firing someone. Navigating politics.</td>
          <td>Being responsible for outcomes you don&rsquo;t directly control.</td>
      </tr>
      <tr>
          <td><strong>Reward</strong></td>
          <td>Watching people grow. Team shipping without drama.</td>
          <td>Shaping a system. Solving the problem nobody else could crack.</td>
      </tr>
  </tbody>
</table>
<p>That table is the short version. Let me expand on the parts that aren&rsquo;t obvious.</p>
<h3 id="what-an-engineering-manager-does">What an engineering manager does</h3>
<p>Most of the job is invisible. You&rsquo;re clearing the path so your team can build.  <a href="/blog/2016-08-01-hiring-engineers-when-you-cant-compete-on-salary/"
   
   >Hiring the right people</a>
, onboarding them fast, giving honest feedback, shielding the team from organizational noise. None of that shows up in a commit log.</p>
<p>A rule I&rsquo;d give any new manager: if you&rsquo;re writing production code, something is wrong. Either you haven&rsquo;t hired well enough, or you&rsquo;re clinging to the IC identity. Both are problems.</p>
<p>The trap is thinking management is a promotion from engineering. It&rsquo;s a career change. You stop building things and start building an environment. Completely different skill set. If you hate ambiguity, dislike repetitive conversations, or need the dopamine of shipping code daily, you will be miserable. I&rsquo;ve seen good engineers become terrible managers because nobody told them this upfront.</p>
<p>What makes a great EM: you actually care about people&rsquo;s careers. Not performatively. You enjoy the puzzle of team dynamics. You can sit in a room full of competing priorities and walk out with a plan everyone tolerates.</p>
<h3 id="what-a-tech-lead-does">What a tech lead does</h3>
<p>The tech lead owns the &ldquo;how.&rdquo; You decide the architecture, set coding standards, break ties on technical debates, and make sure the system doesn&rsquo;t rot while the team ships features.</p>
<p>You still write code. That&rsquo;s non-negotiable. A tech lead who stops coding loses credibility fast. But you also spend a surprising amount of time communicating. Explaining tradeoffs to product managers. Writing design documents. Mentoring junior engineers through code review. The ratio shifts to maybe 50% coding, 50% everything else, but the code stays.</p>
<p>The frustrating part: you&rsquo;re accountable for the system but you don&rsquo;t control the people building it. You can&rsquo;t assign tasks or run performance reviews. You  <a href="/blog/2017-06-26-technical-leadership-without-authority/"
   
   >lead by influence</a>
, by being right often enough that people trust your judgment. If your ideas are bad, or if you can&rsquo;t communicate why they&rsquo;re good, you have nothing.</p>
<p>At the fintech startup, our tech leads owned specific domains. One person owned the data pipeline architecture. Another owned the API layer. Clear ownership, clear accountability. No committees.</p>
<h3 id="how-to-choose">How to choose</h3>
<p>Forget the title. Look at how you spend your energy.</p>
<p>After a day of back-to-back 1:1s, are you energized or drained? After eight hours deep in a codebase, do you feel alive or lonely? Your gut answer points you in the right direction.</p>
<p>Better yet, test it. Before you commit to either track, volunteer for the work. Mentor a junior engineer for a quarter. Run a sprint planning cycle. On the tech side, drive an RFC through to implementation. Own a migration. Lead a postmortem.</p>
<p>The title matters less than the work. If you&rsquo;re doing the work and it fits, the title will follow.</p>
<h3 id="the-hybrid-trap">The hybrid trap</h3>
<p>We tried the &ldquo;tech lead manager&rdquo; thing at the fintech startup when the team was small, with one person carrying both jobs. It sort of worked until it didn&rsquo;t. You end up being mediocre at two jobs instead of good at one. Skipping 1:1s because you&rsquo;re deep in a debugging session. Skimping on code review because you have a hiring pipeline to manage.</p>
<p>If your company is small enough that one person must do both, fine. Just know it&rsquo;s temporary. Plan the split before you need it.</p>
<h3 id="two-tracks-of-equal-weight">Two tracks of equal weight</h3>
<p>Management isn&rsquo;t a promotion. Tech lead isn&rsquo;t a consolation prize. I&rsquo;ve met directors who would&rsquo;ve been happier as principal engineers and staff engineers who secretly wanted to run a team. The industry does a bad job of framing these as equal. They are.</p>
<p>You can switch tracks. People do it all the time. But switching costs something: you lose momentum, you rebuild credibility, and skills you don&rsquo;t use will fade. So pick deliberately, try the work before you commit, and don&rsquo;t let someone else&rsquo;s career ladder define yours.</p>
]]></content:encoded></item><item><title>The Business Case for Infrastructure: Pitch It in Money</title><link>https://lawzava.com/blog/2017-09-04-the-business-case-for-infrastructure-investment/</link><pubDate>Mon, 04 Sep 2017 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2017-09-04-the-business-case-for-infrastructure-investment/</guid><description>Boards fund money, risk, and speed. How I pitched infrastructure investment at a fintech startup: business framing, rough ROI, and a skimmable proposal.</description><content:encoded><![CDATA[<p>Nobody on your board woke up thinking about database migrations. They woke up thinking about revenue, burn rate, and whether the next funding round will close. If you walk into that room talking about latency percentiles, you&rsquo;ve already lost.</p>
<p>I learned this the hard way at the fintech startup. We needed a serious infrastructure overhaul. I knew it. My team knew it. But our investors didn&rsquo;t speak in uptime and throughput. They spoke in money. So I had to learn their language.</p>
<h3 id="talk-money-or-dont-talk">Talk money or don&rsquo;t talk</h3>
<p>Every infra pitch boils down to one of four things: it makes money, saves money, reduces risk, or lets us ship faster. That&rsquo;s it. Pick the frame that fits and lead with it. Not with the technology. Not with the architecture diagram. With the business outcome.</p>
<p>At the fintech startup, we were heading into a period where marketing had big traffic projections. Our system couldn&rsquo;t handle it. I didn&rsquo;t pitch &ldquo;we need to re-architect our data pipeline.&rdquo; I pitched &ldquo;we&rsquo;ll lose paying users in Q3 if we don&rsquo;t act now.&rdquo; Different sentence. Same project. Completely different reaction in the room.</p>
<h3 id="risk-is-the-easiest-sell">Risk is the easiest sell</h3>
<p>When downside is obvious, risk framing writes itself. Quantify the probability of an outage. Estimate the cost. Multiply. That number gets attention fast because nobody wants to be the one who ignored a preventable disaster.</p>
<p>Growth constraints work too, but you need credible projections. Vague &ldquo;we might need to scale&rdquo; doesn&rsquo;t cut it. Show the wall you&rsquo;re about to hit and the revenue sitting on the other side.</p>
<p>Velocity framing is underrated. If your  <a href="/blog/2016-06-06-continuous-deployment-without-chaos/"
   
   >deploys take two hours</a>
 and engineers sit idle waiting, that&rsquo;s burned salary. Translate it. &ldquo;We&rsquo;re losing 40 engineer-hours a week to deployment bottlenecks&rdquo; hits harder than &ldquo;our CI/CD pipeline needs work.&rdquo;</p>
<h3 id="do-the-math-even-if-its-rough">Do the math, even if it&rsquo;s rough</h3>
<p>A proposal without numbers is just an opinion. I&rsquo;ve seen smart engineers lose budget requests because they couldn&rsquo;t answer &ldquo;what does this cost us today?&rdquo; Document the current state in dollars and hours, the same way you&rsquo;d  <a href="/blog/2016-02-22-the-true-cost-of-technical-debt/"
   
   >price technical debt</a>
. Then describe what changes, in the same units.</p>
<p>Keep the ROI dead simple. Investment. Expected annual benefit. Payback period. If your assumptions are honest and explicit, rough math beats no math every single time.</p>
<h3 id="structure-for-skimmers">Structure for skimmers</h3>
<p>Executives don&rsquo;t read proposals. They skim them. One paragraph up top: what you want, why, and what it&rsquo;s worth. Then a short problem statement in business terms. Proposed solution with minimal technical detail. Quantified impact. Cost. Timeline. Risks and mitigations. Alternatives you considered and rejected.</p>
<p>That order matters. Bury the ask on page three and it never gets read.</p>
<h3 id="where-ive-seen-pitches-die">Where I&rsquo;ve seen pitches die</h3>
<p>Being too technical. Your CFO doesn&rsquo;t need to understand container orchestration. They need to understand what it changes for the business.</p>
<p>Skipping quantification. &ldquo;Better reliability&rdquo; means nothing. &ldquo;$200K in avoided incident costs per year&rdquo; means something.</p>
<p>Ignoring tradeoffs. If this delays a feature, say so. Explain why the trade is still worth it. Pretending there&rsquo;s no cost makes you look naive.</p>
<p>Asking for everything at once. Phase it. Get a win. Use that win to fund the next phase.</p>
<p>And the killer: not following up. If you don&rsquo;t report results after getting funded, you&rsquo;ve just burned your credibility for the next ask.</p>
<h3 id="keep-the-conversation-going">Keep the conversation going</h3>
<p>Don&rsquo;t wait for budget season. Share metrics regularly. When an incident happens, quantify the damage. When delivery speeds up after an investment, show the numbers. Make infrastructure value visible all the time, so the next request feels like an obvious yes instead of a surprise ask.</p>
<p>Infrastructure is a business investment. Treat it like one and it gets funded. Treat it like a technical hobby and it doesn&rsquo;t.</p>
]]></content:encoded></item><item><title>Technical Leadership Without Authority: What Works</title><link>https://lawzava.com/blog/2017-06-26-technical-leadership-without-authority/</link><pubDate>Mon, 26 Jun 2017 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2017-06-26-technical-leadership-without-authority/</guid><description>A senior title meant little at a small fintech startup. How I earned technical influence instead: one-page proposals, leading with the problem, and allies.</description><content:encoded><![CDATA[<p>Three months into my role at the fintech startup, I walked into a meeting where the product team had already decided on an architecture for a new feature. Nobody had consulted me. Nobody was required to. The company was small and scrappy, roles bled into each other, and the fact that I had a senior title on paper meant very little when the people in the room had been shipping the product longer than I had. I sat down, listened to the plan, and realized it had a serious scalability problem. But I also realized that saying &ldquo;this is wrong, and it&rsquo;s my call&rdquo; would be the fastest way to get ignored forever.</p>
<p>So I shut up, asked a few questions, and later that afternoon wrote a one-page doc outlining the bottleneck I saw. I included numbers from our existing traffic patterns. I proposed an alternative that reused most of their work. Two days later the team pivoted. I never pulled rank; the problem was clear once it was on paper.</p>
<p>That was the moment I understood what technical leadership without authority looks like. In my experience it&rsquo;s the only kind of leadership that sticks.</p>
<h3 id="credibility-is-earned-in-the-boring-moments">Credibility is earned in the boring moments</h3>
<p>You don&rsquo;t become the person people listen to by giving brilliant speeches. You become that person by being right about the small stuff consistently. Fixing the flaky test nobody wants to touch. Jumping on an incident at 2am and  <a href="/blog/2016-07-18-building-resilient-systems-lessons-from-production-failures/"
   
   >writing up the postmortem</a>
 the next morning. Reviewing PRs with actual thought instead of rubber-stamping them.</p>
<p>At the fintech startup, I had to build credibility from zero. The team was sharp. They didn&rsquo;t care about titles. What they cared about was whether you could help them solve hard problems without wasting their time. Fair enough.</p>
<p>I focused on a few areas where I knew my experience was strong: system design, infrastructure, and debugging production issues under pressure. I didn&rsquo;t pretend to know the financial domain better than people who had been in fintech for years. When I was wrong, I said so. When I was unsure, I said that too. Turns out, admitting uncertainty is one of the fastest ways to build trust. People can smell posturing.</p>
<h3 id="communication-does-most-of-the-work">Communication does most of the work</h3>
<p>Influence without authority is 80% communication and 20% technical skill. You can be the best engineer in the room and still get nothing done if you can&rsquo;t frame a problem in a way that makes people care.</p>
<p>I learned to always lead with the problem. Not my solution. The problem. If I walked into a discussion and said &ldquo;we should switch to Kafka,&rdquo; people pushed back instinctively. But if I said &ldquo;we&rsquo;re dropping 12% of events during peak load because our queue can&rsquo;t keep up. Here are the numbers from last Tuesday,&rdquo; suddenly everyone wanted to talk about solutions. Same destination, completely different path.</p>
<p>Writing things down changed everything for me. At the fintech startup we were moving fast, and decisions got lost in Slack threads and hallway conversations. I started writing short proposals, a page or two. Problem, context, recommendation, alternatives, tradeoffs. Nothing fancy. But it forced me to think clearly, and it gave people something to react to on their own time instead of in a high-pressure meeting. Half the arguments I avoided were arguments that never needed to happen in the first place.</p>
<h3 id="make-other-people-better">Make other people better</h3>
<p>The biggest unlock was realizing that my job wasn&rsquo;t to be the smartest person on the team. My job was to make the team smarter. Pair with someone on a tricky migration. Share the context behind a design decision so the next person doesn&rsquo;t have to reverse-engineer it. Fix the  <a href="/blog/2016-06-06-continuous-deployment-without-chaos/"
   
   >CI pipeline</a>
 that wastes 20 minutes of everyone&rsquo;s day.</p>
<p>These things aren&rsquo;t glamorous. Nobody gives you a promotion for speeding up the build. But they compound. Every small improvement makes the team a little faster, a little less frustrated. And the people you helped? They remember. When you propose something ambitious later, they are the ones who back you up.</p>
<h3 id="start-small-find-allies">Start small, find allies</h3>
<p>When I wanted to push a bigger initiative, say rearchitecting a service that had become a bottleneck, I never started with a grand plan. I started with a focused prototype. Something I could build in a week that demonstrated the idea was viable. Early wins create momentum. A working demo is worth ten slide decks.</p>
<p>Then I found allies. One person pushing for change is easy to dismiss. Three people aligned on the same problem? That&rsquo;s a movement. I would share early results with engineers I trusted, get their input, fold in their ideas. By the time the proposal reached a wider audience, it wasn&rsquo;t just my thing. It was our thing.</p>
<h3 id="the-traps-that-get-smart-engineers">The traps that get smart engineers</h3>
<p>Being right and being effective are two different skills. I&rsquo;ve watched brilliant engineers lose every argument because they treated disagreements as contests to win instead of problems to solve together. If you burn a relationship to win a technical debate, you won the battle and lost the war. That person won&rsquo;t support your next idea. Or the one after that.</p>
<p>Pick your battles. Not everything is worth fighting over. Some decisions are reversible and low-stakes, and spending political capital on them is a waste. Save your energy for the things that genuinely matter.</p>
<h3 id="this-is-the-job">This is the job</h3>
<p>I used to think leadership without authority was a stepping stone, something you did while waiting for the &ldquo;real&rdquo; leadership role. I was wrong. This is the real thing. The credibility you build, the communication habits you develop, the trust you earn: these are the foundations. If a title shows up later, great. You will be ready. If it doesn&rsquo;t, you&rsquo;re still the person who makes things happen. And every team needs that person more than they need another manager.</p>
]]></content:encoded></item><item><title>Building a Startup Engineering Team: Lessons from 2016</title><link>https://lawzava.com/blog/2016-12-05-building-effective-engineering-teams/</link><pubDate>Mon, 05 Dec 2016 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2016-12-05-building-effective-engineering-teams/</guid><description>What growing an engineering team at a mobility startup in 2016 taught me about hiring, trust, and the habits that actually matter.</description><content:encoded><![CDATA[<p>2016 is almost over, and it was a year of growing the engineering team I run at a mobility startup. We started it as a handful of people with a lot of ambition. We&rsquo;re ending it as seven, with a handful of services, a real deployment pipeline, and a much better understanding of what makes a small team work.</p>
<p>Some of that understanding came from reading. Most of it came from making mistakes and then paying attention. The short version: small teams with clear ownership, written context, and permission to disagree will outperform larger teams that rely on heroics and tribal knowledge. I learned this by getting it wrong first.</p>
<h3 id="the-hire-that-changed-how-i-think-about-hiring">The hire that changed how I think about hiring</h3>
<p>Early on I hired someone brilliant. Strong technical skills, great in interviews, impressive background. Within two months the team was slower than before. Not because the person was bad at code. Because they were bad at collaboration. They dismissed questions in reviews. They rewrote other people&rsquo;s work without discussion. They treated every technical decision as a competition.</p>
<p>I waited too long to address it. I kept telling myself the technical output justified the friction. It didn&rsquo;t. By the time we parted ways, I had lost one engineer who quit quietly and another who stopped contributing ideas in meetings.</p>
<p>The lesson was simple and painful: a good engineer who makes the people around them worse is a net negative. I don&rsquo;t care how fast you can ship if the team ships slower because of you.</p>
<p>After that,  <a href="/blog/2016-08-01-hiring-engineers-when-you-cant-compete-on-salary/"
   
   >every interview</a>
 included a pairing session where I watched how candidates communicated under ambiguity. Not whether they got the answer, but how they handled not knowing it.</p>
<h3 id="writing-things-down-saved-us">Writing things down saved us</h3>
<p>The single highest-leverage practice we adopted was writing things down. Architecture decisions, deployment procedures, incident postmortems, onboarding steps. All of it.</p>
<p>This wasn&rsquo;t natural for us. We were a small startup. Everybody sat in the same room. Writing felt like bureaucracy. Then someone went on holiday for a week and we realized that half of our operational knowledge lived in one person&rsquo;s head. That isn&rsquo;t a team. That&rsquo;s a single point of failure with extra chairs.</p>
<p>We started with a rule: if you make a decision that affects how something works, write a short paragraph explaining what you decided and why. Not a formal document. Not a template. Just the decision and the reasoning. We kept these in a shared repo.</p>
<p>Within a month, arguments about past decisions dropped to near zero. New engineers could read the context instead of guessing. And when we revisited old decisions, we could evaluate them against the original reasoning instead of relying on memory.</p>
<p>Clarity scales better than talent. I believe that more every month.</p>
<h3 id="small-and-scoped-beats-big-and-versatile">Small and scoped beats big and versatile</h3>
<p>We tried having one team that did everything. Backend, frontend, infrastructure, mobile API work. It worked at three people. At five, it started to crack. Not because people were less capable, but because context switching became the dominant activity. Everybody was halfway through everything and fully done with nothing.</p>
<p>We split into two groups. One owned the rider-facing product and mobile API. The other owned fleet operations, the backend services, and infrastructure. Each group had enough skills to ship without waiting for the other.</p>
<p>The improvement was immediate. Cycle time dropped. Ownership became clear. People stopped asking &ldquo;who is working on that?&rdquo; because the answer was obvious from the structure.</p>
<p>I don&rsquo;t think there&rsquo;s a magic team size. But I do think the moment coordination overhead starts eating into building time, you have outgrown your current structure. Pay attention to that signal.</p>
<h3 id="psychological-safety-isnt-a-slogan">Psychological safety isn&rsquo;t a slogan</h3>
<p>I used to think psychological safety meant being nice. It doesn&rsquo;t. It means people can say &ldquo;I don&rsquo;t understand this&rdquo; or &ldquo;I think this is the wrong approach&rdquo; without fear. That&rsquo;s harder to build than it sounds.</p>
<p>The most useful thing I did was start admitting my own mistakes publicly. When I made a bad architectural call, I said so in standup. When I didn&rsquo;t know the answer, I said that too. It felt uncomfortable at first. But within a few weeks, other people started doing the same thing. Problems surfaced earlier. Fixes came faster.</p>
<p>The other thing that mattered was how we handled incidents. We ran blameless postmortems for every significant outage. No finger pointing. Just: what happened, why did our systems allow it, and what do we change so it doesn&rsquo;t happen again. After a few rounds of this, people stopped hiding mistakes and started reporting them immediately. That alone probably saved us from two or three serious production incidents.</p>
<h3 id="conflict-is-data">Conflict is data</h3>
<p>In a small team, disagreements are inevitable. The question is whether you treat them as a threat or as useful information.</p>
<p>We had a multi-week argument about  <a href="/blog/2016-01-15-why-microservices-arent-always-the-answer/"
   
   >service boundaries</a>
. Two engineers had fundamentally different views on where to draw the lines. My instinct was to pick a side and move on. Instead, I made them write down their positions and trade-offs. Once everything was on paper, the disagreement was about specifics, not personalities, and we found a middle path that neither of them had originally proposed.</p>
<p>Now I encourage disagreement, as long as it stays about the work. When it gets personal, I address it immediately. Tolerating that even once sends a signal that undermines everything else.</p>
<h3 id="what-i-would-do-differently">What I would do differently</h3>
<p>I would hire for collaboration earlier and more deliberately. I would start writing decisions down from day one, not after the first crisis. I would split teams sooner. And I would be more honest with myself about when a personnel problem is actually a personnel problem, not a process problem.</p>
<p>None of this is revolutionary. But doing these things consistently, with discipline instead of heroics, made a bigger difference than any technical choice we made all year.</p>
]]></content:encoded></item><item><title>Technical Due Diligence: What Investors Actually Check</title><link>https://lawzava.com/blog/2016-10-31-the-cto-guide-to-technical-due-diligence/</link><pubDate>Mon, 31 Oct 2016 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2016-10-31-the-cto-guide-to-technical-due-diligence/</guid><description>Technical due diligence from both sides of the table: what investors check, how to prepare when you are evaluated, and what to look for when evaluating.</description><content:encoded><![CDATA[<p>I&rsquo;ve sat on both sides of the technical due diligence table. As a startup founder and later as an engineering lead at a mobility startup, I&rsquo;ve been the one sweating while investors poked through our codebase. As a consultant, I&rsquo;ve been the one poking. The view is different from each chair, and most advice about due diligence gets it wrong because the author has only sat in one.</p>
<p>Technical due diligence isn&rsquo;t a code audit. It&rsquo;s a risk conversation. Investors want to know if the technology can do what the pitch deck promises, whether the team can sustain it, and what breaks first under growth.</p>
<h3 id="what-investors-actually-care-about">What Investors Actually Care About</h3>
<p>Here is what doesn&rsquo;t matter: whether you use tabs or spaces, whether your code coverage is 80% or 90%, whether your variable names are poetic. I&rsquo;ve never seen a deal die over formatting.</p>
<p>Here is what does matter: Can the product do what the sales team is promising customers today? Can the team extend it to do what the business plan says it will do in eighteen months? What are the risks that could slow that down or stop it entirely?</p>
<p>That&rsquo;s really it. Everything else is a detail that feeds into one of those three questions.</p>
<p>Stage changes the lens considerably. When I went through diligence at the mobility startup, we were early. The codebase was scrappy. Nobody cared. The investors wanted to know if we understood our technical risks, if we could ship fast, and if the founding team had the judgment to make sound architecture decisions under pressure. At growth stage, the bar moves. Multiple engineers need to work in the codebase without stepping on each other. Deployments need to be repeatable. Security can&rsquo;t be an afterthought. But even then, perfection isn&rsquo;t the standard. The standard is: does this team know what they are doing, and are they making reasonable tradeoffs for their stage.</p>
<h3 id="preparing-when-youre-being-evaluated">Preparing When You&rsquo;re Being Evaluated</h3>
<p>I learned this the hard way. The first due diligence session I sat through from the company side was a scramble. An investor&rsquo;s technical advisor asked for an architecture diagram and we didn&rsquo;t have one. Not because the architecture was bad, but because nobody had written it down. We spent half the session whiteboarding basics instead of talking about the interesting parts of the system. That was a waste.</p>
<p>Prepare a one-pager: architecture overview showing major components and data flow, stack list with brief rationale for key choices, infrastructure and deployment notes, team structure, and how a feature moves from idea to production. You can write this in an afternoon and it will cover 80% of what reviewers ask for.</p>
<p>Surface your weaknesses before they surface them. Every startup has  <a href="/blog/2016-02-22-the-true-cost-of-technical-debt/"
   
   >technical debt</a>
. Every startup has areas where security is thinner than it should be. Every startup has a bus factor problem somewhere. If you say &ldquo;we know our payment integration is fragile and here is our plan to fix it in Q1,&rdquo; that builds trust. If the reviewer discovers it and you look surprised, that destroys trust. I&rsquo;ve seen founders try to hide known problems. It never works. Good technical reviewers will find them, and then you have two problems: the weakness itself and the fact that you tried to hide it.</p>
<p>Clean up the obvious things. Remove dead code. Make sure there are no credentials committed to the repo. Fix the broken tests that have been ignored for months. Reviewers will sample, not read every line, but first impressions carry weight. A repo with secrets in the commit history signals carelessness.</p>
<p>Get your IP house in order. Employee IP assignments should be signed. Third-party licenses should be compatible with your business model. If anyone copied code from a previous employer, deal with that now. This is one of the few areas where a due diligence finding can actually kill a deal.</p>
<h3 id="evaluating-someone-elses-technology">Evaluating Someone Else&rsquo;s Technology</h3>
<p>When I evaluate a company for an investor or acquirer, I follow a specific order that has served me well.</p>
<p><strong>Architecture first.</strong> I ask the CTO to walk me through the system on a whiteboard. Not slides. A whiteboard. I want to see if they can explain their own system clearly, where the boundaries are, how data flows, and where the external dependencies live. This conversation tells me more in thirty minutes than reading code for a week. If the CTO can&rsquo;t explain their architecture clearly, that&rsquo;s a serious signal regardless of what the code looks like.</p>
<p><strong>Team second.</strong> I talk to engineers individually. Not the CTO&rsquo;s hand-picked representatives, but a cross-section. I ask about the last production incident. How they handle disagreements about technical direction. What they would change if they had a week with no feature pressure. The answers reveal whether the team has real ownership or whether everything flows through one person&rsquo;s head. Bus factor is a real risk. If one departure would cripple the product, that needs to be in the report.</p>
<p><strong>Code third, and selectively.</strong> I look at authentication and payment code because security mistakes there are existential. I look at the core business logic that creates differentiation. I read a few recent commits to understand current engineering standards, and I look at some older code to see how legacy is handled. I&rsquo;m not grading style. I&rsquo;m looking for evidence of judgment.</p>
<p><strong>Operations and infrastructure.</strong> How often do they deploy? What happens when something breaks at 2 AM? Is there monitoring? Is there alerting? Are there runbooks, or is the incident response plan &ldquo;call the CTO&rdquo;? Manual deployments are a yellow flag. No monitoring is a red flag. At the mobility startup, we had invested in  <a href="/blog/2016-06-20-why-i-moved-our-infrastructure-to-terraform/"
   
   >Terraform</a>
 and automated deployments before our due diligence. That came up in the review and signaled operational maturity that investors valued beyond the code itself.</p>
<p><strong>Scalability in context.</strong> I don&rsquo;t care if the system can handle ten million users if the business plan targets ten thousand. I care about whether the team has thought about what changes at 10x their current scale. Honest answers like &ldquo;our database will need read replicas at 5x and we&rsquo;ll probably need to shard the activity feed at 20x&rdquo; are far more reassuring than &ldquo;we can scale infinitely because we&rsquo;re on AWS.&rdquo;</p>
<h3 id="the-signals-that-actually-change-outcomes">The Signals That Actually Change Outcomes</h3>
<p>Red flags, in my experience, cluster around people and process more than technology.</p>
<p>No version control. I&rsquo;ve seen this exactly once, and it ended the evaluation immediately. Foundational process failure.</p>
<p>The CTO can&rsquo;t explain the architecture. If the technical leader doesn&rsquo;t have a clear mental model of the system, nobody does.</p>
<p>Defensive answers. When I ask about a weakness and the response is deflection or minimization, I assume there are more problems I haven&rsquo;t found yet. Transparency is the single strongest signal of engineering maturity.</p>
<p>Key person dependency with no mitigation plan. One person holding all the context for a critical system isn&rsquo;t unusual at a startup. But if the team hasn&rsquo;t acknowledged it as a risk or started documenting, that tells me something about how they think about risk generally.</p>
<p>Yellow flags need context. Technical debt is normal. Outdated dependencies are common. A monolith is fine at early stage. Limited monitoring is fixable. A junior team can work if leadership is strong. These are concerns, not deal breakers. The question is always: does the team know about it, and do they have a credible plan.</p>
<h3 id="writing-a-report-thats-actually-useful">Writing a Report That&rsquo;s Actually Useful</h3>
<p>The worst due diligence reports I&rsquo;ve read are laundry lists of findings with no prioritization. Twelve pages of &ldquo;this function lacks error handling&rdquo; tells the investor nothing about whether to write the check.</p>
<p>A useful report answers three questions: First, can the technology deliver on the current business promises? Second, what are the top three risks that could slow or stop progress? Third, what investment in time and money is needed to mitigate those risks? Everything else is appendix material.</p>
<p>Be balanced. If the team built something impressive given their constraints, say so. If the architecture is sound but the deployment process is fragile, say that too. Decision makers need to weigh risk against momentum, and a report that only lists problems is as useless as one that only lists strengths.</p>
<h3 id="honesty-wins-on-both-sides">Honesty Wins on Both Sides</h3>
<p>The best outcomes I&rsquo;ve seen, on both sides, come from honesty. As a founder, lead with what you know is weak and what you plan to do about it. As an evaluator, focus on architecture, team, and the gap between the plan and reality. The code is the least interesting part.</p>
]]></content:encoded></item><item><title>Building a Security-First Engineering Culture</title><link>https://lawzava.com/blog/2016-10-03-building-security-first-engineering-culture/</link><pubDate>Mon, 03 Oct 2016 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2016-10-03-building-security-first-engineering-culture/</guid><description>Security culture is habits leadership enforces: no secrets in code, a security question on every PR, least privilege, patch deadlines, and champions.</description><content:encoded><![CDATA[<p>Stop treating security as a gate at the end of the pipeline. Embed it into how your team thinks, designs, and ships. This requires specific policies, visible leadership, and the willingness to slow down a release when the answer to &ldquo;what happens if this gets compromised?&rdquo; is &ldquo;I don&rsquo;t know.&rdquo;</p>
<h3 id="security-culture-isnt-a-project">Security culture isn&rsquo;t a project</h3>
<p>I&rsquo;ve watched teams try to buy their way into security. They purchase a scanner, run a penetration test once a year, and call it done. Then a junior engineer hardcodes an API key, pushes it to a public repo, and suddenly the scanner doesn&rsquo;t matter.</p>
<p>Security culture is the habit that prevents that push in the first place.</p>
<p>One team I worked with handled sensitive user data, including payment information. There&rsquo;s no version of &ldquo;we&rsquo;ll fix it later&rdquo; that regulators or users will accept. Security had to be foundational from the start, not bolted on after the first scare.</p>
<h3 id="what-cyber-defense-exercises-taught-me">What cyber-defense exercises taught me</h3>
<p>A principle I carry from cyber-defense exercises: the biggest lesson was organizational. The teams that performed well were the ones where every person understood the threat model and acted on it without waiting for permission. Tooling mattered less than that.</p>
<p>That stuck with me. Security at scale is a culture problem first.</p>
<h3 id="the-policies-i-actually-enforce">The policies I actually enforce</h3>
<p>Theory is cheap. Here are the specific rules I&rsquo;ve implemented across teams.</p>
<p><strong>No secrets in code. Ever.</strong> We use environment variables and a secrets manager. The CI pipeline fails if it detects anything that looks like a key or credential in the codebase. This is automated, not optional, and not overridable without a written justification that I personally review.</p>
<p><strong>Every pull request gets a security question.</strong> Not a full threat model. Just one question: &ldquo;What is the worst thing that happens if this code is exploited?&rdquo; If the author can&rsquo;t answer it, the PR doesn&rsquo;t merge. This forces engineers to think about attack surface as part of their daily work, not as a separate exercise.</p>
<p><strong>Least privilege by default.</strong> New services start with zero permissions and add only what they need. New employees get read access to the repositories they work on and nothing else. Escalation requires a request and a reason. I review access quarterly and revoke anything that isn&rsquo;t actively justified.</p>
<p><strong>Dependency updates aren&rsquo;t optional.</strong> We track dependencies weekly. Known vulnerabilities get patched within 48 hours for critical severity, one week for high. This is a policy, not a suggestion. I&rsquo;ve delayed feature work to meet these windows.</p>
<p><strong>Incident response is rehearsed.</strong> We run a  <a href="/blog/2016-05-23-security-incident-response-for-startups/"
   
   >tabletop exercise</a>
 every quarter. Not a checkbox drill. A real scenario where I throw a curveball halfway through to see how the team adapts. The ones who have done this three or four times respond to real incidents with calm instead of panic.</p>
<h3 id="the-hard-part-is-consistency">The hard part is consistency</h3>
<p>Any team can write a security policy document. The hard part is enforcing it on the days when you&rsquo;re behind on a deadline and the shortcut is right there.</p>
<p>I&rsquo;ve blocked releases. I&rsquo;ve told product managers that a feature would ship a week late because the authentication flow wasn&rsquo;t reviewed. Those conversations are uncomfortable. They are also the moments that define whether your culture is real or performative.</p>
<p>Engineers watch what leadership does, not what leadership says. If the CTO merges a PR that skips the security review because &ldquo;we need to ship,&rdquo; every engineer on the team learns that security is negotiable. It takes one exception to undo months of habit building.</p>
<h3 id="security-champions-scale-your-coverage">Security champions scale your coverage</h3>
<p>I can&rsquo;t review every line of code. No security team can. The answer isn&rsquo;t to hire more security people. It&rsquo;s to make every engineer a little bit dangerous.</p>
<p>The model I like: one engineer on each team acts as a security champion. Not a full-time role. Maybe 10-15% of their time. They attend a monthly session to review recent vulnerabilities in the stack, discuss attack patterns relevant to the business, and update the threat model.</p>
<p>These champions become the first line of defense in code reviews. They catch the obvious issues before they reach me, and they raise the questions that nobody else on the team would think to ask.</p>
<p>The key is that being a security champion is respected. It counts in performance reviews. It isn&rsquo;t extra work on top of their real job. It&rsquo;s part of their real job.</p>
<h3 id="make-the-secure-path-the-easy-path">Make the secure path the easy path</h3>
<p>If doing the right thing is harder than doing the wrong thing, people will do the wrong thing. That&rsquo;s ordinary human behavior.</p>
<p>We built internal libraries that handle authentication, input validation, and encryption correctly. When an engineer needs to call an external API, they use our wrapper that handles TLS verification, credential injection, and audit logging automatically. The secure path is also the path with less code to write.</p>
<p>We templated our infrastructure so that new services deploy with network isolation, encrypted storage, and logging enabled by default. An engineer has to go out of their way to deploy something insecure. That friction is intentional.</p>
<h3 id="incidents-are-data-not-blame">Incidents are data, not blame</h3>
<p>When something goes wrong, and it will, the response determines whether your culture strengthens or collapses.</p>
<p>We run  <a href="/blog/2016-07-18-building-resilient-systems-lessons-from-production-failures/"
   
   >blameless postmortems</a>
, because blame destroys information flow. If engineers fear punishment, they hide mistakes. Hidden mistakes compound. The breach that takes down a company is rarely the first failure. It&rsquo;s the tenth failure that nobody reported because the first person who reported one got burned.</p>
<p>Every postmortem produces exactly two outputs: a timeline of what happened, and a list of specific changes to prevent recurrence. Not &ldquo;be more careful.&rdquo; Specific changes. A new automated check. A revised permission. A policy update.</p>
<h3 id="security-is-a-daily-decision">Security is a daily decision</h3>
<p>Security culture is discipline. It&rsquo;s the same decision made correctly a thousand times, even when it&rsquo;s inconvenient. Especially when it&rsquo;s inconvenient.</p>
<p>You build it by enforcing the standards you set, including on yourself.</p>
]]></content:encoded></item><item><title>Hiring Engineers When You Can't Compete on Salary</title><link>https://lawzava.com/blog/2016-08-01-hiring-engineers-when-you-cant-compete-on-salary/</link><pubDate>Mon, 01 Aug 2016 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2016-08-01-hiring-engineers-when-you-cant-compete-on-salary/</guid><description>You can&amp;amp;rsquo;t outpay Big Tech. How I hired strong engineers at a mobility startup in 2016 by selling impact, speed, real autonomy, and honesty about pay.</description><content:encoded><![CDATA[<p><strong>Stop trying to match Big Tech comp. You will lose that fight every time.</strong> Sell what they structurally can&rsquo;t offer: real ownership, fast feedback loops, and the chance to build something from scratch with a small team that actually ships.</p>
<p>I&rsquo;ve been hiring for the engineering team at a mobility startup. Shared mobility is still early. The concept is unproven, the funding is modest, and the salary bands reflect that reality.</p>
<p>Every good candidate I talk to has at least one offer from a company that can pay 30-50% more than I can. Some of them have offers with stock grants that look like a second salary. I can&rsquo;t match that. I learned early to stop pretending I could.</p>
<p>But we&rsquo;ve still managed to hire well. Here is what actually worked.</p>
<h3 id="be-honest-about-money-on-the-first-call">Be honest about money on the first call</h3>
<p>Nothing kills trust faster than dancing around compensation. I bring it up in the first conversation. &ldquo;Here is what we can pay. Here is the equity. Here is what the equity is worth today, which isn&rsquo;t much, and here is what it could be worth if we execute.&rdquo; No hand-waving. No &ldquo;competitive salary&rdquo; language that means nothing.</p>
<p>Most engineers respect directness. The ones who are only optimizing for cash will self-select out, and that&rsquo;s fine. The ones who stay in the conversation are evaluating the whole picture, and I want to talk to those people.</p>
<h3 id="show-the-work-not-a-pitch-deck">Show the work, not a pitch deck</h3>
<p>At the mobility startup I started doing something that felt risky at first: I gave candidates access to our actual codebase during the interview process. Not all of it, but enough to see how we build. Our code reviews. Our deployment pipeline. Our monitoring setup. The real thing, not a sanitized version.</p>
<p>This did two things. First, it filtered for engineers who cared about craft. If someone looked at our setup and got excited about the problems, that told me more than any whiteboard exercise. Second, it made the job tangible. They weren&rsquo;t imagining what the work might be. They could see it.</p>
<p>One engineer told me he accepted our offer over a much higher one because, and I&rsquo;m quoting here, &ldquo;your codebase looked like people gave a damn.&rdquo; That stuck with me.</p>
<h3 id="sell-speed-not-startup-culture">Sell speed, not &ldquo;startup culture&rdquo;</h3>
<p>I never use the phrase startup culture in interviews. It means nothing. What I do talk about is speed. At the mobility startup, an engineer can go from idea to  <a href="/blog/2016-06-06-continuous-deployment-without-chaos/"
   
   >production in a day</a>
. Not because we skip process, but because our process is light and the team is small enough that decisions happen fast.</p>
<p>I tell candidates about specific examples. Last month one of our engineers noticed a pattern in user drop-offs, proposed a fix, built it, shipped it, and we saw the numbers move within 48 hours. At a big company that same change goes through three teams, two planning cycles, and a prioritization meeting. Maybe it ships in a quarter.</p>
<p>Speed isn&rsquo;t about working more hours. It&rsquo;s about fewer layers between you and the outcome. That&rsquo;s genuinely compelling to a certain kind of engineer, and those are exactly the engineers I want.</p>
<h3 id="autonomy-has-to-be-real">Autonomy has to be real</h3>
<p>Every startup claims to offer autonomy. Most of them mean &ldquo;we don&rsquo;t have enough managers yet.&rdquo; That isn&rsquo;t autonomy. That&rsquo;s chaos.</p>
<p>Real autonomy means an engineer picks the approach, owns the tradeoffs, and lives with the consequences. At the mobility startup, our engineers choose their tools. They design their own systems. They are  <a href="/blog/2016-03-10-building-devops-culture-from-scratch/"
   
   >on call for what they build</a>
, which means they build things that don&rsquo;t break at 3 AM.</p>
<p>When I interview, I&rsquo;m specific about this. I describe a recent technical decision and who made it. Not me. The engineer closest to the problem. If a candidate has been stuck in an environment where every architecture choice needs three sign-offs, that story lands hard.</p>
<h3 id="hire-for-the-team-not-the-role">Hire for the team, not the role</h3>
<p>I can&rsquo;t afford specialists. What I can afford is sharp generalists who get better at everything by doing everything. At our size, an engineer might write a service, set up the monitoring, debug a production issue, and review someone else&rsquo;s database migration in the same week.</p>
<p>Some people hate that. Others thrive on it. I screen for the second group by asking about the last time they worked outside their comfort zone and what they learned. The answers tell me whether someone wants range or just wants to go deeper on one thing. Neither is wrong, but only one fits where we are right now.</p>
<h3 id="the-peer-interview-matters-most">The peer interview matters most</h3>
<p>The single best recruiting tool I have is my existing team. When a candidate meets the people they would work with every day and those people are sharp, thoughtful, and honest about the hard parts of the job, that&rsquo;s more persuasive than anything I can say.</p>
<p>I make sure candidates spend real time with the team. Not a panel interview. A working session or a design conversation. Something that feels like the actual job. If they click with the team, the salary gap shrinks in their mental math. If they don&rsquo;t click, no amount of money would have made it work anyway.</p>
<h3 id="what-i-got-wrong-early-on">What I got wrong early on</h3>
<p>I wasted time in the beginning trying to compete on perks. Free lunches, flexible hours, the usual startup bingo card. None of it moved the needle. Engineers saw through it immediately.</p>
<p>What moved the needle was being specific and being honest. Specific about the problems we&rsquo;re solving, the systems we&rsquo;re building, and where we&rsquo;re going. Honest about what is hard, what is broken, and what we haven&rsquo;t figured out yet.</p>
<p>The best hires we&rsquo;ve made came from conversations where I said something like, &ldquo;Our deployment process isn&rsquo;t great yet and you would own fixing it.&rdquo; That kind of honesty attracts builders. Glossy pitches attract people who want to be at a company that sounds good, not people who want to do the work.</p>
<h3 id="you-will-lose-candidates-to-money">You will lose candidates to money</h3>
<p>You will lose candidates to higher offers. It will happen regularly. Some of those candidates would have been great, and it will sting.</p>
<p>But the engineers who join you despite the lower salary are making a deliberate choice. They are choosing the work, the team, and the trajectory over the paycheck. From what I&rsquo;ve seen, those people build better things and stay longer. Not always. But often enough that I&rsquo;ve stopped trying to win the compensation game and started focusing on winning the &ldquo;is this work worth doing&rdquo; game instead.</p>
<p>That&rsquo;s a game a startup can actually win.</p>
]]></content:encoded></item><item><title>Building a DevOps Culture from Scratch</title><link>https://lawzava.com/blog/2016-03-10-building-devops-culture-from-scratch/</link><pubDate>Thu, 10 Mar 2016 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2016-03-10-building-devops-culture-from-scratch/</guid><description>Hiring a DevOps engineer won&amp;amp;rsquo;t end the dev vs ops fight. Put developers on the pager, pilot with one team, and fix incentives before tools.</description><content:encoded><![CDATA[<p>I keep seeing the same pattern. A company posts a job listing for a &ldquo;DevOps engineer,&rdquo; hires someone smart, hands them a Jira board, and waits for magic. Six months later the deploy pipeline is marginally better but the teams still don&rsquo;t trust each other. The hire burns out. Everyone blames the tools.</p>
<p>DevOps isn&rsquo;t a role. It isn&rsquo;t Jenkins. It isn&rsquo;t even a set of practices you can copy from a blog post. It&rsquo;s a cultural shift where the people who build software and the people who run it share the same goals, the same pain, and the same wins. Fix the incentives that make dev and ops fight each other first. Tools come second.</p>
<p>I learned this the hard way at a mobility startup.</p>
<h2 id="what-happened-at-the-mobility-startup">What Happened at the Mobility Startup</h2>
<p>When I joined, we had a classic split. Three backend engineers shipping features as fast as possible. One ops person, call him Max, who kept the lights on. The engineers would push code on Friday afternoon, Max would get paged at 2 a.m. Saturday, and Monday morning would start with a blame session disguised as a standup.</p>
<p>Max was good at his job. The engineers were good at theirs. The system between them was broken.</p>
<p>The fix wasn&rsquo;t a tool. It was a conversation. I put the entire team in a room and said: starting next week, the person who ships the code carries the pager for it. Not forever, just for the first 48 hours after deploy. If your code wakes someone up, that someone is you.</p>
<p>The reaction was roughly what you would expect. The engineers hated it. Max loved it. But within two weeks, something shifted. Deploys got smaller. Engineers started writing  <a href="/blog/2016-02-08-docker-in-production-lessons-from-running-containers-at-scale/"
   
   >health checks</a>
 without being asked. Someone added a runbook for the payment service, unprompted. The Friday afternoon deploys stopped entirely.</p>
<p>Nobody told them to do any of that. The incentive structure changed, and the behavior followed.</p>
<h2 id="start-with-shared-pain-not-shared-tools">Start With Shared Pain, Not Shared Tools</h2>
<p>That experience taught me something I keep coming back to: if you want DevOps culture, start by making everyone feel the consequences of their decisions.</p>
<p>Developers who never see production alerts write code that&rsquo;s hard to operate. Ops people who never sit in planning meetings treat every deploy as a threat. The gap is empathy.</p>
<p>The cheapest thing you can do is cross-pollinate. Have a developer shadow on-call for a week. Have the ops person sit in sprint planning. Run a postmortem together after the next incident and focus on the system, not the person. I&rsquo;ve never seen a team do this and not come out with a better understanding of each other.</p>
<h2 id="pick-a-pilot-team-and-let-them-own-it">Pick a Pilot Team and Let Them Own It</h2>
<p>Don&rsquo;t try to transform the whole company at once. Pick one team. Give them ownership of their deploy pipeline and their on-call. Let them figure out what works. Measure what happens.</p>
<p>At the mobility startup, that pilot was the team running the vehicle availability service. Small blast radius, clear metrics, leadership willing to experiment. They went from deploying once a week to deploying daily within a month. Not because I told them to, but because shorter cycles meant smaller changes meant fewer pages.</p>
<p>The rest of the engineering org watched this happen. Nobody had to sell them on DevOps after that. They just asked when they could start.</p>
<h2 id="the-technical-stuff-matters-but-it-isnt-first">The Technical Stuff Matters, But It Isn&rsquo;t First</h2>
<p>Once the culture is moving, you need the technical foundations to support it. Infrastructure as code so environments are reproducible. A CI pipeline so every commit gets tested. Monitoring that answers &ldquo;is this thing working&rdquo; without requiring tribal knowledge.</p>
<p>In 2016, that means Ansible or Chef for config management, Jenkins or CircleCI for builds, and something like the ELK stack or Graphite for observability. The specific tools matter less than the principle: everything should be automated, version-controlled, and visible to the whole team.</p>
<p>I&rsquo;ve seen teams with perfect pipelines and terrible culture. The pipeline doesn&rsquo;t fix trust. It just makes deploys faster. If the team still throws code over the wall and blames each other when it breaks, a faster pipeline just accelerates the dysfunction.</p>
<h2 id="traps-ive-walked-into">Traps I&rsquo;ve Walked Into</h2>
<p><strong>The hero trap.</strong> At the mobility startup, Max was the hero. He could fix anything at 3 a.m. That felt like a strength until he took a week off and nobody knew how to restart the payment gateway. Heroes are a single point of failure wearing a cape. Spread the knowledge.</p>
<p><strong>Tool obsession.</strong> We spent two weeks evaluating orchestration platforms when the real problem was that nobody knew what was running in production. A shared spreadsheet would have been more useful than Kubernetes at that point. Solve the problem you actually have.</p>
<p><strong>Burnout disguised as ownership.</strong> If you give developers pager duty without reducing their feature load, you aren&rsquo;t building DevOps culture. You&rsquo;re just distributing the suffering more evenly. Shared responsibility means shared capacity planning too.</p>
<h2 id="its-a-slow-game">It&rsquo;s a Slow Game</h2>
<p>DevOps culture doesn&rsquo;t happen in a quarter. At the mobility startup, it took about six months before the dev-vs-ops tension actually went away. The team went from monthly releases with weekend war rooms to daily deploys that nobody thought twice about. But it was gradual, messy, and full of setbacks.</p>
<p>The wins compound though. Smaller deploys mean fewer incidents. Fewer incidents mean less firefighting. Less firefighting means more time for the work that actually matters. Once that flywheel starts turning, it&rsquo;s hard to stop.</p>
<p>If you&rsquo;re starting from zero, that&rsquo;s fine. Most teams are. Start with the incentives, not the tools. Make people feel what production actually looks like. Pick a small team and let them prove the model. The culture will follow the work.</p>
]]></content:encoded></item><item><title>The True Cost of Technical Debt, and How to Measure It</title><link>https://lawzava.com/blog/2016-02-22-the-true-cost-of-technical-debt/</link><pubDate>Mon, 22 Feb 2016 00:00:00 +0000</pubDate><guid>https://lawzava.com/blog/2016-02-22-the-true-cost-of-technical-debt/</guid><description>Tech debt gets ignored until you price it. Track cycle-time drift, incident attribution, and engineer-days lost, then pitch paydown as a business tradeoff.</description><content:encoded><![CDATA[<p>Every engineering team I&rsquo;ve worked with complains about technical debt. At a mobility startup, on client projects in my consulting years, at every company I&rsquo;ve been part of. The conversations sound the same. &ldquo;We need to refactor the billing module.&rdquo; &ldquo;The test suite is broken.&rdquo; &ldquo;Nobody understands how the queue system works anymore.&rdquo;</p>
<p>And then nothing happens. Or worse, leadership approves a vague &ldquo;cleanup sprint&rdquo; that accomplishes nothing measurable, and next quarter the same complaints come back louder.</p>
<p>The debt isn&rsquo;t the problem. The inability to quantify it is.</p>
<p>Ward Cunningham coined the metaphor in 1992, and he chose finance deliberately. Debt has a principal and an interest rate. You can calculate whether it&rsquo;s worth carrying or paying down. But most engineering teams skip the math entirely. They treat tech debt like a feeling: something you gripe about in retros but never attach a number to.</p>
<p>I&rsquo;ve been guilty of this. Early at the mobility startup, I&rsquo;d walk into planning meetings and say things like &ldquo;the data layer is fragile&rdquo; or &ldquo;deploys are getting riskier.&rdquo; True statements. Completely useless for getting resources allocated. The product team heard &ldquo;engineers want to rewrite things instead of shipping features.&rdquo; Which, from their perspective, was a reasonable interpretation.</p>
<p>What changed was when I started tracking three things. First, how long the same type of task took six months ago versus now. Second, how many incidents traced back to the same modules. Third, how much engineer time went into those incidents, counting the fix, the investigation, the communication, and the customer support follow-up.</p>
<p>The numbers were ugly. A task category that averaged two days in mid-2015 was averaging five days by early 2016. Same complexity, same team size. The difference was the accumulated mess in  <a href="/blog/2016-01-15-why-microservices-arent-always-the-answer/"
   
   >three interconnected services</a>
. One module was responsible for four incidents in a single quarter, each burning two to three engineer-days when you counted everything.</p>
<p>Suddenly I wasn&rsquo;t saying &ldquo;the billing module is fragile.&rdquo; I was saying &ldquo;this module cost us roughly ten engineer-days last quarter in incidents alone, and it&rsquo;s adding three days to every feature that touches payments.&rdquo; That&rsquo;s a number a CEO can reason about. That&rsquo;s a number you can weigh against a feature roadmap.</p>
<p>The fix doesn&rsquo;t need to be dramatic. One team I worked with allocated 15% of sprint capacity to debt work. Not negotiable, not borrowable. Small, targeted improvements. Tighten a function while you&rsquo;re already in the file. Add the missing integration test before you move on. Replace the brittle dependency before it causes another 2am page.</p>
<p>Compound interest works both ways. Small consistent payments on debt keep the codebase healthy enough to move fast. Skip those payments and the interest compounds until a &ldquo;small change&rdquo; takes a week and every deploy is a coin flip.</p>
<p>The teams that handle debt well can tell you exactly what their debt costs. They measure cycle time trends. They track incident attribution. They know which modules are hotspots and what those hotspots cost per quarter in real engineer hours.</p>
<p>If you can&rsquo;t put a number on your tech debt, you can&rsquo;t make a rational decision about it. And if you can&rsquo;t make a rational decision, you&rsquo;ll either ignore it until it cripples you or waste time on cleanup that doesn&rsquo;t matter.</p>
<p>Measure the pain. Do the math. Present the tradeoff in terms the business already understands. That&rsquo;s the whole strategy. Everything else is just complaining.</p>
]]></content:encoded></item></channel></rss>