Family
No deadline, no client, no opportunity is worth sacrificing time with the people who built this with me.
Reports from the experiment
Thirteen years of building software and leading teams produced a handful of working rules. Not commandments — rules of thumb that keep the work grounded.
No deadline, no client, no opportunity is worth sacrificing time with the people who built this with me.
Can't build anything great if you're burned out. Sleep, exercise, mental health — they come before the code.
Behind every ticket is a person. Behind every metric is a user. Never forget that.
Perfect is the enemy of shipped. Get it in front of users, learn from their feedback, iterate. The best code I never wrote was the code I didn't need because I shipped early and learned the feature wasn't wanted.
Every line of code is a liability. Every abstraction is complexity you'll pay for later. I've seen so many projects collapse under their own cleverness. The best solution is usually the boring one. Make it work, make it clear, make it fast — in that order.
Manual testing is fine for 50 users. Once you have real traction, invest in automation. For mid-to-large projects I aim for 85%+ coverage and feature flags for safe rollouts.
Even thirty minutes counts. The compound effect of daily practice is real. Some of my best ideas came from "quick" morning sessions that turned into breakthroughs.
Keep your business logic pure. Adapters for everything external. When Rails 8 becomes Rails 9, your core domain shouldn't care. Too many tangled codebases to ignore this.
Zero-downtime deploys aren't optional — they're expected. Blue-green lets you switch instantly. Canary releases let you test with 1% of users before everyone gets the new code.
Fifty microservices and twenty AWS products to support a team of ten isn't engineering, it's complexity theater. You don't need a thousand services. You need the right five.
PostgreSQL over proprietary databases. Redis over managed-only solutions. Standard containers over platform magic. When you need to move — and you will — you'll thank yourself.
The principles don't change much with scale — only the volume of repetition does.
Share context. Share the why. Share the constraints. People do better work when they understand the full picture, not just their ticket.
Ambiguity kills momentum. I'd rather have a wrong goal that we can correct than no goal at all.
Your engineer having a rough week? That matters more than the sprint. The best retention strategy is actually giving a damn about your people.
“All in on AI. One hundred percent.
And I read every line it writes.”
Not magic · A collaborator · A multiplier
The developers who treat AI as a "do my work" button will fall behind. The ones who learn to collaborate with it — guiding, reviewing, iterating — will build things that weren't possible before.
I read constantly — books, blogs, Paul Graham, 37signals. I listen to podcasts while walking. Every good idea I've had was built on someone else's foundation.
I'm a builder. I love making things. But selling? Marketing? That's where I struggle the most. I'm actively learning it. Admitting what you're bad at is the first step to getting better.
Thirteen years in and I'm still learning. Elixir on the side. How to sell. Leadership. The day you think you know enough is the day you start falling behind.
These evolve as I do. Check back when the experiment surfaces another lesson.