Crafting Great Code

Harold Shinsato
Harold ShinsatoSoftware Developer at Montana Agile Culture House
Crafting Great Code
Harold Shinsato, Montana Code School, Open Space Institute
BigSkyDevCon June 10, 2017
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
Why Craft Great Code?
Why Bother?
What do you think?
Mastery
Community & Conferences
 Attend, Support, Engage!
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
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
From Dr. Christopher Avery
http://leadershipgift.com
”Flow” – Mihály Csíkszentmihályi
Deliberate Practice
K. Anders Ericsson
Angela Duckworth
Carol Dweck –
Fixed vs. Growth Mindset
Daniel Coyle – Myelin Sheaths
Crafting Great Code
Meta learning & Metacognition
Timothy Ferris – 6 months to mastery -
http://sebastianmarshall.com/community/110017
John Flavel – > 35+ years research
Thinking About Learning = More Learning
“Einstellung”
Paulo Friere – Teaching Peasants
Sharon Bowman – Better Trainings
Leading Practices
Clean Code – “Uncle” Bob Martin
cleancoders.com
Test Driven Development
Write FAILING Test First
Write
Simplest
Code To
Make Test
Pass
Refactor
Refactoring – From Smalltalk
Code Smells
 Duplicate Code (DRY Principle)
 Long Methods and Classes
 Long Parameter Lists
 Comments
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
Optimizing Code
“We should forget about small efficiencies,
say about 97% of the time: premature
optimization is the root of all evil.”
- Donald Knuth
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
Design Patterns
Crafting Great Code
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
Mob Programming
http://mobprogramming.org
#noestimates #zerobugs
Culture
Team Sport
Lone Wolf
Cowboy Coder
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
Charles Duhigg – “Power of Habit” guy
Social Technology
Jim & Michele McCarthy
Bozo Bit
Check-in Protocol
Ask For Help
Core Protocols
Open Space & Unconferences
Liberating Structures
Lean Coffee™
http://leancoffee.org
Improv!
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
THANKS!
 Slideshare Link To Be Posted to my Blog
 http://shinsato.com
 harold@shinsato.com
Questions?
Comments?
1 of 43

Recommended

Writing Clean Code by
Writing Clean CodeWriting Clean Code
Writing Clean CodeNascenia IT
505 views13 slides
Geecon10: Object Oriented for nonbelievers by
Geecon10: Object Oriented for nonbelieversGeecon10: Object Oriented for nonbelievers
Geecon10: Object Oriented for nonbelieversBruno Bossola
442 views62 slides
Effective entrepreneurship for developers by
Effective entrepreneurship for developersEffective entrepreneurship for developers
Effective entrepreneurship for developersCarlos Ble
963 views25 slides
Code Quality for a Fresh Start by
Code Quality for a Fresh StartCode Quality for a Fresh Start
Code Quality for a Fresh StartKosala Nuwan Perera
588 views29 slides
The rocket internet experience @ PHP.TO.START 2013 in Turin by
The rocket internet experience @ PHP.TO.START 2013 in TurinThe rocket internet experience @ PHP.TO.START 2013 in Turin
The rocket internet experience @ PHP.TO.START 2013 in TurinAlessandro Nadalin
8.2K views165 slides
Clean Code Pt I by
Clean Code Pt IClean Code Pt I
Clean Code Pt IPaul Boocock
529 views19 slides

More Related Content

Similar to Crafting Great Code

A Rocket Internet experience @ ForumPHP Paris 2013 by
A Rocket Internet experience @ ForumPHP Paris 2013A Rocket Internet experience @ ForumPHP Paris 2013
A Rocket Internet experience @ ForumPHP Paris 2013Alessandro Nadalin
16.5K views150 slides
ALTNET by
ALTNETALTNET
ALTNETAntonio Radesca
227 views15 slides
Software as a craft (February, 2018) by
Software as a craft (February, 2018)Software as a craft (February, 2018)
Software as a craft (February, 2018)Rachel M. Carmena
1.5K views97 slides
Planning JavaScript and Ajax for larger teams by
Planning JavaScript and Ajax for larger teamsPlanning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsChristian Heilmann
7.6K views85 slides
Solid principes by
Solid principesSolid principes
Solid principesSteven Ndaye
420 views24 slides
Orientation session by
Orientation sessionOrientation session
Orientation sessionGoogleDeveloperStude2
225 views37 slides

Similar to Crafting Great Code(20)

A Rocket Internet experience @ ForumPHP Paris 2013 by Alessandro Nadalin
A Rocket Internet experience @ ForumPHP Paris 2013A Rocket Internet experience @ ForumPHP Paris 2013
A Rocket Internet experience @ ForumPHP Paris 2013
Alessandro Nadalin16.5K views
Planning JavaScript and Ajax for larger teams by Christian Heilmann
Planning JavaScript and Ajax for larger teamsPlanning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teams
Christian Heilmann7.6K views
Recipe of a rockstar developer by Topu Newaj
Recipe of a rockstar developerRecipe of a rockstar developer
Recipe of a rockstar developer
Topu Newaj1.3K views
Developing solid applications by Nilesh Bangar
Developing solid applicationsDeveloping solid applications
Developing solid applications
Nilesh Bangar1.4K views
15 Experts on the Art of JavaScript Programming by FusionCharts
15 Experts on the Art of JavaScript Programming15 Experts on the Art of JavaScript Programming
15 Experts on the Art of JavaScript Programming
FusionCharts4.8K views
WordCamp Nashville: Clean Code for WordPress by mtoppa
WordCamp Nashville: Clean Code for WordPressWordCamp Nashville: Clean Code for WordPress
WordCamp Nashville: Clean Code for WordPress
mtoppa11.2K views
Software Craftsmanship - JAX London 2011 by Sandro Mancuso
Software Craftsmanship - JAX London 2011Software Craftsmanship - JAX London 2011
Software Craftsmanship - JAX London 2011
Sandro Mancuso1.6K views
CF Camp 2013 Software Craftsmanship for CFML Developers by Kev McCabe
CF Camp 2013 Software Craftsmanship for CFML DevelopersCF Camp 2013 Software Craftsmanship for CFML Developers
CF Camp 2013 Software Craftsmanship for CFML Developers
Kev McCabe459 views
The OO Design Principles by Steve Zhang
The OO Design PrinciplesThe OO Design Principles
The OO Design Principles
Steve Zhang8.1K views
30% faster coder on-boarding when you have a code cookbook by Gabriel Paunescu 🤖
30% faster coder on-boarding when you have a code cookbook30% faster coder on-boarding when you have a code cookbook
30% faster coder on-boarding when you have a code cookbook
Software quality by 5minpause
Software qualitySoftware quality
Software quality
5minpause27 views
UCD / IxD Introduction - User centric design, interaction design by sdavis6b
UCD / IxD Introduction - User centric design, interaction designUCD / IxD Introduction - User centric design, interaction design
UCD / IxD Introduction - User centric design, interaction design
sdavis6b540 views

Recently uploaded

.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra... by
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra....NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra...
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra...Marc Müller
41 views62 slides
ShortStory_qlora.pptx by
ShortStory_qlora.pptxShortStory_qlora.pptx
ShortStory_qlora.pptxpranathikrishna22
5 views10 slides
Introduction to Git Source Control by
Introduction to Git Source ControlIntroduction to Git Source Control
Introduction to Git Source ControlJohn Valentino
5 views18 slides
Airline Booking Software by
Airline Booking SoftwareAirline Booking Software
Airline Booking SoftwareSharmiMehta
6 views26 slides
MS PowerPoint.pptx by
MS PowerPoint.pptxMS PowerPoint.pptx
MS PowerPoint.pptxLitty Sylus
5 views14 slides
Software evolution understanding: Automatic extraction of software identifier... by
Software evolution understanding: Automatic extraction of software identifier...Software evolution understanding: Automatic extraction of software identifier...
Software evolution understanding: Automatic extraction of software identifier...Ra'Fat Al-Msie'deen
10 views33 slides

Recently uploaded(20)

.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra... by Marc Müller
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra....NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra...
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra...
Marc Müller41 views
Introduction to Git Source Control by John Valentino
Introduction to Git Source ControlIntroduction to Git Source Control
Introduction to Git Source Control
John Valentino5 views
Airline Booking Software by SharmiMehta
Airline Booking SoftwareAirline Booking Software
Airline Booking Software
SharmiMehta6 views
Software evolution understanding: Automatic extraction of software identifier... by Ra'Fat Al-Msie'deen
Software evolution understanding: Automatic extraction of software identifier...Software evolution understanding: Automatic extraction of software identifier...
Software evolution understanding: Automatic extraction of software identifier...
Fleet Management Software in India by Fleetable
Fleet Management Software in India Fleet Management Software in India
Fleet Management Software in India
Fleetable12 views
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ... by Donato Onofri
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...
Donato Onofri890 views
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated... by TomHalpin9
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...
TomHalpin96 views
360 graden fabriek by info33492
360 graden fabriek360 graden fabriek
360 graden fabriek
info33492138 views
Advanced API Mocking Techniques by Dimpy Adhikary
Advanced API Mocking TechniquesAdvanced API Mocking Techniques
Advanced API Mocking Techniques
Dimpy Adhikary23 views
Quality Engineer: A Day in the Life by John Valentino
Quality Engineer: A Day in the LifeQuality Engineer: A Day in the Life
Quality Engineer: A Day in the Life
John Valentino6 views
FOSSLight Community Day 2023-11-30 by Shane Coughlan
FOSSLight Community Day 2023-11-30FOSSLight Community Day 2023-11-30
FOSSLight Community Day 2023-11-30
Shane Coughlan5 views
Copilot Prompting Toolkit_All Resources.pdf by Riccardo Zamana
Copilot Prompting Toolkit_All Resources.pdfCopilot Prompting Toolkit_All Resources.pdf
Copilot Prompting Toolkit_All Resources.pdf
Riccardo Zamana11 views
Ports-and-Adapters Architecture for Embedded HMI by Burkhard Stubert
Ports-and-Adapters Architecture for Embedded HMIPorts-and-Adapters Architecture for Embedded HMI
Ports-and-Adapters Architecture for Embedded HMI
Burkhard Stubert21 views
Team Transformation Tactics for Holistic Testing and Quality (Japan Symposium... by Lisi Hocke
Team Transformation Tactics for Holistic Testing and Quality (Japan Symposium...Team Transformation Tactics for Holistic Testing and Quality (Japan Symposium...
Team Transformation Tactics for Holistic Testing and Quality (Japan Symposium...
Lisi Hocke35 views

Crafting Great Code