Writing

Great software is composed; not written

December 3, 2024·2 mins read

A collection of principles to weave into a cohesive post, drawing from the wisdom of wizards, modern practices, and my first decade as a software engineer.

Composition is the foundation

  • Systems built from composable parts are easier to understand, test, and maintain; also use.
  • Each piece should have a clear purpose and work seamlessly with others.
  • Composition applies to all layers: types, components, hooks, middleware, schemas, APIs.

Abstraction is the way

  • Abstraction reduces complexity and enhances maintainability.
  • Clear boundaries between layers allow systems to scale without chaos.
  • Documentation is your best friend for planning, understanding, and using abstractions.

Types are the ultimate contract

  • Types are a developer's safety net, a way to communicate intent and enforce correctness.
  • Strongly typed systems provide confidence and improve velocity.
  • There's no better feeling than knowing why are you doing what you are doing

Declarative over imperative

  • Declarative systems are easier to reason about and maintain.
  • "What" matters more than "how" — from UI (React) to data fetching (GraphQL/RPC).
  • Being more declarative empowers the "flow state".

Simplicity is strength

  • Simplicity makes code readable, maintainable, and robust.
  • Prioritize clarity over cleverness; solutions should feel intuitive and elegant.
  • Accidental complexity hides bugs and slows everyone down.

Pragmatism over perfection

Iteration and validation

  • Nothing is great on the first pass - iteration is a given.
  • Testing is non-negotiable - it validates assumptions and builds confidence.
  • Use what you gonna build, build what you gonna use.

Developer experience as a priority

  • Best systems are a joy to work with.
  • Codebase, tooling, documentation, and your cause should empower, not hinder.
  • Be a boy scout, leave the place you touch better than you found.

People are your best asset (including yourself)

  • Collectives are usually stronger than individuals.
  • Find your tribe, take care of them - grow together.
  • Praise in public, criticize in private.
  • And please; be nice first, be right later.

I'm grateful for the opportunity to work with amazing people and build stuff that helped amazing people.

Looking forward to many more years of learning, building, and shipping.