# Parin Katariya > Engineering essays and notes by Parin Katariya on distributed systems, AI systems, system design, reliability, technical strategy, engineering leadership, and career craft. This file is generated during the site build from post front matter. URLs point to canonical HTML articles; fetch each article URL for full text. ## Core Pages - [Home](https://parin.work/): Archive landing page with featured writing and category lanes. - [Timeline](https://parin.work/timeline.html): Chronological archive of dated posts. - [Sitemap](https://parin.work/sitemap.xml): XML sitemap for generated pages. ## Featured Posts - [The Principal Engineer as Editor](https://parin.work/principal-engineer-as-editor.html): A capstone essay on editing problems, interfaces, plans, meetings, and narratives into sharper decisions. (2026-06-29) - [Technical Strategy Is a Portfolio, Not a Roadmap](https://parin.work/technical-strategy-is-a-portfolio-not-a-roadmap.html): A portfolio frame for balancing bets, foundations, migrations, learning probes, and kill criteria. (2026-06-27) - [Big Projects Need a Rhythm of Evidence](https://parin.work/big-projects-need-a-rhythm-of-evidence.html): A delivery model that measures whether risk is shrinking instead of whether activity is increasing. (2026-06-20) - [Software Engineering Is Programming With Time as a Dependency](https://parin.work/software-engineering-is-programming-with-time-as-dependency.html): A principal-engineer frame for code that must survive future people, traffic, policies, and failures. (2026-06-09) - [Derived Data Needs a Product Owner](https://parin.work/derived-data-needs-a-product-owner.html): A review frame for materialized truth, freshness promises, and repair paths. (2026-06-01) - [Transactions Are UX Guarantees, Not Database Features](https://parin.work/transactions-are-ux-guarantees-not-database-features.html): How to review transaction boundaries by the user-visible promise they protect. (2026-05-27) - [The Data Model Is a Political Boundary](https://parin.work/data-model-is-a-political-boundary.html): Why data models decide ownership, meaning, and which future arguments become expensive. (2026-05-23) - [Agentic Systems Are Distributed Systems With an Unreliable Planner](https://parin.work/agentic-systems-series.html): A 33-part engineering series on distributed systems, agentic systems, harness engineering, and production harness agents. (2026-05-22) - [The Personal Operating System of a Principal Engineer](https://parin.work/personal-operating-system-principal-engineer.html): A practical operating model for attention, energy, writing, relationships, and technical leverage. (2026-03-28) - [Evaluation Is the Product in AI Systems](https://parin.work/evaluation-is-the-product-in-ai-systems.html): Why durable AI products are built around eval loops, not model launch announcements. (2026-01-31) - [Agentic Coding Changes the Bottleneck, Not the Responsibility](https://parin.work/agentic-coding-changes-bottleneck.html): Why AI-assisted development moves senior responsibility toward framing, review, and integration. (2025-12-20) - [The Architecture Review That Actually Works](https://parin.work/architecture-review-that-actually-works.html): A review format that tests assumptions, failure modes, and operating ownership instead of style. (2025-09-27) - [Idempotency Is a Product Requirement](https://parin.work/idempotency-is-a-product-requirement.html): Why safe retries depend on product semantics, user-visible effects, and organizational ownership. (2025-07-05) - [The Principal Engineer's Real Job Is Reducing Ambiguity](https://parin.work/principal-engineer-reduces-ambiguity.html): A field guide to turning vague technical anxiety into decisions, owners, and reversible next steps. (2025-05-24) - [The Second Half of Your Engineering Career](https://parin.work/second-half-of-your-engineering-career.html): How to design a long technical career around energy, renewal, craft, and changing forms of ambition. (2025-04-26) - [The Testing Pyramid Is a Lie](https://parin.work/testing-pyramid-is-a-lie.html): A risk-weighted testing model that invests in the regressions most worth preventing. (2025-03-01) - [How to Think in Tradeoffs](https://parin.work/how-to-think-in-tradeoffs.html): A decision-journal model for making engineering tradeoffs explicit, reviewable, and easier to communicate. (2025-01-18) - [Design Docs Are Coordination Tools](https://parin.work/design-docs-are-coordination-tools.html): Why the real value of a design doc is shared assumptions, explicit tradeoffs, and a durable decision path. (2024-11-23) - [Why Fail Fast Falls Apart in Money-Moving Systems](https://parin.work/fail-fast-falls-apart-in-money-moving-systems.html): Why financial workflows need cautious failure semantics, reconciliation, and slower decisions than ordinary services. (2024-10-05) - [The (Web) Reading Ruler](https://parin.work/Reading%20Ruler.html): A browser userscript for saving and restoring a custom reading ruler across pages. (2024-10-01) - [System Design](https://parin.work/system-design.html): Scalability, load balancing, sharding, caching, and other system design fundamentals. (2024-09-28) - [From Hustle to Heal: Why I Quit My High-Paying Job to Take a Break and Reclaim My Life](https://parin.work/Taking%20a%20break.html): A candid, funny, deeply Indian essay about quitting a high-paying job to recover health and meaning. (2024-09-23) ## Agentic Systems - [Agentic Systems Are Distributed Systems With an Unreliable Planner](https://parin.work/agentic-systems-series.html): A 33-part engineering series on distributed systems, agentic systems, harness engineering, and production harness agents. (2026-05-22) - [Ambiguous Outcomes Are the Core Distributed Systems Problem](https://parin.work/ambiguous-outcomes-distributed-systems.html): The hard state in distributed systems is not failure, but not knowing whether the effect already happened. (2026-05-21) - [Idempotency Is Durable Intent](https://parin.work/idempotency-is-durable-intent.html): Idempotency works when it preserves a decision across retries, crashes, and uncertain outcomes. (2026-05-20) - [Reconciliation Is Where Correctness Becomes Real](https://parin.work/reconciliation-makes-correctness-real.html): A system is not correct because it accepted a command; it becomes correct when it can compare intent with reality and repair the gap. (2026-05-19) - [Leases, Ownership, and Fencing](https://parin.work/leases-ownership-and-fencing.html): A lease only says who probably owns work right now; fencing is what stops stale owners from writing after they lose it. (2026-05-18) - [Backpressure Is a Product Boundary](https://parin.work/backpressure-is-a-product-boundary.html): Backpressure is where a system tells the truth about what it can accept, delay, prioritize, or refuse. (2026-05-17) - [Queues Are Not Reliability](https://parin.work/queues-are-not-reliability.html): A queue can preserve work and decouple timing, but it does not make processing correct by itself. (2026-05-16) - [Deadlines Beat Timeouts](https://parin.work/deadlines-beat-timeouts.html): Timeouts protect individual calls; deadlines protect the whole promise the system made. (2026-05-15) - [Replay Changes Everything](https://parin.work/replay-changes-everything.html): Replay turns production failures from arguments about logs into experiments against recorded inputs, decisions, and effects. (2026-05-14) - [Sagas Without Fantasy Rollbacks](https://parin.work/sagas-without-fantasy-rollbacks.html): A serious saga design treats compensation as forward recovery, not a pretend undo button. (2026-05-13) - [Control Plane vs Data Plane Failures](https://parin.work/control-plane-data-plane-failures.html): Separating control plane and data plane behavior keeps management failures from casually breaking committed work. (2026-05-12) - [Agents Are Unreliable Planners Attached to Real Tools](https://parin.work/unreliable-planners-real-tools.html): A production frame for treating agent plans as tentative while tool effects stay real. (2026-05-11) - [Tools Are Capabilities, Not Functions](https://parin.work/tools-are-capabilities-not-functions.html): A practical model for designing agent tools around authority, scope, and side effects. (2026-05-10) - [The Agent Action Lifecycle](https://parin.work/agent-action-lifecycle.html): A concrete lifecycle for turning uncertain agent intent into bounded, verified effects. (2026-05-09) - [Context Provenance Matters More Than Prompting](https://parin.work/context-provenance-over-prompting.html): Why agent reliability depends on knowing where context came from, when it was captured, and what it is allowed to justify. (2026-05-08) - [Agent State Should Live Outside the Model](https://parin.work/agent-state-outside-the-model.html): A practical argument for storing task state, approvals, actions, and verification outside the conversation window. (2026-05-07) - [Stop Conditions Are Safety Features](https://parin.work/stop-conditions-are-safety-features.html): How explicit stop conditions keep agent systems from turning uncertainty into expanding side effects. (2026-05-06) - [Agents Need Read/Write Separation](https://parin.work/agents-need-read-write-separation.html): Why useful agent autonomy starts by separating observation from mutation. (2026-05-05) - [Human Approval Is a Protocol](https://parin.work/human-approval-is-a-protocol.html): How to make human approval precise enough to govern agent actions instead of decorating them. (2026-05-04) - [Agent Observability Should Follow Decisions, Not Tokens](https://parin.work/agent-observability-follows-decisions.html): A decision-centered observability model for debugging agent behavior after real side effects. (2026-05-03) - [The Model Should Not Be the Policy Engine](https://parin.work/model-should-not-be-policy-engine.html): Why agent systems should keep policy enforcement outside the model even when the model helps interpret intent. (2026-05-01) - [A Harness Is a Controlled World](https://parin.work/harness-is-a-controlled-world.html): Agent harnesses earn trust by controlling the world around the model, not by asking the model to explain itself. (2026-04-30) - [Grade State, Not Speech](https://parin.work/grade-state-not-speech.html): Agent quality should be judged by the state it leaves behind, because fluent explanations can hide unsafe actions. (2026-04-29) - [Replay Is the Difference Between Debugging and Guessing](https://parin.work/replay-is-debugging.html): Replay turns failed agent runs into inspectable infrastructure events instead of arguments about prompts. (2026-04-28) - [Test the Refusal Path](https://parin.work/test-the-refusal-path.html): Safe agent systems need tested refusal paths, because declining action is a production behavior with side effects. (2026-04-27) - [Failure Injection for Agents](https://parin.work/failure-injection-for-agents.html): Agent harnesses should inject ordinary tool and state failures so teams can verify behavior before production does it for them. (2026-04-26) - [Regression Suites Should Be Built From Bad Runs](https://parin.work/regression-suites-from-bad-runs.html): The most valuable agent regression cases come from real failures converted into replayable behavior contracts. (2026-04-25) - [Golden Behaviors Beat Golden Text](https://parin.work/golden-behaviors-beat-golden-text.html): Agent tests should preserve required behavior instead of freezing exact prose that can pass while actions regress. (2026-04-24) - [Harnesses Must Catch Overreach](https://parin.work/harnesses-must-catch-overreach.html): Agent harnesses need explicit overreach checks because the most dangerous failures often look like extra helpfulness. (2026-04-23) - [Watcher Agents](https://parin.work/watcher-agents.html): Watcher agents are read-only harness components that notice unsafe drift and propose interventions without taking ownership of the work. (2026-04-22) - [Adversary Agents](https://parin.work/adversary-agents.html): Adversary agents should create hostile fixtures and boundary tests, not become theatrical opponents in production workflows. (2026-04-21) - [Auditor Agents](https://parin.work/auditor-agents.html): Auditor agents review decision traces against policy and state, producing evidence-backed findings instead of vague confidence. (2026-04-20) - [Replay Agents](https://parin.work/replay-agents.html): Replay agents reconstruct failed runs from durable traces so engineers can debug causes instead of arguing from summaries. (2026-04-19) - [Blast-Radius Agents](https://parin.work/blast-radius-agents.html): Blast-radius agents decompose risky agent work into reviewable units without deciding the organization's appetite for risk. (2026-04-18) ## Engineering - [A Rule Without a Repair Path Becomes Theater](https://parin.work/rule-without-repair-path-becomes-theater.html): Why standards need rationale, automation, migration help, exception paths, and sunset rules. (2026-06-26) - [The Staff Engineer's Job Is to Change the Map](https://parin.work/staff-engineers-job-is-to-change-the-map.html): How senior engineers create room for others by changing boundaries, dependencies, and risk visibility. (2026-06-24) - [Influence at Scale Means Lowering the Cost of Agreement](https://parin.work/influence-at-scale-means-lowering-cost-of-agreement.html): A practical model for making the right technical agreement cheaper to reach. (2026-06-23) - [Role Modeling Is How Engineering Standards Scale](https://parin.work/role-modeling-is-how-engineering-standards-scale.html): Why senior engineers spread standards through visible choices, especially under pressure. (2026-06-22) - [Stalled Projects Need Diagnosis, Not More Urgency](https://parin.work/stalled-projects-need-diagnosis-not-more-urgency.html): A failure taxonomy for projects that are busy, expensive, and not actually moving. (2026-06-21) - [Big Projects Need a Rhythm of Evidence](https://parin.work/big-projects-need-a-rhythm-of-evidence.html): A delivery model that measures whether risk is shrinking instead of whether activity is increasing. (2026-06-20) - [The Three Maps Before the Big Project](https://parin.work/three-maps-before-big-project.html): A planning frame for system maps, people maps, and risk maps before scope hardens. (2026-06-18) - [Equity in Engineering Shows Up in the Architecture Review](https://parin.work/equity-in-engineering-shows-up-in-architecture-review.html): How technical standards become fairer when context, timing, and credit are designed deliberately. (2026-06-17) - [Documentation Is an Operational Control Plane](https://parin.work/documentation-is-an-operational-control-plane.html): A practical taxonomy for docs that change how people operate, debug, and decide. (2026-06-16) - [Good Defaults Are How Architecture Scales](https://parin.work/good-defaults-are-how-architecture-scales.html): Why the safe path has to be easy before architecture can survive repeated decisions. (2026-06-14) - [Knowledge Sharing Is a Reliability Control](https://parin.work/knowledge-sharing-is-a-reliability-control.html): How operating cadence, not documentation theater, reduces knowledge single points of failure. (2026-06-12) - [Style Guides Are Socio-Technical Infrastructure](https://parin.work/style-guides-are-socio-technical-infrastructure.html): Why consistent rules reduce review entropy only when automation and exceptions are explicit. (2026-06-11) - [Software Engineering Is Programming With Time as a Dependency](https://parin.work/software-engineering-is-programming-with-time-as-dependency.html): A principal-engineer frame for code that must survive future people, traffic, policies, and failures. (2026-06-09) - [A Web Server Is an Agreement About Backpressure](https://parin.work/web-server-is-an-agreement-about-backpressure.html): What the simplest request path teaches about overload, timeouts, shedding, and responsibility. (2026-06-08) - [Deletion Is the Hardest Feature in Distributed Data Systems](https://parin.work/deletion-is-the-hardest-feature-in-distributed-data-systems.html): Why deletion needs propagation, proof, and retention design across every derived copy. (2026-06-07) - [Caches Are Product Decisions With Expiration Dates](https://parin.work/caches-are-product-decisions-with-expiration-dates.html): A cache review frame for stale reads, invalidation ownership, and stampede risk. (2026-06-06) - [Freshness Is a Correctness Dimension](https://parin.work/freshness-is-a-correctness-dimension.html): How to decide when stale-but-accurate data is still wrong for the product decision. (2026-06-04) - [Streams Need Contracts, Not Just Consumers](https://parin.work/streams-need-contracts-not-just-consumers.html): A contract checklist for event streams that survive replay, late arrivals, and semantic drift. (2026-06-03) - [Backfills Are Production Deployments](https://parin.work/backfills-are-production-deployments.html): Why data correction jobs need rollout discipline, observability, and rollback thinking. (2026-06-02) - [Derived Data Needs a Product Owner](https://parin.work/derived-data-needs-a-product-owner.html): A review frame for materialized truth, freshness promises, and repair paths. (2026-06-01) - [Partitioning Is a Product Strategy Decision](https://parin.work/partitioning-is-a-product-strategy-decision.html): How shard keys quietly decide locality, fairness, tenant isolation, and future operating cost. (2026-05-30) - [Consensus Is a Tax: Pay It Only for the Right Decisions](https://parin.work/consensus-is-a-tax.html): A decision frame for when global agreement is worth the coordination cost. (2026-05-28) - [Transactions Are UX Guarantees, Not Database Features](https://parin.work/transactions-are-ux-guarantees-not-database-features.html): How to review transaction boundaries by the user-visible promise they protect. (2026-05-27) - [Indexes Are Product Promises](https://parin.work/indexes-are-product-promises.html): A product-minded way to review indexes by the promises they make and the taxes they impose. (2026-05-26) - [Schemas Should Tell You What Can Change](https://parin.work/schemas-should-tell-you-what-can-change.html): A compatibility frame for schemas that name not only what exists, but what may safely evolve. (2026-05-24) - [The Data Model Is a Political Boundary](https://parin.work/data-model-is-a-political-boundary.html): Why data models decide ownership, meaning, and which future arguments become expensive. (2026-05-23) - [Observability Pillars](https://parin.work/observability.html): Notes from Parin's archive. (2026-03-31) - [The Case for Boring AI Infrastructure](https://parin.work/case-for-boring-ai-infrastructure.html): Why queues, caches, eval stores, audit logs, and boring controls beat magic in production AI. (2026-03-14) - [Latency, Tokens, and Trust in AI UX](https://parin.work/latency-tokens-and-trust-in-ai-ux.html): Why AI user experience depends on cost, waiting, uncertainty, and visible recovery paths. (2026-03-07) - [Why Data Quality Problems Look Like Engineering Problems](https://parin.work/data-quality-problems-look-like-engineering-problems.html): A taxonomy for separating data truth, pipeline behavior, model symptoms, and product expectations. (2026-02-21) - [Feedback Loops Beat Model Launches](https://parin.work/feedback-loops-beat-model-launches.html): How feedback design determines whether AI systems improve, stagnate, or quietly drift. (2026-02-14) - [The ML Model Is Rarely the System Boundary](https://parin.work/ml-model-rarely-system-boundary.html): A systems view of model behavior, data pipelines, fallbacks, product semantics, and human review. (2026-02-07) - [Evaluation Is the Product in AI Systems](https://parin.work/evaluation-is-the-product-in-ai-systems.html): Why durable AI products are built around eval loops, not model launch announcements. (2026-01-31) - [AI Code Review Needs a Threat Model](https://parin.work/ai-code-review-needs-threat-model.html): How to review machine-generated changes for subtle correctness, security, and maintainability risks. (2026-01-24) - [Prompting Is Not the Hard Part of Agentic Development](https://parin.work/prompting-not-hard-part-agentic-development.html): Why context design, verification, decomposition, and ownership matter more than clever prompts. (2026-01-10) - [Why AI Agents Need Smaller Interfaces Than Humans](https://parin.work/ai-agents-need-smaller-interfaces.html): How narrow tools, explicit contracts, and small write scopes make agents safer and more useful. (2026-01-03) - [The New Skill Is Reviewing Machine Work](https://parin.work/new-skill-reviewing-machine-work.html): A review rubric for AI-generated code that focuses on intent, contracts, failure modes, and tests. (2025-12-27) - [Agentic Coding Changes the Bottleneck, Not the Responsibility](https://parin.work/agentic-coding-changes-bottleneck.html): Why AI-assisted development moves senior responsibility toward framing, review, and integration. (2025-12-20) - [When Speed Becomes a Culture Smell](https://parin.work/when-speed-becomes-culture-smell.html): The difference between healthy urgency and speed used to hide poor choices. (2025-12-13) - [DDD](https://parin.work/ddd.html): Notes from Parin's archive. (2025-12-12) - [The Founder-Friendly Engineer Is Not a Yes-Man](https://parin.work/founder-friendly-engineer-not-yes-man.html): How to support founder urgency while protecting the system from avoidable damage. (2025-12-06) - [Hiring for Ownership When the System Is Still Moving](https://parin.work/hiring-for-ownership-while-system-moves.html): Signals for hiring engineers who can own ambiguous systems without needing stable ground. (2025-11-29) - [The First 90 Days After a Technical Pivot](https://parin.work/first-90-days-after-technical-pivot.html): How to reset architecture, morale, and delivery after the product direction moves. (2025-11-22) - [Startup Engineering Is the Art of Choosing Which Fires Stay Lit](https://parin.work/startup-engineering-choosing-fires.html): A startup operating model for separating existential fires from noisy but survivable ones. (2025-11-15) - [Promotion Packets Are Written One Decision at a Time](https://parin.work/promotion-packets-written-one-decision-at-time.html): How principal-level evidence accumulates through durable decisions, not last-minute brag documents. (2025-11-01) - [How to Make Executives Trust Engineering Judgment](https://parin.work/make-executives-trust-engineering-judgment.html): A communication model for translating engineering risk into business choices without theater. (2025-10-18) - [Influence Is Built Before the Meeting](https://parin.work/influence-built-before-meeting.html): Why senior influence comes from pre-wiring context, risks, and tradeoffs before rooms fill up. (2025-10-11) - [The Architecture Review That Actually Works](https://parin.work/architecture-review-that-actually-works.html): A review format that tests assumptions, failure modes, and operating ownership instead of style. (2025-09-27) - [How to Disagree With a Staff Engineer Without Making It Political](https://parin.work/disagree-with-staff-engineer-without-politics.html): A conflict model for keeping senior technical disagreement attached to evidence and risk. (2025-09-20) - [A Principal Engineer's Guide to Saying No](https://parin.work/principal-engineers-guide-to-saying-no.html): How to refuse unsafe work while preserving momentum, trust, and options. (2025-09-13) - [Technical Debt Is Often Unpriced Strategy Debt](https://parin.work/technical-debt-is-strategy-debt.html): A sharper way to discuss debt when the real issue is changing strategy, incentives, or ownership. (2025-09-06) - [Why Platform Teams Accidentally Become Gatekeepers](https://parin.work/platform-teams-become-gatekeepers.html): How internal platforms drift from leverage engines into approval queues, and how to pull them back. (2025-08-30) - [The Best API Design Happens Before the API Exists](https://parin.work/best-api-design-before-api-exists.html): A review method for designing APIs from lifecycle, failure, and ownership before endpoint shape. (2025-08-23) - [Backward Compatibility Is an Organizational Skill](https://parin.work/backward-compatibility-is-organizational.html): How compatibility survives when teams plan contracts, migrations, and deprecation paths together. (2025-08-16) - [Feature Flags Are Distributed Systems in Disguise](https://parin.work/feature-flags-are-distributed-systems.html): The hidden consistency, cleanup, and ownership risks inside flag-driven delivery. (2025-08-09) - [The Difference Between Latency Budgets and Latency Wishes](https://parin.work/latency-budgets-not-latency-wishes.html): A practical model for converting performance goals into owned budgets across a request path. (2025-08-02) - [Observability Without Ownership Is Expensive Decoration](https://parin.work/observability-without-ownership.html): Why dashboards only become useful when somebody owns the question they are supposed to answer. (2025-07-26) - [Incident Reviews Should Change Roadmaps, Not Just Runbooks](https://parin.work/incident-reviews-should-change-roadmaps.html): How to make incident reviews produce prioritization changes instead of better-formatted regret. (2025-07-19) - [The Reliability Work Nobody Wants to Fund](https://parin.work/reliability-work-nobody-wants-to-fund.html): A framing for turning invisible reliability labor into risk reduction leaders can evaluate. (2025-07-12) - [Idempotency Is a Product Requirement](https://parin.work/idempotency-is-a-product-requirement.html): Why safe retries depend on product semantics, user-visible effects, and organizational ownership. (2025-07-05) - [The Queue Is Not the Architecture](https://parin.work/queue-is-not-the-architecture.html): How to reason about async workflows by ownership, ordering, failure semantics, and reconciliation. (2025-06-28) - [Good Distributed Systems Are Designed Around Boredom](https://parin.work/distributed-systems-designed-around-boredom.html): Why predictable recovery paths matter more than clever steady-state architecture. (2025-06-21) - [The Hidden Cost of Just One More Service](https://parin.work/hidden-cost-of-one-more-service.html): A principal-engineer checklist for deciding when a service boundary is worth its operational tax. (2025-06-14) - [Why Most Migrations Fail Before Code Starts](https://parin.work/migrations-fail-before-code-starts.html): The migration risks that show up in ownership, sequencing, and rollback design long before implementation. (2025-06-07) - [Architecture Is Mostly Deciding What Must Not Change](https://parin.work/architecture-decides-what-must-not-change.html): A practical way to separate durable constraints from implementation details before design hardens. (2025-05-31) - [The Principal Engineer's Real Job Is Reducing Ambiguity](https://parin.work/principal-engineer-reduces-ambiguity.html): A field guide to turning vague technical anxiety into decisions, owners, and reversible next steps. (2025-05-24) - [The Power of Saying I Do Not Know](https://parin.work/power-of-saying-i-dont-know.html): Why useful uncertainty from senior engineers creates better discovery, trust, and technical decisions. (2025-04-19) - [What Your Code Review Process Actually Measures](https://parin.work/what-code-review-actually-measures.html): An honest audit of code review incentives, reviewer stamina, design risk, and the evidence reviews miss. (2025-03-22) - [Configuration Is a Programming Language](https://parin.work/configuration-is-a-programming-language.html): How configuration grows into untyped logic, and how to make it explicit, versioned, and auditable. (2025-03-08) - [The Testing Pyramid Is a Lie](https://parin.work/testing-pyramid-is-a-lie.html): A risk-weighted testing model that invests in the regressions most worth preventing. (2025-03-01) - [Give the ORM a Boundary, Not Authority](https://parin.work/right-way-to-use-an-orm.html): A boundary model for using ORMs where they help without letting them own domain behavior. (2025-02-22) - [Premature Abstraction Is Worse Than Premature Optimization](https://parin.work/premature-abstraction-is-worse-than-premature-optimization.html): Why abstractions created before the pattern is real become slower to remove than inefficient code. (2025-02-15) - [The Cost of Optionality in Software Design](https://parin.work/cost-of-optionality-in-software-design.html): Why every preserved option taxes future changes, and how to decide when commitment is cheaper. (2025-02-08) - [Leaky Abstractions Are Fine](https://parin.work/leaky-abstractions-are-fine.html): A failure-mode test for deciding whether an abstraction leaks predictably enough to be useful. (2025-02-01) - [What Senior Engineers Misunderstand About Junior Engineers](https://parin.work/what-senior-engineers-misunderstand-about-juniors.html): Why junior engineers often need context, constraints, and permission more than another technical answer. (2025-01-04) - [The Minimum Viable Process](https://parin.work/minimum-viable-process.html): How to add only the process that prevents known failure modes instead of slowing every future change. (2024-12-28) - [Why Good Engineers Write Bad Code Under Pressure](https://parin.work/good-engineers-write-bad-code-under-pressure.html): A cognitive-load model for protecting design quality when deadlines compress attention and options. (2024-12-14) - [Meetings Are a Decision Latency Tax](https://parin.work/meetings-are-a-decision-latency-tax.html): A decision-cost model for choosing when meetings help, when they stall, and what artifact should replace them. (2024-12-07) - [The Bus Factor Is a Design Constraint](https://parin.work/bus-factor-is-a-design-constraint.html): How to reduce knowledge concentration through architecture, operations, and ownership design instead of documentation guilt. (2024-11-30) - [Design Docs Are Coordination Tools](https://parin.work/design-docs-are-coordination-tools.html): Why the real value of a design doc is shared assumptions, explicit tradeoffs, and a durable decision path. (2024-11-23) - [Why Your RAG Pipeline Returns Garbage](https://parin.work/debugging-rag-pipelines.html): A failure-isolation model for debugging retrieval, ranking, context, prompt, and model behavior separately. (2024-11-16) - [The Latency Tail of LLM Inference](https://parin.work/llm-inference-tail-latency.html): Why AI latency tails behave differently and how to design product flows around token-driven variance. (2024-11-09) - [What Your SLA Actually Promises](https://parin.work/what-your-sla-actually-promises.html): How to design service promises around failure shape, measurement, ownership, and who bears the cost. (2024-11-02) - [More Replicas Do Not Mean More Reliable](https://parin.work/more-replicas-do-not-mean-more-reliable.html): When replication buys resilience, when it amplifies failure, and what to check before adding another copy. (2024-10-19) - [Your System Is Already Partitioned](https://parin.work/your-system-is-already-partitioned.html): A practical taxonomy of everyday micro-partitions and the design habits that make them survivable. (2024-10-12) - [Why Fail Fast Falls Apart in Money-Moving Systems](https://parin.work/fail-fast-falls-apart-in-money-moving-systems.html): Why financial workflows need cautious failure semantics, reconciliation, and slower decisions than ordinary services. (2024-10-05) - [Java DS Summary](https://parin.work/java-ds.html): A practical Java data-structures refresher for interview prep and daily problem solving. (2024-10-02) - [System Design](https://parin.work/system-design.html): Scalability, load balancing, sharding, caching, and other system design fundamentals. (2024-09-28) - [Leet code patterns summary](https://parin.work/leetcode-analysis-summary.html): A compressed map of interview problem patterns: windows, pointers, graphs, dynamic programming, and more. (2024-09-27) - [Leet code patterns with problems](https://parin.work/leetcode-analysis-with-problems.html): LeetCode patterns paired with representative problems and descriptions. (2024-09-27) ## Projects & Notes - [Technical Strategy Is a Portfolio, Not a Roadmap](https://parin.work/technical-strategy-is-a-portfolio-not-a-roadmap.html): A portfolio frame for balancing bets, foundations, migrations, learning probes, and kill criteria. (2026-06-27) - [Engineering Productivity Metrics Should Start With Friction](https://parin.work/engineering-productivity-metrics-should-start-with-friction.html): A measurement frame that starts with wait time, rework, build pain, and cognitive load. (2026-06-13) - [The Cost Model Every AI Product Needs](https://parin.work/cost-model-every-ai-product-needs.html): A unit-economics lens for token cost, latency, quality, and human review in AI products. (2026-02-28) - [The Agent Loop I Trust for Production Code](https://parin.work/agent-loop-i-trust-for-production-code.html): A practical loop for using coding agents without outsourcing engineering judgment. (2026-01-17) - [Why Senior Engineers Should Read P&L Statements](https://parin.work/senior-engineers-should-read-p-and-l.html): How revenue, margin, cost, and risk make technical prioritization sharper. (2025-11-08) - [The Quiet Power of Writing the Decision Record](https://parin.work/quiet-power-of-decision-records.html): How lightweight decision records create memory, alignment, and better reversibility. (2025-10-04) - [Unit economics](https://parin.work/unit-economics.html): Business metrics for engineers who want their technical decisions to connect to the P&L. (2025-06-27) - [The Last Responsible Moment](https://parin.work/last-responsible-moment.html): A practical way to delay decisions only while the delay is still buying useful information. (2025-03-15) - [How to Think in Tradeoffs](https://parin.work/how-to-think-in-tradeoffs.html): A decision-journal model for making engineering tradeoffs explicit, reviewable, and easier to communicate. (2025-01-18) - [The Art of the Technical Pre-Mortem](https://parin.work/art-of-the-technical-premortem.html): A practical pre-mortem format for finding failure modes before design confidence becomes expensive. (2024-12-21) - [Reliability Has a Balance Sheet](https://parin.work/reliability-has-a-balance-sheet.html): A debit-and-credit model for pricing reliability decisions before they become invisible debt. (2024-10-26) - [The (Web) Reading Ruler](https://parin.work/Reading%20Ruler.html): A browser userscript for saving and restoring a custom reading ruler across pages. (2024-10-01) ## Life - [The Principal Engineer as Editor](https://parin.work/principal-engineer-as-editor.html): A capstone essay on editing problems, interfaces, plans, meetings, and narratives into sharper decisions. (2026-06-29) - [Finite Time Is the Principal Engineer's Design Constraint](https://parin.work/finite-time-is-principal-engineer-design-constraint.html): How senior scope turns attention allocation into an architecture problem. (2026-06-19) - [What I Wish More Engineers Understood About Power](https://parin.work/what-engineers-should-understand-about-power.html): A clear-eyed model of power, trust, incentives, and responsibility in engineering organizations. (2026-05-18) - [Why I Write Before I Decide](https://parin.work/why-i-write-before-i-decide.html): How writing turns vague opinions into inspectable engineering decisions. (2026-05-02) - [The Career Value of Being Easy to Reason About](https://parin.work/career-value-of-being-easy-to-reason-about.html): Why reliability, clarity, and low-surprise behavior compound into senior leadership trust. (2026-04-18) - [Ambition Needs a Control Plane](https://parin.work/ambition-needs-control-plane.html): How to keep ambition useful by adding constraints, feedback, and explicit tradeoffs. (2026-04-11) - [Burnout Is a Throughput Bug](https://parin.work/burnout-is-a-throughput-bug.html): A systems model for burnout that treats recovery as capacity planning, not weakness. (2026-04-04) - [The Personal Operating System of a Principal Engineer](https://parin.work/personal-operating-system-principal-engineer.html): A practical operating model for attention, energy, writing, relationships, and technical leverage. (2026-03-28) - [How to Build Taste as an Engineer](https://parin.work/how-to-build-taste-as-engineer.html): How engineers develop judgment by studying consequences, constraints, and user pain. (2026-03-21) - [The Dangerous Comfort of Being the Smartest Person in the Room](https://parin.work/danger-of-being-smartest-person.html): Why senior engineers must trade cleverness for systems that make other people sharper. (2025-10-25) - [The Second Half of Your Engineering Career](https://parin.work/second-half-of-your-engineering-career.html): How to design a long technical career around energy, renewal, craft, and changing forms of ambition. (2025-04-26) - [The Loneliness of Technical Leadership](https://parin.work/loneliness-of-technical-leadership.html): A grounded model for carrying senior engineering responsibility without turning isolation into distance. (2025-04-12) - [How to Know When to Leave](https://parin.work/how-to-know-when-to-leave.html): A stay-or-leave decision frame for separating durable career signals from frustrating but temporary noise. (2025-04-05) - [The Plateau After Principal](https://parin.work/plateau-after-principal.html): How growth changes when title-chasing stops working and craft, judgment, and renewal matter more. (2025-03-29) - [The Paradox of Experience](https://parin.work/paradox-of-experience.html): How experience accelerates pattern recognition while quietly narrowing the alternatives engineers consider. (2025-01-25) - [The Reading Stack of a Principal Engineer](https://parin.work/reading-stack-of-a-principal-engineer.html): A reading system for building technical judgment through systems, organizations, writing, and human behavior. (2025-01-11) - [Parin's reflections -- A (fictional) story about myself](https://parin.work/parin_dreams_story.html): A fictionalized self-portrait about ambition, pause, spirituality, and finding a richer melody. (2024-10-14) - [From Hustle to Heal: Why I Quit My High-Paying Job to Take a Break and Reclaim My Life](https://parin.work/Taking%20a%20break.html): A candid, funny, deeply Indian essay about quitting a high-paying job to recover health and meaning. (2024-09-23) - [Om](https://parin.work/vighnaharta.html): A quiet opening prayer to mark the beginning of the blog. (2024-09-23)