Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Agile Software Development for Software Developers

Agile Software Development for Software Developers

My Thundertalk: Agile Software Development for Software Developers

It explains the principles and technical foundations necessary to do agile software development.

Christian Bäuerlein

November 28, 2019
Tweet

More Decks by Christian Bäuerlein

Other Decks in Programming

Transcript

  1. • How long should a daily scrum take? • How

    can I fit more work in my two weeks cycle? • What does is take go become a certified SCRUM master? What this talk is not about
  2. The Waterfall No idea, if all of this makes sense

    and if we are doing well. Deadline
  3. The Waterfall Test-and-fix interval • Seems To take forever •

    Guaranteed to break time planning • Nobody is happy at this time
  4. Kent Beck • Co-founded XP • “Smalltalk Best Practice Patterns”

    • “Test-Driven Development by Example” • Started the xUnit trend
  5. Martin Fowler • “Refactoring: Improving the Design of Existing Code”

    • “Patterns of Enterprise Application Architecture“ • Popularized the Dependency Injection pattern
  6. Dave Thomas • “Programming Ruby” aka The Pick Axe •

    “The Pragmatic Programmer” • Coined the term “DRY” • runs The Pragmatic Bookshelf
  7. Note: Please compare the books listed here with your weekly

    “Which books should I read to become a better programmer” Twitter/Reddit/Hacker News thread. ;) These are very good programmers!
  8. But your estimations are bad, because estimations are always bad

    and you run out of time… DONE DONE DONE DONE
  9. So you are running out time (or whatever your limitation

    is) DONE DONE DONE DONE MAYBE DONE DONE? Next version? #FIXME Forgotten
  10. Software only delivers value when we ship it and put

    it to use! If we wait until everything is finished, it takes a long time until we get any value
  11. • Let’s plan for multiple releases from the very beginning.

    Multiple releases are easier to manage and deliver value sooner. • We can respond to the changing needs and inputs of business/management
  12. “This still sounds a lot like a management process. I

    am a developer, is this really my concern?”
  13. • If it takes two days to create a build…

    • If it takes three days of manual QA to create a build... • If it takes one special person to create the build… • If it takes this one five year old computer that no one dares to update, because this one version of the dependency does not compile on a new OS to create the build….
  14. •We cannot work effectively in a world of defects •To

    be able iterate, the software needs to be nearly bug-free all the time •We need to check everything, all the time
  15. ØFrequent Delivery ØRelease Feature by Feature ØReady to ship at

    all times ØEnsure software works as expected
  16. Refactoring Code refactoring is the process of restructuring existing computer

    code without changing its external behavior. – Wikipedia Refactoring happens within minutes, not within months. Again, in order to refactor efficiently, you need to be able to check everything all the time.
  17. ØFrequent Delivery ØRelease Feature by Feature ØReady to ship at

    all times ØEnsure software works as expected ØEnsure future changes are easy
  18. Either changing stuff is easy, this means it is good

    code. Or changing stuff is hard, this means you have a problem.
  19. Hurrying will slow you down • Worse: The timing! It

    will slow you down when you least need it, close to the end of the project. • Dirty code slows you down. If code is clean, the next features go in smoothly. If it gets dirty, everything takes just a bit longer.
  20. Defects create defects Folgefehler: Your math teacher lied to you!

    If your code is faulty or has side-effects, new code building upon this code will be even more faulty with more side-effects. Fixing, maintaining or extending these layers of faulty code will take even more time!
  21. If your tech is not agile, you can not be

    agile! Automated Builds Always be able to ship! Automated Testing Everything must work all the time! Refactoring Design must improve continually, to make future changes easy!
  22. Responsibility Would you let your [product owner, scrum master, whatever]

    decide on: • Code Editor • Programming Language • Design Patterns Probably not!
  23. So why let them decide on requirements of technical quality?

    The need for refactoring? The test coverage? Can this really part of their role? Do the really know? Can they really decide?
  24. So why let them decide on requirements of technical quality?

    The need for refactoring? The test coverage? Can this really part of their role? Do the really know? Can they really decide? No! Only you. You are the coder. You are the expert.
  25. Responsibility and authority are aligned • The team itself must

    decide how much work it can accomplish in the next cycle. • The team itself is responsible for the quality of the solution.
  26. It’s hard Producing good software is very very complicated. It

    takes a lot of effort and care and passion.
  27. It’s hard Producing good software is very very complicated. It

    takes a lot of effort and care and passion. It takes experts like you to make sure that all of this is worthwhile.