# Career — Outline

## Overview

- 30 years across the full depth of software systems, from distributed architecture to organizational leadership
- A systems thinker, rather than a generalist
- Driven by one question: how do you make it easy for teams to do the right thing?

## How I Lead

- Lead at the level of the work, as well as at the level of product and strategy. Continuity is the primary concern: a team's capacity to deliver continuously without interruption.
- Started products from scratch, joined mature teams, and led modernization of legacy products in equal measure; coached executives moving into product development for the first time and leaders trying to understand why their engineering isn't producing as expected
- Fluency across numerous process models (Lean, Agile, phase-gate, and others); governing axiom is "specific countermeasures for specific circumstances," with particular practices applied where best suited

## Origins and Practice

- Pattern from early engagements: high-trust, high-autonomy work, owning the problem end to end
- Three decades across consulting practice, in-house engineering leadership, and startup work; clients include Capital One, Microsoft, Rackspace, Baker-Hughes, Chevron, Fannie Mae, the Mexican Trade Delegation, Canadian National Defense Headquarters, VersionOne, and TheKnot.com
- Independent contracting since 1991, beginning with chemical product manufacturing systems at Zep Manufacturing

## Path to Distributed Systems

- Messaging exploration began at a CRM company in 2007 during a litigation-forced product pivot
- At Rackspace from 2011 to 2012: led migration of 22 tightly-coupled legacy web applications toward an evented, message-driven architecture; direct foundation for the Eventide Project
- As CTO of Aptus Technologies from 2012 to 2013: full product turnaround from a non-viable offshore codebase to an operational first increment in six months

## Eventide Project

- Founder and principal author of the Eventide Project and Message DB, an open-source framework and event store active since 2014; recognized with the Fukuoka Ruby Award for Social Impact
- 72% codebase authorship, plus all documentation including the Doctrine of Useful Objects: behavioral over data-centric components, single-purpose units, testability through telemetry rather than intrusive mocks and stubs
- Project entering its next generation, the last in which I'll be making significant implementation contributions; mentoring two successors with the goal of handing off this year

## Recent Work: Fast Company-Recognized Platform at Global Law Firm

- Five-year engagement with a global law firm; traditional business environment with no prior software product experience, grown from four people to thirty (twenty engineers plus ten in product operations, subject matter expertise, and management)
- Co-led as principal architect, principal engineer, process leader, and tooling author; integrated designers and engineers into shared work cells; introduced lean practices rooted in the Toyota Product Development System to technical and business leadership
- Platform built on Eventide and Message DB spans a dozen web applications and over 100 backend components, automating legal workflows from incorporation to IPO; earned the firm a place on Fast Company's World's Most Innovative Companies list

## Design Philosophy

- Purpose is developer experience and developer productivity, just as it is for users; the design hierarchy runs from principles to patterns to frameworks and tools, in that order
- Proven work is an asset; unproven work is liability. Compounding unproven work is like inventory in production systems: a liability masquerading as an asset
- Compartmentalization is structural; test setup difficulty is the diagnostic surface for design quality; test-driven design is a leading productivity indicator, not just a correctness check

## Product Design

- Users first, then commercial, then operations; product design means giving users powers; engages through human factors psychology with as much vigor as commercial imperatives
- Ideal product interface dissolves on contact; the product is soluble, dissolving immediately into understanding; lost productivity usually traces to a lack of immediate understanding, either of how to proceed or of how an action will affect the outcome
- Functionality before aesthetics; rigorous about executable style guides over tribal knowledge

## Continuity

- About a team's ability to keep making changes without interruption or setbacks; design either builds toward that or erodes it
- Speed and continuity are not a trade-off but a dialectic; the design practices (telemetry, compartmentalization, test control as diagnostic) are what make them reconcilable
- Design mistakes don't crash software; they malfunction teams and projects, starting at the cell level and compounding along coupling lines

## Production System Thinking

- Twenty-plus year student of how high-performing production systems and product development systems pursue throughput and quality simultaneously, from primary texts and with ongoing direct relationships with teachers and practitioners
- Translates the practices and mindset into software product development: organizational design, team structure, workflow, and culture

## Testing Philosophy

- Structural design first: transparency and telemetry built into systems as essential design elements, not afterthoughts; observable behavior is a design goal, not a debugging convenience
- Interactive testing is critical to a complete testing practice; human inspection has its own value, even as AI takes on more of the work
- Full automation for system state control supports both interactive and automated testing; test isolation is a design concern, not a framework affordance; test setup difficulty is the mechanical link between testing practice and design quality; test tooling benefits from a minimal, stable API

## Working with AI

- Came to AI through skepticism rooted in an XP and test-driven design background; the resistance gave way to fascination as AI integrated into work without compromising the rigor that produced it
- AI writes under my direction; I treat AI output as evidence to be examined; the rigor of controlled, micro-incremental, provable work pays the same dividends in AI work
- Concrete progression at increasing scope: small utility scripts, a Git client (git-stage), an SMTP archiving utility, a queue tool for public meetings (speaker-queue), and active work on the next generation of the Eventide Project

## Teaching and Curriculum

- Central to my work since 2000; workshops on software design, distributed and message-based systems, developer testing, UI testing, and test-driven design
- Among the first to teach and advocate general purpose data access frameworks to working engineers, well before ORM frameworks became standard
- Sustained focus on making esoteric and incidentally-complicated concepts accessible without sacrificing precision

## Speaking and Community

- Founded conferences across the US, Canada, Sweden, and Norway: Eventide Community Summit, ALT .NET Conf, KaizenConf, MonoSpace, Progressive .NET
- Founded meetups including Distributed Systems Enthusiasts, Lean Software Austin, Austin Software Design Study Group, Microservices Meetup, AgileATX, Agile Austin, Austin .NET User Group
- Have spoken at numerous events across the US, Canada, and Europe, including Øredev, Explore DDD, GoRuCo, Lone Star Ruby Conf, Norwegian Developer Conference, Stockholm Developer Days, PostgresConf SF, PostgresConf Austin
- As remote tools and techniques have matured, outreach has shifted toward remote coaching, where the self-selecting cohort makes it the more productive channel; about one conference presentation a year
