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

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.