🚀 Achieving Technical Excellence in Your Software Teams (Peter Gfader)

Discover how to achieve technical excellence in your software teams by embracing Conway's Law, managing technical debt, and implementing TDD, pair programming, continuous deployment, feature flags, and more.

Key takeaways
  1. Conway’s Law: The architecture of a system reflects the communication structure of the organization that designed it.
  2. Technical debt: The cost of additional rework caused by choosing an easy solution now instead of using a better approach that would take longer.
  3. TDD (Test-Driven Development): A software development process that relies on the repetition of a very short development cycle: first the developer writes a failing automated test case that defines a desired improvement or new function, then produces the minimum amount of code to pass that test, and finally refactors the new code to acceptable standards.
  4. Pair programming: Two programmers work together at one workstation. One, the driver, writes code while the other, the observer or navigator, reviews each line of code as it is typed in. The two programmers switch roles frequently.
  5. Continuous deployment: A software engineering practice where code changes are automatically built, tested, and deployed to production on a regular basis.
  6. Feature flags: A software development technique that allows engineers to enable or disable features in production without deploying new code.
  7. Definition of done: A clear and concise statement of the criteria that must be met before a user story or other piece of work can be considered complete.
  8. Retrospectives: A meeting held at the end of a sprint or iteration to reflect on what went well, what could be improved, and what actions will be taken to improve the team’s performance in the next sprint.
  9. Code reviews: A software development practice in which one or more programmers review the code of another programmer.
  10. Technical excellence: A state of high quality and effectiveness in software development practices and outcomes.