SlideShare ist ein Scribd-Unternehmen logo
1 von 93
Downloaden Sie, um offline zu lesen
Deliberate Practice
(New learning styles to overcome the software crisis?)
ATB Expertentreff, March 2015
Peter Kofler, ‘Code Cop’
@codecopkofler
www.code-cop.org
Copyright Peter Kofler, licensed under CC-BY.
Who am I?
Peter Kofler
• Ph.D. (Appl. Math.)
• Professional Software
Developer for 15 years
• “fanatic about code quality”
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
I help development teams with
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
●
Professionalism
●
Quality and
Productivity
●
Continuous
Improvement
Training and Mentoring
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
●
Pair Programming
●
Programming
Workshops
●
Deliberate
Practice
Who are You?
Quick Poll: Are You a
●
Tester?
●
Test Manager?
●
QA?
●
QA Manager?
●
Developer?
●
Architect?
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
No, you are a
Software Delivery
Professional!
Your Goal:
Developing
Quality
Software
So What Is the Problem?
Software Crisis?
“The major cause of the software crisis is that
the machines have become several orders of
magnitude more powerful! To put it quite
bluntly: as long as there were no machines,
programming was no problem at all; when we
had a few weak computers, programming
became a mild problem, and now we have
gigantic computers, programming has become
an equally gigantic problem.”
Software Crisis
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
http://en.wikipedia.org/wiki/Software_crisis
Edsger Dijkstra
Requirements
and Complexity
Increase Each Year
http://www.hypermodelling.com/
Complexity and Size of
Modern Code Bases
http://hypermodelling.com
New Technologies
Move Very Fast
Knowledge
Half-Life of
18 Months
http://www.oracle.com/technetwork/articles/javase/kabutz-qa-136652.html
But Abstractions are Leaky
●
What is HTTP?
●
What is a pointer?
●
What is Assembler?
●
What is RISC/
CISC?
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Enormous Legacy
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
●
e.g. still 200 billion LoC COBOL (2008)
●
“Java is
the new
COBOL“
http://skeptics.stackexchange.com/questions/5114/did-cobol-have-250-billion-lines-of-code-and-1-million-programmers-as-late-as-2
We are crushed
And our code looks like this
What can be done about it?
How to overcome the „Crisis“?
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
More Metrics?
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
●
Lines of Code?
●
Hours worked?
●
Velocity?
●
Code Coverage?
●
Defects / time?
●
...
More Process/Methodology?
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
●
Software Engineering
●
Extreme Programming
●
Agile Software Development
●
Scrum
●
Kanban
●
What's
next?
More Tests?
Who (in the end)
creates software?
Professional
(people)
Engineering
(process)
Software
Professionals
Create Software!
Software like that
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
@SuppressWarnings({
"UnusedDeclaration",
"AssignmentToDateFieldFromParameter",
"AssignmentToCollectionOrArrayFieldFromParameter",
"ClassWithTooManyMethods",
"ClassWithTooManyFields",
"OverlyComplexClass"})
public class OewDocument { // NOPMD
…
}
or like that (Single Letter
Variables)
http://theprofoundprogrammer.com/post/26561881517/text-single-letter-variables-who-the-fuck-do
or like that
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
...
} catch (Throwable t) {
throw new Error(t.getMessage());
}
...
for (Throwable e : exceptionList) {
throw e;
}
So we end up here again
Why is its quality so bad?
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Is Software
Engineering
Education
sufficient?
http://programmers.stackexchange.com/questions/60595/did-your-cs-program-prepare-you-well
Training
on the
Job?
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Yes, some but...
●
only what is already there
●
Trial & Error not popular in production
●
no practice - only production
●
time pressure
Our Industry is Very Young
●
Half of all developers age < 30
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
http://blog.cleancoder.com/uncle-bob/2014/06/20/MyLawn.html
Not Enough Senior People
●
either busy
●
e.g. critical issues
●
contact with business
●
or left active development
●
architects,
●
analysts,
●
managers etc.
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Developing
Quality
Software
Developers
Quick Poll: Do you ...
●
Technical magazines?
●
Internal library?
●
Reading groups?
●
Lunch & Learn?
●
Conferences?
●
Trainings?
●
Hackdays?
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Classic Training is “Sheep Dip“
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
That is not enough
More Practice!
Deliberate
Practice
How do musicians practice?
Then how do coders practice?
Then how do testers practice?
Code Kata
Code Kata Definition
●
A kata as a detailed choreographed
pattern of movement.
●
A code kata is an exercise in
programming which helps a
programmer hone their skills through
practice and repetition.
●
A testing kata is ...
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Code Kata
●
simple problem (max. 20 minutes)
●
solve every day
●
memorization/create reflexes
●
experiment with solutions
●
stretch yourself
●
try new technologies
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Why repeat the same kata?
●
de-emphasise the generation of code
●
concentrate on
●
the process of writing the code
●
naming test cases
●
the Red/Green cycle
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Don't Focus on
Getting it Done.
F0cus on Doing
It Perfectly.
Software Katas
●
Finding algorithms
●
Coding solutions
●
Bringing code under test
●
Unit Test/Test tools (“Test Lab“)
●
Refactoring katas
●
Finding test cases
●
Architectural katas
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Code Kata Example:
Prime Factors
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
The Requirements.
• Write a class named “PrimeFactors”
that has one static method: generate.
●
The generate method takes an integer
argument and returns a List<Integer>.
●
That list contains the prime factors in
numerical sequence.
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
http://butunclebob.com/ArticleS.UncleBob.ThePrimeFactorsKata
First Some Math
●
Prime Number: number > 1 that has
no divisors other than 1 and itself.
●
e.g. 2, 3, 5, 61, 67, ..., 997, ..., 243112609
-1
●
Prime Factors: prime numbers that
divide an integer without remainder.
●
e.g. 2 = 2,
4 = 2 * 2,
24 = 2 * 2 * 2 * 3
288 = 25
* 32
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Prime Factors Statistics
●
very easy
●
10 minutes
●
6 test cases
●
final algorithm is 5 lines
●
I did it 100+ times
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
To learn and practice
●
Test Driven Development cycle
●
first in every new language
●
IDE short-cuts
●
laptop keyboard layout
●
focus when distracted
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Kata Example:
Car Mechanic
What else could we
practice like that?
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Coding Dojo
Coding Dojo Definition
●
A coding dojo is a meeting where a
bunch of coders get together and work
on a code kata, a programming
challenge to improve their skills.
●
They code, learn and have fun away
from interruptions, distractions,
deadlines and production bugs.
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
http://codingdojo.org/
Coding Dojo Structure
●
Introduction 15'
●
Coding 45'
●
Interim (Retrospective) 5'
●
Break 15'
●
Coding 45'
●
Retrospective 15'
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Coding Dojo Mindset
●
Safe place outside work
●
We are here to learn
●
Need to slow down
●
Focus on doing it right
●
Collaborative Game
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Coding Dojo Rules
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Pair Programming
●
Collaborative = Pair Programming
●
“Randori“ (pairing on the projector)
●
or regular programming in pairs
●
regular Pair Programming
●
do not talk for too long
●
do not interrupt the other
●
no “keyboard hugging“
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Pair Programming
adds discussion &
a second opinion
to the practice.
Constraints
●
Challenges during a dojo or code retreat.
●
Moving to the extreme is a way of learning
●
Examples
●
Missing Tool (No Mouse, …)
●
Missing Feature (No IFs, …)
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Testing Dojo Example:
Testcases for Gilded Rose
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Given
●
Production code (60 lines)
●
Detailed requirements (1 page A4)
●
No tests (at least 38 cases)
●
Prepared FitNesse fixtures (Java)
●
dbFit connector (PL/SQL)
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
https://bitbucket.org/pkofler/gilded-rose-fitnesse
Testing Task
●
Modify existing test cases, play around
●
Create some “perfect” tests
●
derive test cases from requirements
●
name test cases accordingly
●
test boundary conditions
●
readable, concise, free of duplication
●
Experiment with styles
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Dojo Example: Data Dojo
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
●
Study group / workshops
●
Learning and sharing knowledge
●
Big data technologies.
●
Currently focused on Apache Spark.
http://www.meetup.com/datadojo/
Coding Dojo Vienna
●
Monthly, free Coding Dojo in Vienna
●
Weekdays after work
●
Changing locations
●
Follow #CodingDojoVie
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
http://codingdojovie.github.io/
Code Retreat
Code Retreat
●
A day-long, intensive practice event,
focusing on the fundamentals of
software development and design.
●
Practising the basic principles of
modular and object-oriented design.
●
Support mindset of quality, learning and
practice!
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
How it started
●
CodeMash conference 2009
●
Popularised by
Corey Haines
●
2009 also first
time outside US
(Romania)
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Code Retreat Structure
●
Introduction 15'
●
3 Sessions
●
Coding 45'
●
Retrospective/Break 15'
●
Lunch 60'/90'
●
3 Sessions
●
Retrospective 45'
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Code Retreat Principles
●
Language agnostic
●
Learn through pairing (switch pairs)
●
Delete code after each session
●
Practice
●
Experiment
●
Have fun!
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
http://coderetreat.org/
Why delete the code?
●
No. Listen.
●
Stop trying to go faster, start trying to go
slower.
●
Don't think about finishing, think about
improving.
●
Think about practising. As a team.
●
That's what this day is for. Nothing else.
http://www.cyber-dojo.com/
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Code Retreat Example: GDCR
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Global Day of Code Retreat
●
A world-wide event celebrating passion
and software craftsmanship.
●
Once a year, November/December
●
Whole Saturday, starting 9:00
●
Look for #GDCR15
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
http://globalday.coderetreat.org/
Example:
Test Automation Retreat
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Conclusion
Developing
Quality
Software
Software
Professionals
Create Software!
Developing
Quality
Software
Developers
Deliberate
Practice
What you need to do
What we “Experts” need to do
●
Make space for deliberate learning
●
1st
Improve yourself
●
Try katas
●
Visit dojos/retreats
●
2nd
Mentor next generations
●
Prepare kata exercises
●
Run in-house dojos/retreats
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
We will not
ship shit!
(Uncle Bob)
Peter Kofler
@codecopkofler
www.code-cop.org
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
CC Images #1
●
masters https://www.flickr.com/photos/kevinpoh/4404925960
●
Bruce http://www.flickr.com/photos/sherpas428/4350620602/
●
pairing http://www.flickr.com/photos/dav/94735395/
●
wants you http://www.flickr.com/photos/shutter/105497713/
●
Cthulhu http://community.imaginefx.com/forums/thread/402575.aspx
●
leaky wall https://www.flickr.com/photos/gammaman/7803857922
●
cars https://www.flickr.com/photos/24354425@N03/14575356310
●
tank https://www.flickr.com/photos/mangee/141936439
●
dump http://www.flickr.com/photos/sanmartin/2682745838/
●
measures https://www.flickr.com/photos/bigtallguy/153619774
●
hurdles https://www.flickr.com/photos/robert_voors/774926895
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
CC Images #2
●
shoe maker http://www.flickr.com/photos/tbatty/1450209613/ (by 2010)
●
factory http://www.flickr.com/photos/94693506@N00/4643248587/
●
Hamster http://www.flickr.com/photos/zebrapares/4529836138
●
baby http://www.flickr.com/photos/11904001@N00/3983980813/
●
sheep dip https://www.flickr.com/photos/christianspenceranderson/6990570682
●
music https://www.flickr.com/photos/jeremyhiebert/11474303315
●
code https://www.flickr.com/photos/slworking/7726767220/
●
karate http://www.flickr.com/photos/the-consortium/5301698212/
●
math https://www.flickr.com/photos/jimmiehomeschoolmom/4427775569
●
mechanic https://www.flickr.com/photos/ravages/9242464882
●
dojo http://www.flickr.com/photos/49715404@N00/3267627038/
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
CC Images #3
●
todos http://www.flickr.com/photos/kylesteeddesign/3724074594/
●
rule http://www.flickr.com/photos/phunk/4188827473
●
inn http://www.flickr.com/photos/danielleblue/170496395/
●
incense http://www.flickr.com/photos/cibomahto/7651263514/
●
automation http://www.flickr.com/photos/aquilaonline/510921786/
●
finish http://www.flickr.com/photos/jayneandd/4450623309/
●
call https://www.flickr.com/photos/melenita/15166203826
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY

Weitere ähnliche Inhalte

Was ist angesagt?

Coding Dojo: Bank OCR Outside-In (2015)
Coding Dojo: Bank OCR Outside-In (2015)Coding Dojo: Bank OCR Outside-In (2015)
Coding Dojo: Bank OCR Outside-In (2015)Peter Kofler
 
Clean Readable Specifications (ETC 2016)
Clean Readable Specifications (ETC 2016)Clean Readable Specifications (ETC 2016)
Clean Readable Specifications (ETC 2016)Peter Kofler
 
Extract Method Refactoring Workshop (2016)
Extract Method Refactoring Workshop (2016)Extract Method Refactoring Workshop (2016)
Extract Method Refactoring Workshop (2016)Peter Kofler
 
Designing Test Cases for the Gilded Rose Kata (2013)
Designing Test Cases for the Gilded Rose Kata (2013)Designing Test Cases for the Gilded Rose Kata (2013)
Designing Test Cases for the Gilded Rose Kata (2013)Peter Kofler
 
Coding Dojo: Mars Rover (2014)
Coding Dojo: Mars Rover (2014)Coding Dojo: Mars Rover (2014)
Coding Dojo: Mars Rover (2014)Peter Kofler
 
JUnit Boot Camp (GeeCON 2016)
JUnit Boot Camp (GeeCON 2016)JUnit Boot Camp (GeeCON 2016)
JUnit Boot Camp (GeeCON 2016)Peter Kofler
 
Brutal Coding Constraints (ITAKE 2017)
Brutal Coding Constraints (ITAKE 2017)Brutal Coding Constraints (ITAKE 2017)
Brutal Coding Constraints (ITAKE 2017)Peter Kofler
 
Refactoring the Tennis Kata v2 (2016)
Refactoring the Tennis Kata v2 (2016)Refactoring the Tennis Kata v2 (2016)
Refactoring the Tennis Kata v2 (2016)Peter Kofler
 
Coding Dojo: Data Munging (2016)
Coding Dojo: Data Munging (2016)Coding Dojo: Data Munging (2016)
Coding Dojo: Data Munging (2016)Peter Kofler
 
Designing Test Cases for the Gilded Rose Kata v3 (2016)
Designing Test Cases for the Gilded Rose Kata v3 (2016)Designing Test Cases for the Gilded Rose Kata v3 (2016)
Designing Test Cases for the Gilded Rose Kata v3 (2016)Peter Kofler
 
Coding Dojo Object Calisthenics (2016)
Coding Dojo Object Calisthenics (2016)Coding Dojo Object Calisthenics (2016)
Coding Dojo Object Calisthenics (2016)Peter Kofler
 
Coding Dojo: Asynchronous Clock-In (2016)
Coding Dojo: Asynchronous Clock-In (2016)Coding Dojo: Asynchronous Clock-In (2016)
Coding Dojo: Asynchronous Clock-In (2016)Peter Kofler
 
Mob Programming (2016)
Mob Programming (2016)Mob Programming (2016)
Mob Programming (2016)Peter Kofler
 
Code Retreat Venice (2016)
Code Retreat Venice (2016)Code Retreat Venice (2016)
Code Retreat Venice (2016)Peter Kofler
 
The Brutal Refactoring Game (2013)
The Brutal Refactoring Game (2013)The Brutal Refactoring Game (2013)
The Brutal Refactoring Game (2013)Peter Kofler
 
TDD as if You Meant It (2013)
TDD as if You Meant It (2013)TDD as if You Meant It (2013)
TDD as if You Meant It (2013)Peter Kofler
 
Idiomatic R for Rosetta Code (2013)
Idiomatic R for Rosetta Code (2013)Idiomatic R for Rosetta Code (2013)
Idiomatic R for Rosetta Code (2013)Peter Kofler
 
Concepts of Functional Programming for Java Brains (2010)
Concepts of Functional Programming for Java Brains (2010)Concepts of Functional Programming for Java Brains (2010)
Concepts of Functional Programming for Java Brains (2010)Peter Kofler
 
TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)Peter Kofler
 
Pair Programming (2015)
Pair Programming (2015)Pair Programming (2015)
Pair Programming (2015)Peter Kofler
 

Was ist angesagt? (20)

Coding Dojo: Bank OCR Outside-In (2015)
Coding Dojo: Bank OCR Outside-In (2015)Coding Dojo: Bank OCR Outside-In (2015)
Coding Dojo: Bank OCR Outside-In (2015)
 
Clean Readable Specifications (ETC 2016)
Clean Readable Specifications (ETC 2016)Clean Readable Specifications (ETC 2016)
Clean Readable Specifications (ETC 2016)
 
Extract Method Refactoring Workshop (2016)
Extract Method Refactoring Workshop (2016)Extract Method Refactoring Workshop (2016)
Extract Method Refactoring Workshop (2016)
 
Designing Test Cases for the Gilded Rose Kata (2013)
Designing Test Cases for the Gilded Rose Kata (2013)Designing Test Cases for the Gilded Rose Kata (2013)
Designing Test Cases for the Gilded Rose Kata (2013)
 
Coding Dojo: Mars Rover (2014)
Coding Dojo: Mars Rover (2014)Coding Dojo: Mars Rover (2014)
Coding Dojo: Mars Rover (2014)
 
JUnit Boot Camp (GeeCON 2016)
JUnit Boot Camp (GeeCON 2016)JUnit Boot Camp (GeeCON 2016)
JUnit Boot Camp (GeeCON 2016)
 
Brutal Coding Constraints (ITAKE 2017)
Brutal Coding Constraints (ITAKE 2017)Brutal Coding Constraints (ITAKE 2017)
Brutal Coding Constraints (ITAKE 2017)
 
Refactoring the Tennis Kata v2 (2016)
Refactoring the Tennis Kata v2 (2016)Refactoring the Tennis Kata v2 (2016)
Refactoring the Tennis Kata v2 (2016)
 
Coding Dojo: Data Munging (2016)
Coding Dojo: Data Munging (2016)Coding Dojo: Data Munging (2016)
Coding Dojo: Data Munging (2016)
 
Designing Test Cases for the Gilded Rose Kata v3 (2016)
Designing Test Cases for the Gilded Rose Kata v3 (2016)Designing Test Cases for the Gilded Rose Kata v3 (2016)
Designing Test Cases for the Gilded Rose Kata v3 (2016)
 
Coding Dojo Object Calisthenics (2016)
Coding Dojo Object Calisthenics (2016)Coding Dojo Object Calisthenics (2016)
Coding Dojo Object Calisthenics (2016)
 
Coding Dojo: Asynchronous Clock-In (2016)
Coding Dojo: Asynchronous Clock-In (2016)Coding Dojo: Asynchronous Clock-In (2016)
Coding Dojo: Asynchronous Clock-In (2016)
 
Mob Programming (2016)
Mob Programming (2016)Mob Programming (2016)
Mob Programming (2016)
 
Code Retreat Venice (2016)
Code Retreat Venice (2016)Code Retreat Venice (2016)
Code Retreat Venice (2016)
 
The Brutal Refactoring Game (2013)
The Brutal Refactoring Game (2013)The Brutal Refactoring Game (2013)
The Brutal Refactoring Game (2013)
 
TDD as if You Meant It (2013)
TDD as if You Meant It (2013)TDD as if You Meant It (2013)
TDD as if You Meant It (2013)
 
Idiomatic R for Rosetta Code (2013)
Idiomatic R for Rosetta Code (2013)Idiomatic R for Rosetta Code (2013)
Idiomatic R for Rosetta Code (2013)
 
Concepts of Functional Programming for Java Brains (2010)
Concepts of Functional Programming for Java Brains (2010)Concepts of Functional Programming for Java Brains (2010)
Concepts of Functional Programming for Java Brains (2010)
 
TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)
 
Pair Programming (2015)
Pair Programming (2015)Pair Programming (2015)
Pair Programming (2015)
 

Andere mochten auch

Andere mochten auch (16)

What Is Deliberate Practice?
What Is Deliberate Practice?What Is Deliberate Practice?
What Is Deliberate Practice?
 
Deliberate Practice Agile2012
Deliberate Practice Agile2012Deliberate Practice Agile2012
Deliberate Practice Agile2012
 
Skills Matter Deliberate Practice
Skills Matter Deliberate PracticeSkills Matter Deliberate Practice
Skills Matter Deliberate Practice
 
Deliberate practice
Deliberate practiceDeliberate practice
Deliberate practice
 
The College Classroom (Wi14) Week 3: Developing Expertise through Deliberate ...
The College Classroom (Wi14) Week 3: Developing Expertise through Deliberate ...The College Classroom (Wi14) Week 3: Developing Expertise through Deliberate ...
The College Classroom (Wi14) Week 3: Developing Expertise through Deliberate ...
 
Cyber-dojo: How to perform deliberate practice
Cyber-dojo: How to perform deliberate practiceCyber-dojo: How to perform deliberate practice
Cyber-dojo: How to perform deliberate practice
 
CMS Governance: Aligning Your People
CMS Governance: Aligning Your PeopleCMS Governance: Aligning Your People
CMS Governance: Aligning Your People
 
ALI dubai CV post
ALI dubai CV postALI dubai CV post
ALI dubai CV post
 
sheep_dip_assessment_schedule_nov09
sheep_dip_assessment_schedule_nov09sheep_dip_assessment_schedule_nov09
sheep_dip_assessment_schedule_nov09
 
Deliberate practice
Deliberate practiceDeliberate practice
Deliberate practice
 
Hill Sheep
Hill SheepHill Sheep
Hill Sheep
 
Current recommendations for internal parasite control in small ruminants
Current recommendations for internal parasite control in small ruminantsCurrent recommendations for internal parasite control in small ruminants
Current recommendations for internal parasite control in small ruminants
 
Hill Sheep Farming
Hill Sheep FarmingHill Sheep Farming
Hill Sheep Farming
 
An overview of sheep and goats
An overview of sheep and goatsAn overview of sheep and goats
An overview of sheep and goats
 
Basic sheep and goat husbandry
Basic sheep and goat husbandryBasic sheep and goat husbandry
Basic sheep and goat husbandry
 
Sheep production powerpoint
Sheep production powerpointSheep production powerpoint
Sheep production powerpoint
 

Ähnlich wie Deliberate Practice, New Learning Styles (2015)

Pragmatic Introduction to Python Unit Testing (PyDays 2018)
Pragmatic Introduction to Python Unit Testing (PyDays 2018)Pragmatic Introduction to Python Unit Testing (PyDays 2018)
Pragmatic Introduction to Python Unit Testing (PyDays 2018)Peter Kofler
 
Pragmatic Introduction to PHP Unit Testing (2015)
Pragmatic Introduction to PHP Unit Testing (2015)Pragmatic Introduction to PHP Unit Testing (2015)
Pragmatic Introduction to PHP Unit Testing (2015)Peter Kofler
 
Prime Factors Code Kata - Practicing TDD (2014)
Prime Factors Code Kata - Practicing TDD (2014)Prime Factors Code Kata - Practicing TDD (2014)
Prime Factors Code Kata - Practicing TDD (2014)Peter Kofler
 
Code Quality Assurance v4 (2013)
Code Quality Assurance v4 (2013)Code Quality Assurance v4 (2013)
Code Quality Assurance v4 (2013)Peter Kofler
 
Coding Dojo: String Calculator (2013)
Coding Dojo: String Calculator (2013)Coding Dojo: String Calculator (2013)
Coding Dojo: String Calculator (2013)Peter Kofler
 
Coding Dojo: Bank OCR (2014)
Coding Dojo: Bank OCR (2014)Coding Dojo: Bank OCR (2014)
Coding Dojo: Bank OCR (2014)Peter Kofler
 
Deliberate Practice (2014)
Deliberate Practice (2014)Deliberate Practice (2014)
Deliberate Practice (2014)Peter Kofler
 
Working With Legacy Code
Working With Legacy CodeWorking With Legacy Code
Working With Legacy CodeAndrea Polci
 
Coding Dojo: Baby Steps (2014)
Coding Dojo: Baby Steps (2014)Coding Dojo: Baby Steps (2014)
Coding Dojo: Baby Steps (2014)Peter Kofler
 
Coding Dojo: Adding Tests to Legacy Code (2014)
Coding Dojo: Adding Tests to Legacy Code (2014)Coding Dojo: Adding Tests to Legacy Code (2014)
Coding Dojo: Adding Tests to Legacy Code (2014)Peter Kofler
 
Practical (J)Unit Testing (2009)
Practical (J)Unit Testing (2009)Practical (J)Unit Testing (2009)
Practical (J)Unit Testing (2009)Peter Kofler
 
Coding Dojo: Roman Numerals (2014)
Coding Dojo: Roman Numerals (2014)Coding Dojo: Roman Numerals (2014)
Coding Dojo: Roman Numerals (2014)Peter Kofler
 
Can PL/SQL be Clean? (2013)
Can PL/SQL be Clean? (2013)Can PL/SQL be Clean? (2013)
Can PL/SQL be Clean? (2013)Peter Kofler
 
Unit Testing like a Pro - The Circle of Purity
Unit Testing like a Pro - The Circle of PurityUnit Testing like a Pro - The Circle of Purity
Unit Testing like a Pro - The Circle of PurityVictor Rentea
 
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)ssusercaf6c1
 
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)Nacho Cougil
 
TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)Nacho Cougil
 
Pair Programming (2014)
Pair Programming (2014)Pair Programming (2014)
Pair Programming (2014)Peter Kofler
 
Unit Testing and TDD 2017
Unit Testing and TDD 2017Unit Testing and TDD 2017
Unit Testing and TDD 2017Xavi Hidalgo
 
Test Driven Development with PHP
Test Driven Development with PHPTest Driven Development with PHP
Test Driven Development with PHPRogério Vicente
 

Ähnlich wie Deliberate Practice, New Learning Styles (2015) (20)

Pragmatic Introduction to Python Unit Testing (PyDays 2018)
Pragmatic Introduction to Python Unit Testing (PyDays 2018)Pragmatic Introduction to Python Unit Testing (PyDays 2018)
Pragmatic Introduction to Python Unit Testing (PyDays 2018)
 
Pragmatic Introduction to PHP Unit Testing (2015)
Pragmatic Introduction to PHP Unit Testing (2015)Pragmatic Introduction to PHP Unit Testing (2015)
Pragmatic Introduction to PHP Unit Testing (2015)
 
Prime Factors Code Kata - Practicing TDD (2014)
Prime Factors Code Kata - Practicing TDD (2014)Prime Factors Code Kata - Practicing TDD (2014)
Prime Factors Code Kata - Practicing TDD (2014)
 
Code Quality Assurance v4 (2013)
Code Quality Assurance v4 (2013)Code Quality Assurance v4 (2013)
Code Quality Assurance v4 (2013)
 
Coding Dojo: String Calculator (2013)
Coding Dojo: String Calculator (2013)Coding Dojo: String Calculator (2013)
Coding Dojo: String Calculator (2013)
 
Coding Dojo: Bank OCR (2014)
Coding Dojo: Bank OCR (2014)Coding Dojo: Bank OCR (2014)
Coding Dojo: Bank OCR (2014)
 
Deliberate Practice (2014)
Deliberate Practice (2014)Deliberate Practice (2014)
Deliberate Practice (2014)
 
Working With Legacy Code
Working With Legacy CodeWorking With Legacy Code
Working With Legacy Code
 
Coding Dojo: Baby Steps (2014)
Coding Dojo: Baby Steps (2014)Coding Dojo: Baby Steps (2014)
Coding Dojo: Baby Steps (2014)
 
Coding Dojo: Adding Tests to Legacy Code (2014)
Coding Dojo: Adding Tests to Legacy Code (2014)Coding Dojo: Adding Tests to Legacy Code (2014)
Coding Dojo: Adding Tests to Legacy Code (2014)
 
Practical (J)Unit Testing (2009)
Practical (J)Unit Testing (2009)Practical (J)Unit Testing (2009)
Practical (J)Unit Testing (2009)
 
Coding Dojo: Roman Numerals (2014)
Coding Dojo: Roman Numerals (2014)Coding Dojo: Roman Numerals (2014)
Coding Dojo: Roman Numerals (2014)
 
Can PL/SQL be Clean? (2013)
Can PL/SQL be Clean? (2013)Can PL/SQL be Clean? (2013)
Can PL/SQL be Clean? (2013)
 
Unit Testing like a Pro - The Circle of Purity
Unit Testing like a Pro - The Circle of PurityUnit Testing like a Pro - The Circle of Purity
Unit Testing like a Pro - The Circle of Purity
 
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
 
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
 
TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)
 
Pair Programming (2014)
Pair Programming (2014)Pair Programming (2014)
Pair Programming (2014)
 
Unit Testing and TDD 2017
Unit Testing and TDD 2017Unit Testing and TDD 2017
Unit Testing and TDD 2017
 
Test Driven Development with PHP
Test Driven Development with PHPTest Driven Development with PHP
Test Driven Development with PHP
 

Kürzlich hochgeladen

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 

Kürzlich hochgeladen (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 

Deliberate Practice, New Learning Styles (2015)

  • 1. Deliberate Practice (New learning styles to overcome the software crisis?) ATB Expertentreff, March 2015 Peter Kofler, ‘Code Cop’ @codecopkofler www.code-cop.org Copyright Peter Kofler, licensed under CC-BY.
  • 3. Peter Kofler • Ph.D. (Appl. Math.) • Professional Software Developer for 15 years • “fanatic about code quality” PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 4. I help development teams with PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY ● Professionalism ● Quality and Productivity ● Continuous Improvement
  • 5. Training and Mentoring PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY ● Pair Programming ● Programming Workshops ● Deliberate Practice
  • 7. Quick Poll: Are You a ● Tester? ● Test Manager? ● QA? ● QA Manager? ● Developer? ● Architect? PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 8. No, you are a Software Delivery Professional!
  • 10. So What Is the Problem?
  • 12. “The major cause of the software crisis is that the machines have become several orders of magnitude more powerful! To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem.” Software Crisis PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY http://en.wikipedia.org/wiki/Software_crisis
  • 15. http://www.hypermodelling.com/ Complexity and Size of Modern Code Bases http://hypermodelling.com
  • 18. But Abstractions are Leaky ● What is HTTP? ● What is a pointer? ● What is Assembler? ● What is RISC/ CISC? PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 19. Enormous Legacy PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY ● e.g. still 200 billion LoC COBOL (2008) ● “Java is the new COBOL“ http://skeptics.stackexchange.com/questions/5114/did-cobol-have-250-billion-lines-of-code-and-1-million-programmers-as-late-as-2
  • 21. And our code looks like this
  • 22. What can be done about it? How to overcome the „Crisis“? PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 23. More Metrics? PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY ● Lines of Code? ● Hours worked? ● Velocity? ● Code Coverage? ● Defects / time? ● ...
  • 24. More Process/Methodology? PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY ● Software Engineering ● Extreme Programming ● Agile Software Development ● Scrum ● Kanban ● What's next?
  • 26. Who (in the end) creates software?
  • 29. Software like that PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY @SuppressWarnings({ "UnusedDeclaration", "AssignmentToDateFieldFromParameter", "AssignmentToCollectionOrArrayFieldFromParameter", "ClassWithTooManyMethods", "ClassWithTooManyFields", "OverlyComplexClass"}) public class OewDocument { // NOPMD … }
  • 30. or like that (Single Letter Variables) http://theprofoundprogrammer.com/post/26561881517/text-single-letter-variables-who-the-fuck-do
  • 31. or like that PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY ... } catch (Throwable t) { throw new Error(t.getMessage()); } ... for (Throwable e : exceptionList) { throw e; }
  • 32. So we end up here again
  • 33. Why is its quality so bad? PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 36. PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Yes, some but... ● only what is already there ● Trial & Error not popular in production ● no practice - only production ● time pressure
  • 37. Our Industry is Very Young ● Half of all developers age < 30 PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY http://blog.cleancoder.com/uncle-bob/2014/06/20/MyLawn.html
  • 38. Not Enough Senior People ● either busy ● e.g. critical issues ● contact with business ● or left active development ● architects, ● analysts, ● managers etc. PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 40. Quick Poll: Do you ... ● Technical magazines? ● Internal library? ● Reading groups? ● Lunch & Learn? ● Conferences? ● Trainings? ● Hackdays? PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 41. Classic Training is “Sheep Dip“ PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 42. That is not enough
  • 45. How do musicians practice?
  • 46. Then how do coders practice? Then how do testers practice?
  • 48. Code Kata Definition ● A kata as a detailed choreographed pattern of movement. ● A code kata is an exercise in programming which helps a programmer hone their skills through practice and repetition. ● A testing kata is ... PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 49. Code Kata ● simple problem (max. 20 minutes) ● solve every day ● memorization/create reflexes ● experiment with solutions ● stretch yourself ● try new technologies PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 50. Why repeat the same kata? ● de-emphasise the generation of code ● concentrate on ● the process of writing the code ● naming test cases ● the Red/Green cycle PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 51. Don't Focus on Getting it Done. F0cus on Doing It Perfectly.
  • 52. Software Katas ● Finding algorithms ● Coding solutions ● Bringing code under test ● Unit Test/Test tools (“Test Lab“) ● Refactoring katas ● Finding test cases ● Architectural katas PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 53. Code Kata Example: Prime Factors PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 54. The Requirements. • Write a class named “PrimeFactors” that has one static method: generate. ● The generate method takes an integer argument and returns a List<Integer>. ● That list contains the prime factors in numerical sequence. PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY http://butunclebob.com/ArticleS.UncleBob.ThePrimeFactorsKata
  • 55. First Some Math ● Prime Number: number > 1 that has no divisors other than 1 and itself. ● e.g. 2, 3, 5, 61, 67, ..., 997, ..., 243112609 -1 ● Prime Factors: prime numbers that divide an integer without remainder. ● e.g. 2 = 2, 4 = 2 * 2, 24 = 2 * 2 * 2 * 3 288 = 25 * 32 PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 56. Prime Factors Statistics ● very easy ● 10 minutes ● 6 test cases ● final algorithm is 5 lines ● I did it 100+ times PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 57. To learn and practice ● Test Driven Development cycle ● first in every new language ● IDE short-cuts ● laptop keyboard layout ● focus when distracted PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 59. What else could we practice like that? PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 61. Coding Dojo Definition ● A coding dojo is a meeting where a bunch of coders get together and work on a code kata, a programming challenge to improve their skills. ● They code, learn and have fun away from interruptions, distractions, deadlines and production bugs. PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY http://codingdojo.org/
  • 62. Coding Dojo Structure ● Introduction 15' ● Coding 45' ● Interim (Retrospective) 5' ● Break 15' ● Coding 45' ● Retrospective 15' PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 63. Coding Dojo Mindset ● Safe place outside work ● We are here to learn ● Need to slow down ● Focus on doing it right ● Collaborative Game PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 64. Coding Dojo Rules PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 65. Pair Programming ● Collaborative = Pair Programming ● “Randori“ (pairing on the projector) ● or regular programming in pairs ● regular Pair Programming ● do not talk for too long ● do not interrupt the other ● no “keyboard hugging“ PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 66. Pair Programming adds discussion & a second opinion to the practice.
  • 67. Constraints ● Challenges during a dojo or code retreat. ● Moving to the extreme is a way of learning ● Examples ● Missing Tool (No Mouse, …) ● Missing Feature (No IFs, …) PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 68. Testing Dojo Example: Testcases for Gilded Rose PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 69. Given ● Production code (60 lines) ● Detailed requirements (1 page A4) ● No tests (at least 38 cases) ● Prepared FitNesse fixtures (Java) ● dbFit connector (PL/SQL) PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY https://bitbucket.org/pkofler/gilded-rose-fitnesse
  • 70. Testing Task ● Modify existing test cases, play around ● Create some “perfect” tests ● derive test cases from requirements ● name test cases accordingly ● test boundary conditions ● readable, concise, free of duplication ● Experiment with styles PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 71. Dojo Example: Data Dojo PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY ● Study group / workshops ● Learning and sharing knowledge ● Big data technologies. ● Currently focused on Apache Spark. http://www.meetup.com/datadojo/
  • 72. Coding Dojo Vienna ● Monthly, free Coding Dojo in Vienna ● Weekdays after work ● Changing locations ● Follow #CodingDojoVie PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY http://codingdojovie.github.io/
  • 74. Code Retreat ● A day-long, intensive practice event, focusing on the fundamentals of software development and design. ● Practising the basic principles of modular and object-oriented design. ● Support mindset of quality, learning and practice! PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 75. How it started ● CodeMash conference 2009 ● Popularised by Corey Haines ● 2009 also first time outside US (Romania) PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 76. Code Retreat Structure ● Introduction 15' ● 3 Sessions ● Coding 45' ● Retrospective/Break 15' ● Lunch 60'/90' ● 3 Sessions ● Retrospective 45' PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 77. Code Retreat Principles ● Language agnostic ● Learn through pairing (switch pairs) ● Delete code after each session ● Practice ● Experiment ● Have fun! PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY http://coderetreat.org/
  • 78. Why delete the code? ● No. Listen. ● Stop trying to go faster, start trying to go slower. ● Don't think about finishing, think about improving. ● Think about practising. As a team. ● That's what this day is for. Nothing else. http://www.cyber-dojo.com/ PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 79. Code Retreat Example: GDCR PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 80. Global Day of Code Retreat ● A world-wide event celebrating passion and software craftsmanship. ● Once a year, November/December ● Whole Saturday, starting 9:00 ● Look for #GDCR15 PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY http://globalday.coderetreat.org/
  • 81. Example: Test Automation Retreat PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 87. What you need to do
  • 88. What we “Experts” need to do ● Make space for deliberate learning ● 1st Improve yourself ● Try katas ● Visit dojos/retreats ● 2nd Mentor next generations ● Prepare kata exercises ● Run in-house dojos/retreats PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 89. We will not ship shit! (Uncle Bob)
  • 90. Peter Kofler @codecopkofler www.code-cop.org PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 91. CC Images #1 ● masters https://www.flickr.com/photos/kevinpoh/4404925960 ● Bruce http://www.flickr.com/photos/sherpas428/4350620602/ ● pairing http://www.flickr.com/photos/dav/94735395/ ● wants you http://www.flickr.com/photos/shutter/105497713/ ● Cthulhu http://community.imaginefx.com/forums/thread/402575.aspx ● leaky wall https://www.flickr.com/photos/gammaman/7803857922 ● cars https://www.flickr.com/photos/24354425@N03/14575356310 ● tank https://www.flickr.com/photos/mangee/141936439 ● dump http://www.flickr.com/photos/sanmartin/2682745838/ ● measures https://www.flickr.com/photos/bigtallguy/153619774 ● hurdles https://www.flickr.com/photos/robert_voors/774926895 PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 92. CC Images #2 ● shoe maker http://www.flickr.com/photos/tbatty/1450209613/ (by 2010) ● factory http://www.flickr.com/photos/94693506@N00/4643248587/ ● Hamster http://www.flickr.com/photos/zebrapares/4529836138 ● baby http://www.flickr.com/photos/11904001@N00/3983980813/ ● sheep dip https://www.flickr.com/photos/christianspenceranderson/6990570682 ● music https://www.flickr.com/photos/jeremyhiebert/11474303315 ● code https://www.flickr.com/photos/slworking/7726767220/ ● karate http://www.flickr.com/photos/the-consortium/5301698212/ ● math https://www.flickr.com/photos/jimmiehomeschoolmom/4427775569 ● mechanic https://www.flickr.com/photos/ravages/9242464882 ● dojo http://www.flickr.com/photos/49715404@N00/3267627038/ PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 93. CC Images #3 ● todos http://www.flickr.com/photos/kylesteeddesign/3724074594/ ● rule http://www.flickr.com/photos/phunk/4188827473 ● inn http://www.flickr.com/photos/danielleblue/170496395/ ● incense http://www.flickr.com/photos/cibomahto/7651263514/ ● automation http://www.flickr.com/photos/aquilaonline/510921786/ ● finish http://www.flickr.com/photos/jayneandd/4450623309/ ● call https://www.flickr.com/photos/melenita/15166203826 PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY