Guides
Notes from two decades in production: what I'd tell a founder or engineering lead over coffee, written down.
Guides
- Developer productivity: why your engineering team is slow
A developer productivity diagnostic for founders and VPs: the real causes of slow software delivery, how to spot each one, and the fixes that actually work.
- DORA metrics for small teams: what to measure and how
DORA metrics explained for small engineering teams: the four keys plus rework rate, how to measure them cheaply from Git and CI, and how they get gamed.
- Source code escrow and owning your code: a founder’s guide
Source code escrow, IP assignment and repo ownership explained for founders who use agencies or freelancers – plus how to leave a vendor cleanly.
- Agentic workflows: patterns that hold up in production
Agentic workflows explained: workflows vs agents, routing, orchestrator-worker and evaluator loops, human-in-the-loop design, and real product examples.
- AI agent security: a practical threat model
AI agent security in practice: prompt injection, tool scoping, confused deputy, data exfiltration, audit logs and approval gates for agents and MCP servers.
- AI agents for business: what’s worth building
AI agents for business without the hype: what an agent actually is, use cases ranked by ROI and risk, build vs buy, and how to start small and safely.
- AI code review: using AI reviewers and reviewing AI code
A practitioner’s guide to AI code review: what AI reviewers catch and miss, how to review AI-generated code, and a team policy that keeps humans accountable.
- Claude Code for teams: rolling out AI coding assistants properly
Rolling out Claude Code for teams, or Cursor: conventions files, review rules, secrets, honest productivity measurement, and why seniors matter more.
- AI for customer support that actually resolves tickets
AI for customer support that resolves problems rather than deflecting them: agent assist, routing, RAG over help docs, escalation design and honest metrics.
- AI ROI: how to measure the return on AI features
AI ROI for SaaS teams: how to measure cost per task, resolution, retention and revenue impact of AI features – and the hidden costs most business cases miss.
- Choosing a caching strategy that won’t bite you later
A practical caching strategy guide: cache-aside, write-through, HTTP caching, invalidation that works, cache stampedes, and running Redis well in production.
- Event-driven architecture in practice, for SaaS teams
Event-driven architecture in practice: queues vs streams, the outbox pattern, idempotent consumers, ordering and retries – and when not to use events at all.
- Is vibe coding bad? Where it works, where it breaks
Is vibe coding bad? Not for prototypes and internal tools. Where it breaks (auth, data, payments), how it differs from agentic coding, and a launch checklist.
- Legacy modernization strategies, and when each one fits
Seven legacy modernization strategies – rehost, replatform, refactor, rearchitect, rebuild, replace, retire – and how to pick one for each part of your system.
- OpenAI API cost: estimate it, then cut it
OpenAI API cost explained: how token pricing, caching and batch discounts work, how to estimate cost per feature, and the levers that cut LLM spend safely.
- LLM evaluation for product features
LLM evaluation for product teams: build golden sets, choose code graders vs LLM-as-judge, avoid judge bias, and gate prompt and model changes in CI.
- LLM guardrails for real product features
LLM guardrails that work in production: input validation, structured outputs, grounding and citations, refusal handling and monitoring for AI product features.
- Marketplace payments: how to design them on Stripe Connect
Marketplace payments on Stripe Connect: account types, charge types, split payments, escrow-like holds, refunds, disputes and KYC – plus mistakes to avoid.
- The modular monolith: structure without the network
What a modular monolith is, how to enforce module boundaries in Rails, Django and Laravel with real tooling, and how to extract a service later if you need to.
- Multi-tenant SaaS architecture: shared, schema or database per tenant
Multi-tenant SaaS architecture compared: shared schema, schema or database per tenant, Postgres row-level security and noisy neighbors.
- Payment reconciliation for SaaS and marketplaces
Payment reconciliation explained for engineers: a double entry ledger, matching processor reports to your records, refunds, chargebacks, FX and automation.
- Payment system architecture: the parts that matter after launch
Payment system architecture for SaaS and platforms: ledger, idempotency keys, webhooks, retries and reconciliation – the parts that fail once real money flows.
- RAG architecture for production systems
RAG architecture for production: ingestion, chunking, hybrid search, reranking, permissions, generation with citations, failure modes and how to evaluate it.
- The strangler fig pattern, explained with a SaaS migration
The strangler fig pattern explained with a real SaaS migration: the routing layer, who owns the data, the pitfalls that stall it, and how to know you’re done.
- Stripe webhook handling that survives production
Stripe webhook best practices for production: signature verification, idempotent processing, out-of-order events, retries, replay – and stopping double charges.
- A technical due diligence checklist, with what “red” looks like
A technical due diligence checklist grouped by area – architecture, code, infra, security, team, IP and costs – with what a red answer looks like for each.
- What is an MCP server?
What is an MCP server? A plain explanation of the Model Context Protocol: tools, resources, prompts, transports, OAuth, and why your SaaS should ship one.
- What is technical debt? A practitioner’s definition
Technical debt explained by a former CTO: a plain definition, Fowler’s quadrant, SaaS examples, and how to tell good debt from the kind that sinks delivery.
- Zero downtime deployment, including the database
Zero downtime deployment for SaaS: expand/contract database migrations, Postgres locking traps, blue-green and rolling deploys, feature flags and backfills.
- CTO job description: a template by company stage
A CTO job description template you can adapt by company stage, the CTO vs VP Engineering split, and how to hire a CTO without a six-month mistake.
- A blameless incident postmortem template that gets used
A blameless postmortem template you can copy today, plus how to run the review meeting and make sure the action items actually get done afterwards.
- Setting up an on-call rotation for a small engineering team
How to set up a sustainable on-call rotation for a 4–15 person engineering team: rotation shapes, alert hygiene, handovers and fair compensation.
- Software estimation that survives contact with reality
Software estimation that the business can plan around: why estimates fail, how to give ranges, reference-class forecasting, slicing work and talking about risk.
- Reducing technical debt without stopping feature work
How to reduce technical debt without a feature freeze: measure it, rank it by business impact, budget for it, and pay it down in small, shippable steps.
- What does a fractional CTO cost? Pricing models explained
What drives fractional CTO cost: retainer, hourly, fixed-scope and equity pricing models explained, what pushes rates up or down, and what to ask first.
- How to build a technology roadmap (with a template)
How to build a technology roadmap that balances features, technical debt and platform work – a step-by-step method plus a template you can copy today.
Comparisons
- Fractional CTO vs full-time CTO: how to decide
Fractional CTO vs full-time CTO, compared by company stage, cost structure and hiring timeline – including when the honest answer is to hire full-time.
- Microservices vs monolith: an honest take for smaller teams
Microservices vs monolith for teams under 50 engineers: why a monolith usually wins, the real signals that it’s time to split, and how org shape decides it.
- RAG vs fine-tuning: how to choose
RAG vs fine-tuning, decided properly: when to use prompting, retrieval, tools or fine-tuning an LLM, with the cost and maintenance trade-offs of each.
- Rails vs Django vs Laravel: an opinionated comparison
Rails vs Django vs Laravel from someone who has shipped production systems in Ruby, Python and PHP: strengths, hiring, AI tooling and a verdict.
- Rewrite vs refactor: how to decide
Rewrite vs refactor, decided properly: why big-bang software rewrites fail, the narrow conditions where a rewrite is right, and a checklist to decide.
- Staff augmentation vs outsourcing: which model fits your team?
Staff augmentation vs outsourcing vs hiring in-house vs an embedded lead: cost, control and accountability compared, from someone who ran an agency.
- Supabase vs Firebase: which backend should you build on?
Supabase vs Firebase compared honestly: Postgres vs documents, auth, how pricing scales, lock-in, migrating from Firebase, and when you’ll outgrow both.
- Vercel alternatives: when to leave, and the realistic options
Looking for a Vercel alternative? When Vercel stops fitting – cost, function limits, backend needs – and how Cloudflare, Netlify, Render, Fly and AWS compare.
- Build vs buy software: a framework for making the call
A build vs buy software framework for engineering leaders: core vs context, total cost of ownership, exit costs, and the questions that settle the call.
Want a hand with this?
We scope it together, ship something real inside two weeks, then decide. No notice period, no exit clause.
GMT+2 · Full EU overlap · US East mornings