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.

Crafting Great Code

1,435 views

Published on

A talk given at BigSky Dev Con in Bozeman, Montana, June 10, 2017, by Harold Shinsato.

Published in: Software
  • Be the first to comment

  • Be the first to like this

Crafting Great Code

  1. 1. Crafting Great Code Harold Shinsato, Montana Code School, Open Space Institute BigSkyDevCon June 10, 2017
  2. 2. Overview Why Bother? Mastery  Modern Agile & the Software Craftsmanship Manifesto  Frontiers of Psychology & Education Leading Practices  Test Drive Development, Design Patterns, S.O.L.I.D Culture  Team Sport  Social Tech Taking it Home
  3. 3. Why Craft Great Code? Why Bother? What do you think?
  4. 4. Mastery
  5. 5. Community & Conferences  Attend, Support, Engage!
  6. 6. Legacy & Modern Agile We are uncovering better ways of developing software by doing and helping others do it. Through this work we have come to value … http://agilemanifesto.org http://modernagile.org
  7. 7. Software Craftsmanship Manifesto Raising the bar. As aspiring Software Craftsmen we are raising the bar of professional software development by practicing it and helping others learn the craft. Through this work we have come to value:  Not only working software, but also well-crafted software  Not only responding to change, but also steadily adding value.  Not only individuals and interactions, but also a community of professionals.  Not only customer collaboration, but also productive partnerships That is, in pursuit of the items on the left we have found the items on the right to be indispensable. © 2009, the undersigned.this statement may be freely copied in any form,but only in its entirety through this notice. http://manifesto.softwarecraftsmanship.org
  8. 8. From Dr. Christopher Avery http://leadershipgift.com
  9. 9. ”Flow” – Mihály Csíkszentmihályi
  10. 10. Deliberate Practice K. Anders Ericsson
  11. 11. Angela Duckworth
  12. 12. Carol Dweck – Fixed vs. Growth Mindset
  13. 13. Daniel Coyle – Myelin Sheaths
  14. 14. Meta learning & Metacognition Timothy Ferris – 6 months to mastery - http://sebastianmarshall.com/community/110017 John Flavel – > 35+ years research Thinking About Learning = More Learning
  15. 15. “Einstellung”
  16. 16. Paulo Friere – Teaching Peasants
  17. 17. Sharon Bowman – Better Trainings
  18. 18. Leading Practices
  19. 19. Clean Code – “Uncle” Bob Martin cleancoders.com
  20. 20. Test Driven Development Write FAILING Test First Write Simplest Code To Make Test Pass Refactor
  21. 21. Refactoring – From Smalltalk
  22. 22. Code Smells  Duplicate Code (DRY Principle)  Long Methods and Classes  Long Parameter Lists  Comments
  23. 23. Clever Code “Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” - Brian Kernigan
  24. 24. Optimizing Code “We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.” - Donald Knuth
  25. 25. S.O.L.I.D. Principles  SRP: Single Responsibility Principle - Do One Thing Well  OCP: Open Closed Principle - Open for Extension/Closed for Modification  LSP: Liskov Substitution Principle - Make subclasses usable where the superclass is  ISP: Interface Segregation Principle – Separate functionality that might change independently  DIP: Dependency Inversion Principle – High level modules independent of lower level with abstractions
  26. 26. Design Patterns
  27. 27. Code Katas & Dojos “Pragmatic” Dave Thomas -> Martial Arts  http://codekata.com/kata/codekata-how-it-started/ Coding Dojo inspired by Coding Katas Randori Technique 2003 Paris Coding Dojo  http://www.xpdays.de/2005/sessions/The_Coders_Dojo.html
  28. 28. Mob Programming http://mobprogramming.org
  29. 29. #noestimates #zerobugs
  30. 30. Culture
  31. 31. Team Sport Lone Wolf Cowboy Coder
  32. 32. Google’s Project Aristotle  Harvard Business School Professor - Amy Edmondson  https://www.nytimes.com/2016/02/28/magazine/what-google-learned-from-its- quest-to-build-the-perfect-team.html  180 Team From Across Google  SUCCESS FACTORS – Team Norms & Culture  Psychological Safety  Turn Taking – Overall Equal Participation
  33. 33. Charles Duhigg – “Power of Habit” guy
  34. 34. Social Technology
  35. 35. Jim & Michele McCarthy Bozo Bit Check-in Protocol Ask For Help Core Protocols
  36. 36. Open Space & Unconferences
  37. 37. Liberating Structures
  38. 38. Lean Coffee™ http://leancoffee.org
  39. 39. Improv!
  40. 40. Conversations  Non-Violent Communication - Marshall Rosenberg  Crucial Conversations – Patterson et. al.  Fierce Conversations – Susan Scott  Clean Language – David Grove https://www.infoq.com/interviews/andrea-chiou-clean-language-clean-questions- agile2014  Language of Emotions – Karla McClaren  The Five Love Languages – Gary Chapman
  41. 41. THANKS!  Slideshare Link To Be Posted to my Blog  http://shinsato.com  harold@shinsato.com Questions? Comments?

×