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 views•13 slides
Geecon10: Object Oriented for nonbelievers by
Geecon10: Object Oriented for nonbelieversGeecon10: Object Oriented for nonbelievers
Geecon10: Object Oriented for nonbelieversBruno Bossola
442 views•62 slides
Effective entrepreneurship for developers by
Effective entrepreneurship for developersEffective entrepreneurship for developers
Effective entrepreneurship for developersCarlos Ble
963 views•25 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 views•29 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 views•165 slides
Clean Code Pt I by
Clean Code Pt IClean Code Pt I
Clean Code Pt IPaul Boocock
529 views•19 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 views•150 slides
ALTNET by
ALTNETALTNET
ALTNETAntonio Radesca
227 views•15 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 views•97 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 views•85 slides
Solid principes by
Solid principesSolid principes
Solid principesSteven Ndaye
420 views•24 slides
Orientation session by
Orientation sessionOrientation session
Orientation sessionGoogleDeveloperStude2
225 views•37 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 Nadalin•16.5K views
Software as a craft (February, 2018) by Rachel M. Carmena
Software as a craft (February, 2018)Software as a craft (February, 2018)
Software as a craft (February, 2018)
Rachel M. Carmena•1.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 Heilmann•7.6K views
Solid principes by Steven Ndaye
Solid principesSolid principes
Solid principes
Steven Ndaye•420 views
Recipe of a rockstar developer by Topu Newaj
Recipe of a rockstar developerRecipe of a rockstar developer
Recipe of a rockstar developer
Topu Newaj•1.3K views
Developing solid applications by Nilesh Bangar
Developing solid applicationsDeveloping solid applications
Developing solid applications
Nilesh Bangar•1.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
FusionCharts•4.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
mtoppa•11.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 Mancuso•1.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 McCabe•459 views
The OO Design Principles by Steve Zhang
The OO Design PrinciplesThe OO Design Principles
The OO Design Principles
Steve Zhang•8.1K views
Os Long by oscon2007
Os LongOs Long
Os Long
oscon2007•369 views
DDD In Agile by Skills Matter
DDD In Agile   DDD In Agile
DDD In Agile
Skills Matter•7.5K views
Software quality by 5minpause
Software qualitySoftware quality
Software quality
5minpause•27 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
sdavis6b•540 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 views•62 slides
ShortStory_qlora.pptx by
ShortStory_qlora.pptxShortStory_qlora.pptx
ShortStory_qlora.pptxpranathikrishna22
5 views•10 slides
Introduction to Git Source Control by
Introduction to Git Source ControlIntroduction to Git Source Control
Introduction to Git Source ControlJohn Valentino
5 views•18 slides
Airline Booking Software by
Airline Booking SoftwareAirline Booking Software
Airline Booking SoftwareSharmiMehta
6 views•26 slides
MS PowerPoint.pptx by
MS PowerPoint.pptxMS PowerPoint.pptx
MS PowerPoint.pptxLitty Sylus
5 views•14 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 views•33 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üller•41 views
Introduction to Git Source Control by John Valentino
Introduction to Git Source ControlIntroduction to Git Source Control
Introduction to Git Source Control
John Valentino•5 views
Airline Booking Software by SharmiMehta
Airline Booking SoftwareAirline Booking Software
Airline Booking Software
SharmiMehta•6 views
MS PowerPoint.pptx by Litty Sylus
MS PowerPoint.pptxMS PowerPoint.pptx
MS PowerPoint.pptx
Litty Sylus•5 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...
Ra'Fat Al-Msie'deen•10 views
WebAssembly by Jens Siebert
WebAssemblyWebAssembly
WebAssembly
Jens Siebert•52 views
Fleet Management Software in India by Fleetable
Fleet Management Software in India Fleet Management Software in India
Fleet Management Software in India
Fleetable•12 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 Onofri•890 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...
TomHalpin9•6 views
360 graden fabriek by info33492
360 graden fabriek360 graden fabriek
360 graden fabriek
info33492•138 views
The Era of Large Language Models.pptx by AbdulVahedShaik
The Era of Large Language Models.pptxThe Era of Large Language Models.pptx
The Era of Large Language Models.pptx
AbdulVahedShaik•7 views
Advanced API Mocking Techniques by Dimpy Adhikary
Advanced API Mocking TechniquesAdvanced API Mocking Techniques
Advanced API Mocking Techniques
Dimpy Adhikary•23 views
Unleash The Monkeys by Jacob Duijzer
Unleash The MonkeysUnleash The Monkeys
Unleash The Monkeys
Jacob Duijzer•8 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 Valentino•6 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 Coughlan•5 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 Zamana•11 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 Stubert•21 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 Hocke•35 views

Crafting Great Code