My Ideals
These are ideologies, not rules. Meeting these principles is a non-stop battle; the goal is to keep reaching, not to arrive.
These ideologies apply outside of codebases and should affect how we do most of our work.
Philosophy
- Effort Is the Enemy — every line of code is a liability. Write the minimum necessary, delete whenever possible. Same cost applies to duplicate documentation, redundant meetings, and overcomplicated processes.
- Not Everything Deserves Equal Effort — identify what is core to the business and what is commodity. Invest your best thinking in the core. Auth, file storage, currency conversion — rarely what differentiates a product. Treat them accordingly.
- Simple Over Clever — simple is harder than complicated. Readability and maintainability are elegance. Clever solutions become legacy burdens; simple solutions survive.
- Separation of Concerns — the job of each thing should be obvious. Same principle whether splitting a monolith, structuring a meeting agenda, or organizing a folder.
- Deliver Value as Often as Possible — continuous delivery of small, verifiable increments reduces risk and surfaces problems early. Applies at every level, from production deploys down to a single story.
- Deliver Value as Soon as Possible — close the gap between writing code and proving it works in context. Reach a production-like environment early; operate the way the client does as quickly as possible.
- Choose Deliberately — rewriting out of frustration and patching out of fear are both traps. Understand the codebase, assess the real cost of each path, and choose.
- Avoid Brittle Everything — if a change in one place requires updates in many others, the number of required updates always grows. Resilience comes from simplicity and loose coupling. Applies to code, docs, processes, architectures.
- Pragmatic Flexibility (80/20) — nearly everything has exceptions, including these ideologies. Follow what works 80% of the time; let context and judgment guide the other 20%. Never use the 20% to avoid thinking critically.
Principles
- Twelve-Factor - A methodology for portable, resilient, scalable applications
- Functional Programming - Purity, composition, and declarative transformations
- Agnostic Core - Keep business logic free of infrastructure concerns
- Modeling - The domain is the center of gravity
- Testing - Test behavior, not code
- Codebase - Code, dependencies, and configuration
- Error Handling - Let errors bubble up, handle at the top
- Code Ownership - Everyone owns everything
- Operations - Build, deploy, and run applications reliably