About
I’ve spent the last 5+ years leading software engineering teams, after over a decade spent building and shipping full-stack software. Most of that work has been with an eye toward user experiences: shipping apps for web, mobile, voice, CLI interfaces, and various OTT devices.
I believe that building good software starts with people. The teams that ship great user experiences are the ones where transparency is encouraged and collaboration is actively cultivated. A lot of my day to day work goes to practically building, protecting and sustaining those sorts of environments.
I’ve spent most of my career navigating various versions of flux: large migrations, reorgs, acquisitions, and teams inheriting systems nobody wants to own. Somewhere along the way I realized that I’m at my best when I’m helping other people learn to thrive through that kind of change rather than just trying to survive.
I don’t write much production code these days, but I still find myself doing some architectural work occasionally, or digging into a challenging bug from time to time. On the technical side, I’m most at home with TypeScript, Node, and the React / React Native ecosystem, but consider myself a true software polyglot with work experience in Python, PHP, Go, Elixir and a bit of Swift, Objective-C, and Kotlin. As a former full-stack engineer I’ve spent a good deal of time configuring and deploying to AWS and other cloud providers, as well as building and shipping on bare metal and other on-prem infrastructures. I have shipped and led teams who ship everything from web apps deployed at the edge and backend systems deployed to kubernetes clusters to mobile and CLI apps that ship as binaries and most things in-between.
At the end of the day, I like to be a part of the entire software development lifecycle — from initial hypothesis to shipped feature or product, and then back to the whiteboard with new data for the next iteration.