Guidelines and Defaults

Run less software

  • Rely on well-known tools by default
    • ActiveRecord
    • Postgres
    • Rails standards
  • Prefer Hotwire to React

Default to functional principles

  • Separate writes from reads
  • Use Actors for complex writes
  • Avoid effects by default
  • Prefer pure functions (companions) to stateful objects

Don’t be afraid to build custom solutions to gain simplicity

  • Astra Forms
  • Actors
  • GiraffeQL
  • Data Trees

Consider the stability of your problem and solution spaces

If you have low or medium confidence in a problem, consider a loosely-integrated exploratory solution. If you have high confidence in a problem, consider a solution which meets future needs and provides broad leverage.

Seeking Technical Feedback

  • Your team is happy to provide feedback in whatever form is most useful
  • You are ultimately the driver of the solutions and decisions of your project
  • Presenting unbaked ideas is encouraged–don’t wait to get feedback if you’re unsure
  • Hosting a Design Discussion is a good default for synchronous feedback
  • Writing an Architecture Decision Record (ADR) is a good default for asynchronous feedback