Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Waste Driven Development - Agile Coaching Serbia Meetup

717 views

Published on

These are the slides I presented during Agile Coaching Serbia Meetup on 2017 at Novi Sad.

Published in: Software
  • Be the first to comment

Waste Driven Development - Agile Coaching Serbia Meetup

  1. 1. Waste Driven Development Lean Thinking for Software Developers LEMi ORHAN ERGiN agile software craftsman @ iyzico Fighting with
  2. 2. LEMi ORHAN ERGiN agile software craftsman @ iyzico /lemiorhan lemiorhanergin.com @lemiorhan agile practice lead at iyzico Sony, eBay/GittiGidiyor & ACM founder of Software Craftsmanship Turkey ex product owner of Agile Turkey Summit organized 200+ meetups and 3 conferences
  3. 3. we are naive optimistic by default assumes all goes well of course we’ll succeed
  4. 4. and over-confident super heroes smartest guy on planet write perfect code design the best do it right for the first time understand customer needs manage people & projects build elegant solutions
  5. 5. http://imgur.com/a/Smr5d Are you scared of touching your source code? Welcome to the club! Legacy code consumes your life energy, sucks your blood, forces you hack your code to survive. Therefore we call it zombie software, not legacy anymore
  6. 6. http://youhadonejob.org Less than 0.01 percent That’s how many consumer mobile apps will be considered a financial success by their creators at the end of 2018, according to new research from Gartner Inc. http://www.forbes.com/sites/connieguglielmo/2014/01/13/ mobile-apps-may-not-pave-the-way-to-developer-riches-sales- average-less-than-1250-a-day Mobile Apps Won't Lead To Riches For Most Developers by Connie Guglielmo
  7. 7. http://boeingboeing2.deviantart.com/art/Well-time-to-fly-another-airline-516735690 Licensed under Creative Commons BY-NC 3.0 We have time to fix bugs, but no time for writing better We don’t refactor and write tests because we don’t have enough time. But we have time for debugging, hacking code and fixing bugs.
  8. 8. http://forgifs.com/gallery/v/Funny/Unloading-cement-pipe-onto-tires.gif.html Processes do not build products, but people do Processes help people improve the way they build products, increase motivation and cultivate an healthy environment. In the end, the efficiency of processes are important, but people are crucial.
  9. 9. build the wrong thing build the thing wrong poor quality bugs and defects slow and unproductive endless dependencies redundant tasks drowned in waste error error error error error error error error error error error error error error error error error error error error error error error error error error error error error error error error error error error error error error error error
  10. 10. the languages we code the technologies we use the refactorings we need the dependencies we have the processes we follow the feelings we have Customers don’t care
  11. 11. their problems to be understood and solvedCustomers really care
  12. 12. think like a Customer our job should be maximizing the values we can deliver
  13. 13. LEAN is a MINDSET
  14. 14. Maximizing value for the end customer by removing waste LEAN is a MINDSET
  15. 15. value Any action or process that a customer would be willing to pay for
  16. 16. doesn’t add value to the product makes you slow down decrease productivity makes us open to do mistakes increase comlexity WASTE
  17. 17. Let’s find waste and eliminate in software development
  18. 18. THE code ITSELF IS WASTE
  19. 19. more code more defects Industry average is about 15 - 50 errors per 1000 lines 
 of delivered code. Steve McConnell from of the book “Code Complete”
  20. 20. valueless developments The very first value of software is to tolerate and facilitate on-going changes Robert C. Martin
  21. 21. Working topics on the left does not mean we are good at using the topics on the right
  22. 22. debugging bug fixing manual deployments manual testing unmerged branches big upfront design comments LOGGING framework addiction highly coupled design bıg RELEASES no security concerns HAVING SILOSpackage organization
  23. 23. FOCUS ON DESIGN & QUALITY Design Patterns Refactoring Techniques OOP/FP/RP Principles Clean Code Principles Automated testing Acceptance testing Test Driven Design (TDD) Code review techniques Pair programming culture
  24. 24. KEEP YOUR REPO TINY Slit your code into multiple modules / plugins Keep your commit graph clean Never allow long-living branches Do not hesitate to delete code Refactor code via SOLID principles Keep independent parts in separate repos Maintain modules in a single mono repo
  25. 25. “We zombify people by using wrong practices” Niels Pflaeging Management Exorcist from his talk at Agile Turkey Summit 2014
  26. 26. Develop and refactor Evolutionary design Fully automated testing Make codebase clean Frequent short releases Reproduce in test and fix Get feedback and release Develop and refactor Evolutionary design Fully automated testing Make codebase clean Frequent short releases Reproduce in test and fix Get feedback and release Develop and bug fix Big upfront design Manual testing Add comments to codebase Big releases Fix and test Release and get feedback
  27. 27. waste driven development Long-lasting defects 99% done tasks Rework at the end Missing continuous integration Manual release steps Working alone Only author knows the code Unsynchronized branches Hesitation to commit the changes Manual testing again and again
  28. 28. Long-lasting defects 99% done tasks Rework at the end Missing continuous integration Manual release steps Working alone Only author knows the code Unsynchronized branches Hesitation to commit the changes Manual testing again and againDesign by Tests (TDD) Calculate defect resolution times think differently success Define definition of done and obey Refactor continuously Keep feature branches short Automatic release steps Program in peers and as the whole team Never release unreviewed code to prod Checkin codebase frequently Commit early, commit often, perfect later
  29. 29. define standards everyone should have same understanding and base Analysis Testing Architecture Release & Deployment Bug Fixing Database Structure Error Handling Logging Quality Metrics Web Services / API Coding / Naming Code Review Commit Messages Messaging
  30. 30. version everything continuous delivery starts with efficient use of SCMs Source code Deployment scripts Application configuration Auto generated codes Automated tests Static content (like images) Rewrite rules Server configurations Database schema changes Dependency configurations
  31. 31. automize everything remove waste, push to extremes, slow down to go fast Running unit tests Building / packaging Code analysis Deployments Functional testing Releases Cache cleanup Performance monitoring Regression testing Rollbacks Scaling Integration of all commits Notifying warning or errors Reporting
  32. 32. radical transparency openness, honesty, collaboration and improvement requires Release dates Critical defects in production Status of the project SLAs (Service Level Agreements) Bugs in new features Agreed standards Definition of Done Names of on-call support people Quality metrics of the software Velocity of the team Lead and cycle times Business value delivered Moods of team members Vacation dates of people
  33. 33. documentation IS WASTE
  34. 34. foreword Documentation is not a way of communication
  35. 35. It’s sad, but have to admit No one reads our documentation Even we do not read what we write Information becomes obsolete too fast Reading analysis is too booooring!
  36. 36. really ??? Developers write documents A LOT
  37. 37. Commit messages Branch names Commit graph Log messages Production code Test code Release notes Code review comments Developers write documents Configurations Message flows User guides Module designs Standards and guidelines Support knowledge base Flow diagrams API documentation
  38. 38. never ending story Estimations Management practices Performance appraisals Status Tracking Time Tracking Control of working hours Working at office Overtimes Meetings Dress codes Clean desk policy Tools and OS Turnovers Motivation Micro management Office space
  39. 39. challenge your paradigms Visualize the flows and observe Detect waste and the root causes Take action to improve Inspect and Adapt
  40. 40. LEMi ORHAN ERGiN agile software craftsman @ iyzico /lemiorhan lemiorhanergin.com @lemiorhan

×