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

Achieve technical excellence in your software teams by mastering software development, practicing technical skills, and understanding business requirements.

Key takeaways
  • Achieving technical excellence is about mastering software development, not just writing code. It requires understanding of software craftsmanship, technical skills, and business understanding.
  • Practicing technical excellence:
    • Learn from failures, don’t fear them.
    • The more you know how to do something, the less you need to do it.
    • Complexity is a management problem, not an engineering problem.
  • Software craftsmanship:
    • Empathy is a key element of software craftsmanship.
    • Technical excellence is not just about writing code, but also about communicating with others.
    • Don’t just do what’s asked, but also try to understand why it’s being asked.
  • Agile development:
    • Just-in-time learning is key in agile development.
    • Use pair programming to learn from each other.
    • Separate teams should not be forced, but teams should be separated by skills.
  • Technical debt:
    • Don’t use the term “technical debt”, it’s not a debt, but a misused term.
    • Invest in quality, not in shortcuts.
    • Technical excellence is not just about writing good code, but also about having a sustainable pace.
  • Architecture:
    • Conway’s law: organizations that design systems they cannot operate, cannot operate the systems they design.
    • Try to keep the architecture simple, don’t let it get too complex.
  • Code reviews:
    • Code reviews are not just about finding bugs, but also about learning from each other.
    • Use code reviews to learn and improve.
  • Stealth mode:
    • Working in stealth mode can be beneficial, as it allows for a sustainable pace and a better product.
    • New products should not be handed over to external companies, but should be integrated into the existing workflow.
  • Failures:
    • Failures are essential for learning and growth.
    • Don’t be afraid to fail, but also don’t repeat the same mistakes.
  • Software development:
    • Software development should be a collaboration between business and development teams.
    • Business teams should understand the technical implications of their requests.
    • Developers should understand the business side of things.