SlideShare una empresa de Scribd logo
1 de 29
$ 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/

Más contenido relacionado

Similar a Complete code craft

A Question of Craftsmanship
A Question of CraftsmanshipA Question of Craftsmanship
A Question of CraftsmanshipKevlin 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
 
Mastering Startup Pitching
Mastering Startup PitchingMastering Startup Pitching
Mastering Startup PitchingPress42
 
HackconEU: Hackathons are for Hackers
HackconEU: Hackathons are for HackersHackconEU: Hackathons are for Hackers
HackconEU: Hackathons are for HackersTim Messerschmidt
 
Lansing Maker Week
Lansing Maker WeekLansing Maker Week
Lansing Maker Weeksteeri
 
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 peopleStephen Collins
 
Business of Front-end Web Development
Business of Front-end Web DevelopmentBusiness of Front-end Web Development
Business of Front-end Web DevelopmentRachel Andrew
 
Python + NoSQL in Animations
Python + NoSQL in AnimationsPython + NoSQL in Animations
Python + NoSQL in AnimationsShuen-Huei Guan
 
Incremental Persona, Lean UX Festival 2014
Incremental Persona, Lean UX Festival 2014Incremental Persona, Lean UX Festival 2014
Incremental Persona, Lean UX Festival 2014Adrian Howard
 
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-AtkinsTü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
 
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 LockieAngry Creative (UK)
 

Similar a 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
 

Último

Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfVishalKumarJha10
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...kalichargn70th171
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...software pro Development
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesVictorSzoltysek
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024Mind IT Systems
 

Último (20)

Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 

Complete code craft

Notas del editor

  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.