Handbook
  • πŸ‘‹Junction Handbook
  • ⛰️Why are we here?
    • πŸš€Vision and mission
    • πŸ“–Useful things to read
  • πŸ’₯How to Junction
    • πŸ’›Operating principles
    • πŸ“…Company Cadence
      • Weekly Standups
      • Biweekly All Hands
      • Biweekly Happy Hours
    • πŸ—£οΈCommunication
      • Guidelines
      • Effective communication
  • πŸ’ͺHow we'll support you
    • πŸ›«Onboarding
    • ✨Benefits
    • 🀝Share options
    • πŸ’¬Sharing your view
    • πŸ’΅Compensation
    • πŸ“”Policies
      • πŸ’³Expenses
      • πŸ–οΈVacations
      • πŸ§’Caregiver policy
  • πŸ› οΈEngineering
    • πŸ”°Engineering Values
    • πŸͺ—Engineering Cycles
    • 🎯Best Practices
      • API Design Guidelines
    • πŸ•£Managing Issues
      • ♨️Issue Priority
      • ⬇️Communicating Downtime
    • πŸ“žOn call
    • πŸš€Progression
      • πŸͺœEngineering Levels
        • Junior Engineer
        • Mid Engineer
        • Senior Engineer
        • Staff Engineer
Powered by GitBook
On this page
  • Trust your peers βœ…
  • Strive for good outcomes, not perfect solutions βœ…
  • Simple is better than clever βœ…
  • Guardians, not carpenters βœ…
  • Test strategically βœ…
  1. Engineering

Engineering Values

Trust your peers βœ…

We are all competent engineers with ownership of our work. Each team member brings their unique set of experiences and expertise.

Code reviews, RFCs and discussions are forums for cooperation. We provide each other commentaries and suggestions. But we always trust the owner to make the final decisions based on their product and domain knowledge.

Strive for good outcomes, not perfect solutions βœ…

We can take shortcuts to achieve our goals. But we need to have a clear idea of how the shortcut can be an integral step towards the optimal solution.

Simple is better than clever βœ…

β€œKeep it simple, stupid.”

As engineers, we’re all partial to fun abstractions, crazy one liners and funky code. And this is all great fun, but not in a shared code base.

We strive to maintain a clear, concise, and functional code base. One that is friendly to new contributors, and to existing contributors who are all humans with short-term memory.

Guardians, not carpenters βœ…

We take ownership of our work. This includes the ongoing performance and the developer experience.

Our pride stems from crafting solutions that deliver exceptional developer experiences. When issues arise, we are invested in resolving them, ensuring our systems operate at their best.

Test strategically βœ…

Test the behaviours and the state transitions, not the programming structures.

  • Consider end-to-end testing that provides widest requirement coverage and confidence.

  • Consider unit testing new complex behaviours to assure against future regressions.

We are opinionated about what needs to be tested. We do not chase arbitrary test coverage percentage targets. We do not blindly test β€œeverything”.

Every production behavioural bug we fix should contribute to the test suite in some form. After all, a bug was a behaviour unforeseen during development.

PreviousCaregiver policyNextEngineering Cycles

Last updated 9 months ago

πŸ› οΈ
πŸ”°