My Experience
What I've been up to for 12 years
September 2023 - Present
Software Consultant
Source AlliesPartner with client teams to design and ship enterprise applications on the cloud, spanning application code, infrastructure, and delivery pipelines. Much of the work is coaching teams toward test driven development, smaller iterations, and tooling that makes delivery predictable.
- TypeScript
- Node.js
- React
- C#
- AWS
- Azure
- Bicep
- GraphQL
June 2022 - January 2023
Software Engineer
Gravity LegalImproved payment processing software for law firms and legal tech companies. Built out end-to-end test coverage and led integration testing through an overhaul of the payment flow.
- React
- Node.js
- TypeScript
- TypeORM
- MySQL
- AWS
August 2020 - June 2022
Software Engineer
Principal Financial GroupBuilt customer-facing experiences on the Enterprise Experience Enablement team, including the home page, messaging, and user profile. Led the integration of a new customer segment following an acquisition, coordinating across many teams.
- JavaEE
- JSP
- WebSphere
- DB2
- Python
- Flask
- API Gateway
- AWS
January 2020 - July 2020
Software Scientist
Ames Laboratory, Department of EnergyContributed to CMakePP, an open-source project for building cross-platform C and C++ build systems for computational chemistry. Extended the CMakePP language and wrote its documentation.
- CMake
- GNU Make
- Sphinx
- Linux
May 2018 - August 2019
Software Engineering Intern
Herzog TechnologiesWorked across three projects: a LiDAR-based application for railroad clearance analysis, a technical lead role on an in-house compensation management tool, and the migration of a proprietary desktop railroad data validation tool to the web.
- Python
- Tornado
- Angular
- SQLAlchemy
- Bootstrap
- Docker
- C#
- WPF
June 2014 - January 2018
Software Engineering Intern
Collins AerospacePart of the team behind an automated testing system for radio hardware, translating feedback from test engineers into new features and fixes that shortened their test cycles.
- JavaFX
- Python
- Tornado
- Angular
How I Work
What I think a team needs to excel
A few things I believe are load-bearing if a team is going to excel over the long term.
- 01
Fast feedback loops
I would rather be wrong in an hour than right in a month.
Test driven development is the cornerstone of this mindset. Tests written after the implementation tend to describe whatever the code already does, while tests written first describe what it is supposed to do and code quality reflects that: smaller units, cleaner modules, and (of course) truly testable code.
I push my team to work closely and frequently with those upstream and downstream of us (customers, or teams we are partnering with). There are always unknown unknowns, I prefer to find them early rather than a week before a deadline.
Lastly, I believe in investing time in ceremonies to build and maintain a durable and healthy team: chartering a team early so we understand how each of us actually works + holding quality retros so that the real problems get acknowledged and resolved.
- 02
Self-organizing teams
The people closest to the work know how to be most effective.
Teams trusted to organize themselves and set their own direction consistently outperform teams waiting to be told. Direction should arrive as context and constraints, not as assignments.
That trust is not a reward for maturity, it is how maturity develops. A team never given the decision never learns to make it well.
- 03
Sustainable delivery
Engineers are the counterweight to the pull toward deliver, deliver, deliver.
Product's instinct to ship is healthy and necessary. Left unchecked it borrows against the system's future, because technical debt is often invisible in any single sprint. Engineers should spot these costs, and making them visible to leadership is part of the job.
The outcome is that the team delivers reliably for years rather than impressing stakeholders one quarter and fighting fires the next.
Of course, technical debt is unavoidable. The question is whether it is taken on deliberately and paid down, or accumulated unintentionally and discovered later.
Me Outside of Work
Spoiler: it's mostly gravel biking
I charge up my mental batteries by depleting my glycogen stores. Sometimes I bring my camera along. "Type 2 fun," they call it.
Word to the wise: be careful bringing up bike tires around me. I have opinions.