Fundamental Assumptions About Coding


Overarching assumption: Writing code is not an assembly line process but a human-centered process. It is performed by and for humans. It is a creative process that involves communication and collaboration among both developers and stakeholders. While technical skills are important and necessary, having the right mindset and contributing to the success of the team are far more important than any technical skill.

  1. Embrace the “Retrospective Prime Directive”. Always assume everyone acts in good faith and does the best they can with the background, knowledge, and skills they have.
  2. Be empathetic. Always consider the experience of other developers and users in your designs and processes.
  3. Try the simplest thing that works and only add complexity when necessary.
  4. Don’t tell me your code works, show me. Code doesn’t work unless you can prove it.
  5. Keep feedback loops short to help manage change and detect problems early. Related: If something feels too hard, take smaller steps.
  6. Let the affected people choose their own processes and tools as they are needed.
  7. Never ask permission to do the right thing. Testing and refactoring are a part of writing code, not some add-on.
  8. Avoid being dogmatic and approach different ways of doing things with curiosity. There are certainly wrong ways to do things but almost never one right way. Best Practices are situational. It depends is a perfectly valid answer.
  9. Programming should be fun! If it’s not, change it! Code is a just a tool that we create. We can change it. If something about the code is making life difficult, change it! The code works for us, not the other way around. The same thing goes for our processes and tools as well.
  10. The inverse of Conway’s Law is also true. Just as the organization of your team influences your code, your code is a reflection of your team. Use that knowledge to improve your team.