17
Nino Stokbro Ag BestBrains CRAFTSMANSHIP

Craftsmanship 2016 -BestBrains Café-møder

Embed Size (px)

Citation preview

Nino Stokbro Ag BestBrains

CRAFTSMANSHIP

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

HVAD TÆNKER I?