Modern Software Engineering • Dave Farley & Steve Smith

Learn modern software engineering best practices with this talk on iterating quickly, separating concerns, and cultivating craftsmanship, featuring Dave Farley and Steve Smith.

Key takeaways
  • The importance of shipping small and iterating fast: “You try something out, you say is that, does that get me closer or further away from my hit the target.”
  • The limitations of perfection: “You don’t have to understand how you get to the destination. That’s the beauty of engineering.”
  • The role of books and learning: “I would never be exposed to that kind of change because I was lucky enough to have a book that pointed me in the right direction.”
  • The value of separating concerns: “Each step that we’d like to take? How would we understand that step? How would we control that step?”
  • The need to work in small steps: “One of the things that I talk about in the book is I don’t think you can achieve anything without iteration.”
  • The importance of feedback: “It’s not about being a genius or a rockstar, it’s about getting feedback.”
  • The role of experimentation: “If you want to work experimentally, you’ve got to be willing to take risks and try new things.”
  • The importance of craftsmanship: “I think craftsmanship is vital. It’s the ability to do something that nobody else can.”
  • The need to be willing to learn: “If you don’t know, you’ve got to be willing to learn.”
  • The importance of tools: “I don’t think people understand that most of the time, the biggest bottleneck is not the technology itself, but our understanding of how to use it.”
  • The need to iterate: “You’ve got to be willing to iterate. You’ve got to be willing to make changes.”
  • The importance of fitting in with the system: “You’ve got to be able to fit in with the system, with the technology, with the way the team is working.”
  • The importance of non-technical knowledge: “I think sometimes people get so focused on the technical bits that they forget that engineering is a social activity.”
  • The importance of reflection: “The whole book, in a way, is about how you can get better at creating software and how that can come through reflection.”
  • The importance of Continuous Delivery: “It allows you to make a change and then get feedback and then make another change…”
  • The value of small, incremental improvements: “One of the things that I think is important is small, incremental improvements. That’s where you get the big gains.”