How I think about building systems.
These principles guide every architecture decision, trade-off evaluation, and system design choice I make.
Choose Boring Technology
"The best systems are the ones nobody thinks about. When things become boring, they are good."
I don't chase the newest framework. I chase reliability, user satisfaction, and low maintenance costs. Production stability always beats novelty.
Understand the Constraints
When a source system lacks a real-time API, you don't fight the constraint -- you design around it. Ingestion was built around daily exports because that's what was available, and it works.
Plan for Successors
"If I leave and someone takes over, they should be able to use the platform and for it to be clear 100%."
Every decision considers: Can someone else maintain this? Is it documented? Is it intuitive? Systems outlive their builders.
OLAP vs OLTP Matters
Knowing when to use transactional databases vs analytical databases is fundamental. Analytical workloads need column-oriented storage, denormalized models, and aggregate-friendly schemas.
Data Quality Is Everything
Inaccurate dimensions lead to wrong reports, which lead to bad business decisions. Assertions, contracts, and CI-gated validation aren't optional -- they're the foundation.