craftsmanship 2016 -bestbrains café-møder
TRANSCRIPT
CRAFTSMANSHIPHvad betyder det?
A man who practices a craft with great skill.
The beautiful or impressive quality
of something that has been made
using a lot of skill
SOFTWARE CRAFTSMANSHIP
Agile Manifesto: Individuals and interactions over processes and tools
Working software over comprehensive documentationCustomer collaboration over contract negotiation
Responding to change over following a plan
Principle 9:
“Continuous attention to technical
excellence and good design
enhances agility”
Craftsmanship over Execution
Robert Martin’s (Uncle Bob) proposed fifth agile value statement (2008)
Hvad betyder det?
Manifesto of Software Craftsmanship (2009)
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
SOFTWARE CRAFTSMANSHIPHvad betyder det?
• “Non-programmers don’t care about the aesthetics of software in the same way non-plumbers don’t care about the aesthetics of plumbing – they just want their information in the right place or their hot water to work.”
• “What I don’t want, however, is a prima donna plumber who insists on talking about the elegance, beauty or art of plumbing, or who insists that I appreciate the aesthetic beauty of his joinery, or will “only work with other rock star plumbers, who only practise copper-driven plumbing.”
http://dannorth.net/2011/01/11/programming-is-not-a-craft/
SOFTWARE CRAFTSMANSHIPDan North: Software is not a craft
SOFTWARE CRAFTSMANSHIP1. Crafting Code – The art of using one or more programming languages to create clear, well-factored code. We want our apprentices to be polyglots by the time they become journeymen, so we will do this in more than one language.
2. Applied Principles – Well-written code isn’t enough. An apprentice needs to understand principles like SOLID, and know how to apply them.
3. Technologies and Tools – While programmers need to be able to practice activities like Refactoring by hand, they also need to know how to use certain tools, as well as which tool to choose for a particular task.
4. Work Habits – Programming is about more than just showing up, slinging some code, and going home to play Mine-Craft. Especially in an agile software development shop, we need to be able to build muscle memory around the activities that make good programmers great, such as TDD, Continuous Integration, etc.
5. Soft Skills – The days of the socially inept programmer are over. Software apprentices will learn how to work in a team, how to communicate with others, and other soft skills that tend to be forgotten in the traditional learning environment.
Steve Ropa, Version One http://blogs.versionone.com/agile_management/2014/08/25/building-software-craftsmen/
Akademisktilgang
Kunstnerisktilgang
Håndværkstilgang
AnalytiskProblemorienteret
Målestok:
Korrekt
PragmatiskLøsningsorienteret
Eksperimentel
MeningsorienteretMålestok: Æstetik
Målestok:
Kvalitet
SOFTWARE CRAFTSMANSHIP
VÆRDIHYPOTESEN OM CRAFTSMANSHIPDet er dyrt at lære langsomt
0
25
50
75
100
Development
Auto test
Testing
Production
Nyt
LegacyMiddel
Dygtig
Produktivitet Kvalitet
Dan North http://dannorth.net/2011/01/11/programming-is-not-a-craft/
“The oft-quoted figures of tenfold increase in productivity of expert versus novice programmers are wrong by orders of magnitude in my experience. A really great programmer (and I’ve been lucky enough to work with a handful over the years) can out-perform a doing-it-
for-the-money programmer by orders of literally hundreds, delivering in hours or days what would take an average developer
weeks or months.”
VÆRDIHYPOTESEN OM CRAFTSMANSHIP
Autonomy
Purpose
Mastery
EN CRAFTSMAN PROFIL
• En craftsman er kendetegnet ved
• Ansvar og stolthed
• Kvalitetssans og realitetssans
• Interesseret og engageret
Generalist
Specialist
Praksis
Teori
• En craftsman er hverken specialist eller generalistmen begge
EN SOFTWARE CRAFTSMAN’S AGILE PRAKTIKKER
Automated unit testsContinuous Integration
Continuous Delivery &
Deployment
Refactoring
Automated acceptance tests
Pair programming
Emergent architecture
Simplicity
Source control
HVORDAN UDVIKLES CRAFTSMANSHIP
• Craftsmanship kræver et Growth mindset
• Mange organisationer dyrker et Fixed mindset
• Delegation er en rejse, hvor hvert trin kræver træning
• for den der delegerer • og den der delegeres til
© Jurgen Appelo
HVORDAN UDVIKLES CRAFTSMANSHIP
Niveauer i Japansk kampkunst
• SHU ( ) adlyde, vedholde, beskytte – traditionel visdom – lære fundamentet, teknikker
• HA ( ) afkoble, bryde, løsrive – bryde med traditioner – slippe fri, søge forståelse
• RI ( ) ud over, ubunden – transcendence – alt er naturligt, kreativitet uden bånd
Recollection Recognition Decision Awareness
Novice non-situational decomposed analytic monitoring
Compentece situational decomposed analytic monitoring
Proficiency situational holistic analytic monitoring
Expertise situational holistic intuitive monitoring
Mastery situational holistic intuitive absorbed
HVORDAN UDVIKLES CRAFTSMANSHIP
Dreyfus & Dreyfus model for læring
• Håndværksfag har Lærling, svend og mesterdet er ikke tilfældigt
• Håndværkets værdier læres ikke på skolebænken
• Svenden fungerer som spillende træner for lærlingen
• Mesteren fungerer som rådgiver for svenden
HVORDAN UDVIKLES CRAFTSMANSHIP
• At opdyrke Craftsmanship er en kulturel forandring
• Kulturelle forandringer handler om hoved, maven og benene
• Rollemodellerforandring kræver ofte en forgangsmand
• Krav om forbedringer forandring kræver ofte et behov (udefra)
HVORDAN UDVIKLES CRAFTSMANSHIP