SlideShare a Scribd company logo
$ whoami
 Developer at Redgate
 Founder of Cambridge Software Craftsmanship
Community
 Co-organiser of DDD East Anglia
 Get in touch!
@alastairs / prognet@alastairsmith.me.uk
What is Craftsmanship?
https://commons.wikimedia.org/wiki/File:Gold_artefacts,_Victoria_%26_Albert_Museum,_London_-_DSCF0338.JPG
https://commons.wikimedia.org/wiki/File:Steinmetz.jpg
https://commons.wikimedia.org/wiki/File:Bundesarchiv_Bild_183-R92264,_Herbert_von_Karajan.jpg
https://www.flickr.com/photos/mirsasha/8041363691/
Is Software a Craft?
(metaphorically speaking)
Craft == skill, aptitude,
competence, proficiency
Professionalism == polished
skill, competence
methodic
al
delibera
te
consider
ed
Methodical
Deliberate
Considered
Mindfulness
http://rantswithintheundeadgod.blogspot.co.uk/2014/04/pragmatism-as-dead-end-for-new-atheism.html
A Software Craftsman’s
Toolkit
Finding the saws to sharpen
Technical Tools
Delivery Tools
WyrdLight.com http://en.wikipedia.org/wiki/File:SalisburyCathedral-wyrdlight-811508BCS.jpg
https://www.flickr.com/photos/pmillera4/9380481028/
Perfect is a
verb
https://johnrchildress.files.wordpress.com/2015/01/legos_render.jpg
Object-
Orientation
https://pragprog.com/magazines/2010-06/the-mikado-method
Zen and the Art of Refactoring
The Mikado Method, Manning Publications Co.
https://b2design.files.wordpress.com/2010/08/turnitupto11-header1.jpg
Personal Responsibility
Professionalism at work
Three Pillars
http://londoncapitalassetmanagement.co.uk/wp-content/uploads/2014/08/Pillars.jpg
Thank you for listening!
https://www.flickr.com/photos/uk_parliament/6546233741/

More Related Content

Similar to Complete code craft

A Question of Craftsmanship
A Question of CraftsmanshipA Question of Craftsmanship
A Question of Craftsmanship
Kevlin Henney
 
Digital Disruptions In the Arts - What's Next?
Digital Disruptions In the Arts - What's Next?Digital Disruptions In the Arts - What's Next?
Digital Disruptions In the Arts - What's Next?
Devon Smith
 
Digital Curation Technology: JHU Summit, October 2015
Digital Curation Technology: JHU Summit, October 2015Digital Curation Technology: JHU Summit, October 2015
Digital Curation Technology: JHU Summit, October 2015
The Metropolitan Museum of Art
 
Mastering Startup Pitching
Mastering Startup PitchingMastering Startup Pitching
Mastering Startup Pitching
Press42
 
HackconEU: Hackathons are for Hackers
HackconEU: Hackathons are for HackersHackconEU: Hackathons are for Hackers
HackconEU: Hackathons are for Hackers
Tim Messerschmidt
 
Lansing Maker Week
Lansing Maker WeekLansing Maker Week
Lansing Maker Week
steeri
 
A question of craftsmanship
A question of craftsmanshipA question of craftsmanship
A question of craftsmanshipAgileOnTheBeach
 
Knowledge Worker 2.0 - Power to the people
Knowledge Worker 2.0 - Power to the peopleKnowledge Worker 2.0 - Power to the people
Knowledge Worker 2.0 - Power to the people
Stephen Collins
 
Business of Front-end Web Development
Business of Front-end Web DevelopmentBusiness of Front-end Web Development
Business of Front-end Web Development
Rachel Andrew
 
Python + NoSQL in Animations
Python + NoSQL in AnimationsPython + NoSQL in Animations
Python + NoSQL in Animations
Shuen-Huei Guan
 
Incremental Persona, Lean UX Festival 2014
Incremental Persona, Lean UX Festival 2014Incremental Persona, Lean UX Festival 2014
Incremental Persona, Lean UX Festival 2014
Adrian Howard
 
Pachyderm and Steve
Pachyderm and StevePachyderm and Steve
Pachyderm and Steve
New Media Consortium
 
Publishing, Publishers, and Authors: What you need to know about Creative Com...
Publishing, Publishers, and Authors: What you need to know about Creative Com...Publishing, Publishers, and Authors: What you need to know about Creative Com...
Publishing, Publishers, and Authors: What you need to know about Creative Com...Greg Grossmeier
 
Digital capabilities now and in the world to come - Tunde Varga-Atkins
Digital capabilities now and in the world to come  - Tunde Varga-AtkinsDigital capabilities now and in the world to come  - Tunde Varga-Atkins
Digital capabilities now and in the world to come - Tunde Varga-Atkins
Tünde Varga-Atkins
 
Handout for Workforce Session at the HUD Sustainable Communities Grantee Conv...
Handout for Workforce Session at the HUD Sustainable Communities Grantee Conv...Handout for Workforce Session at the HUD Sustainable Communities Grantee Conv...
Handout for Workforce Session at the HUD Sustainable Communities Grantee Conv...
Kristin Wolff
 
Responsive Design for Complex Websites (IXDA Munich)
Responsive Design for Complex Websites (IXDA Munich)Responsive Design for Complex Websites (IXDA Munich)
Responsive Design for Complex Websites (IXDA Munich)
Sabine Berghaus
 
CC @ CSU East Bay Multimedia Graduate Forum
CC @ CSU East Bay Multimedia Graduate ForumCC @ CSU East Bay Multimedia Graduate Forum
CC @ CSU East Bay Multimedia Graduate ForumMike Linksvayer
 
Collaboration tools-and-web-204129
Collaboration tools-and-web-204129Collaboration tools-and-web-204129
Collaboration tools-and-web-204129guillaume86
 
Sadler niso-apr13
Sadler niso-apr13Sadler niso-apr13
WordCamp Brighton 2017 'Business toolkit how to de-risk' - David Lockie
WordCamp Brighton 2017 'Business toolkit   how to de-risk' - David LockieWordCamp Brighton 2017 'Business toolkit   how to de-risk' - David Lockie
WordCamp Brighton 2017 'Business toolkit how to de-risk' - David Lockie
Angry Creative (UK)
 

Similar to Complete code craft (20)

A Question of Craftsmanship
A Question of CraftsmanshipA Question of Craftsmanship
A Question of Craftsmanship
 
Digital Disruptions In the Arts - What's Next?
Digital Disruptions In the Arts - What's Next?Digital Disruptions In the Arts - What's Next?
Digital Disruptions In the Arts - What's Next?
 
Digital Curation Technology: JHU Summit, October 2015
Digital Curation Technology: JHU Summit, October 2015Digital Curation Technology: JHU Summit, October 2015
Digital Curation Technology: JHU Summit, October 2015
 
Mastering Startup Pitching
Mastering Startup PitchingMastering Startup Pitching
Mastering Startup Pitching
 
HackconEU: Hackathons are for Hackers
HackconEU: Hackathons are for HackersHackconEU: Hackathons are for Hackers
HackconEU: Hackathons are for Hackers
 
Lansing Maker Week
Lansing Maker WeekLansing Maker Week
Lansing Maker Week
 
A question of craftsmanship
A question of craftsmanshipA question of craftsmanship
A question of craftsmanship
 
Knowledge Worker 2.0 - Power to the people
Knowledge Worker 2.0 - Power to the peopleKnowledge Worker 2.0 - Power to the people
Knowledge Worker 2.0 - Power to the people
 
Business of Front-end Web Development
Business of Front-end Web DevelopmentBusiness of Front-end Web Development
Business of Front-end Web Development
 
Python + NoSQL in Animations
Python + NoSQL in AnimationsPython + NoSQL in Animations
Python + NoSQL in Animations
 
Incremental Persona, Lean UX Festival 2014
Incremental Persona, Lean UX Festival 2014Incremental Persona, Lean UX Festival 2014
Incremental Persona, Lean UX Festival 2014
 
Pachyderm and Steve
Pachyderm and StevePachyderm and Steve
Pachyderm and Steve
 
Publishing, Publishers, and Authors: What you need to know about Creative Com...
Publishing, Publishers, and Authors: What you need to know about Creative Com...Publishing, Publishers, and Authors: What you need to know about Creative Com...
Publishing, Publishers, and Authors: What you need to know about Creative Com...
 
Digital capabilities now and in the world to come - Tunde Varga-Atkins
Digital capabilities now and in the world to come  - Tunde Varga-AtkinsDigital capabilities now and in the world to come  - Tunde Varga-Atkins
Digital capabilities now and in the world to come - Tunde Varga-Atkins
 
Handout for Workforce Session at the HUD Sustainable Communities Grantee Conv...
Handout for Workforce Session at the HUD Sustainable Communities Grantee Conv...Handout for Workforce Session at the HUD Sustainable Communities Grantee Conv...
Handout for Workforce Session at the HUD Sustainable Communities Grantee Conv...
 
Responsive Design for Complex Websites (IXDA Munich)
Responsive Design for Complex Websites (IXDA Munich)Responsive Design for Complex Websites (IXDA Munich)
Responsive Design for Complex Websites (IXDA Munich)
 
CC @ CSU East Bay Multimedia Graduate Forum
CC @ CSU East Bay Multimedia Graduate ForumCC @ CSU East Bay Multimedia Graduate Forum
CC @ CSU East Bay Multimedia Graduate Forum
 
Collaboration tools-and-web-204129
Collaboration tools-and-web-204129Collaboration tools-and-web-204129
Collaboration tools-and-web-204129
 
Sadler niso-apr13
Sadler niso-apr13Sadler niso-apr13
Sadler niso-apr13
 
WordCamp Brighton 2017 'Business toolkit how to de-risk' - David Lockie
WordCamp Brighton 2017 'Business toolkit   how to de-risk' - David LockieWordCamp Brighton 2017 'Business toolkit   how to de-risk' - David Lockie
WordCamp Brighton 2017 'Business toolkit how to de-risk' - David Lockie
 

Recently uploaded

Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
Launch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in MinutesLaunch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in Minutes
Roshan Dwivedi
 
Enterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptxEnterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptx
QuickwayInfoSystems3
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
Boni García
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
e20449
 
Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)
abdulrafaychaudhry
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 

Recently uploaded (20)

Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
Launch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in MinutesLaunch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in Minutes
 
Enterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptxEnterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptx
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
 
Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 

Complete code craft

Editor's Notes

  1. What does Craftsmanship mean to you? What do you think of when you hear the word?
  2. Signatories: Uncle Bob, Micah Martin, Corey Haines, Dave Hoover, JB Rainsberger, Gary Berhardt, Adewale Oshineye, Ron Jeffries, …
  3. Craftsmanship is a desire to do a job well, for its own sake. It is the desire to take pride in your work. To me professionalism and craftsmanship are essentially synonyms. Programming is creative It's a skill that can be learned and developed to a high degree We experience a sense of achievement in improving Therefore, craftsmanship isn't a luxury, it's actually built into our chosen career!
  4. Systematic, orderly. E.g. TDD.
  5. Every step has a purpose, e.g., TDD
  6. GrahamH Something you have thought about, that is defensible when challenged.
  7. The very opposite of mindlessness: not an automaton, but an actively engaged participant. Opportunities to learn from your experiences and the wider industry. Challenge your principles and practices, and be prepared to have them challenged by others. Curiosity, not self-doubt.
  8. This is what Software Craftsmanship is all about! With a mindful attitude, we have the correct mindset to be pragmatic in our choices and decisions at work.
  9. Skip through these.
  10. A word on TDD. Not always appropriate; sometimes more is appropriate (e.g. ATDD), sometimes less (e.g. spike-and-stabilise). Also see Monitoring-Driven Development as an evolution. Make it work, then make it right. Red: Just enough of a test to fail Compilation failures count when necessary Run all the tests One expected failure Green Just enough code to pass the failing test – no more Run all the tests Refactor Remove duplication Tidy up
  11. Know your language well, but know your language’s paradigm better. Message-Orientation: Alan Kay. Classist OO vs. behavioural OO. IMO Behavioural OO is more interesting and powerful. Interfaces are contracts of behaviour, so don’t expose state on your interfaces. GoF advice: Favour composition over inheritance Program to the interface, not the implementation Loose coupling. Strategies, Adapters, Composites and more are your friends. Assume nothing about an implementation so the LSP can work for you. Know your Patterns, they are an OO programmer’s bricks and mortar. Explore Functional Programming, and Patterns will become clearer to you. Respect the spectrum of abstraction: even a class is an abstraction, only instances are concrete.
  12. All software development is either wrangling legacy code or writing it  Methodical, incremental refactoring. Drill down to the simplest change and work back up. Set a refactoring goal Naïve implementation Note all dependencies Revert! The Mikado Graph: Is a record of your thoughts Is an indication of progress Is a focussing tool Is a learning tool: exposes coupling and dependencies between modules
  13. Pair programming is great, but IMO code review is still needed whether or not you’re pairing. Coaching and mentoring. How I do code reviews. If you are pairing regularly, try mob programming to mix things up a bit.
  14. A model defined by Christopher Avery as part of his “Leadership Gift” program. Many stages of responsibility, similar to the five stages of grief, or the six stages of debugging. The difference with Personal Responsibility is that at any point before we take responsibility, we have an alternative: quit the situation and abdicate responsibility.
  15. Personal responsibility in bug fixing: There’s no way that could happen! This is Joey’s code, it’s his fault! Well, if Joey hadn’t used null values in his code, there would be no bug! I’m such an idiot, I saw Joey working on this just last week and I didn’t say anything There's no way we could have done anything different, we're under such pressure to deliver on time that quality goes out the window. I'll have a chat with Joey to explain why nulls should be avoided, and start trialling code reviews as part of our development process. Being mindful will help in taking personal responsibility: being aware of which phase we are in and using that knowledge to reach a productive conclusion more quickly.
  16. Mindset: Methodical, Deliberate, and Considered Tools: both technical and delivery/process Responsibility: owning your context and involvement in your work The second pillar provides a way to express the other two. Any amateur can use a professional’s tools, but it’s the approach we take to our work that indicates professionalism and denotes craftsmanship.