SlideShare une entreprise Scribd logo
1  sur  62
Software Craftsmanship and
Agile Code Games
Mike Clement
@mdclement
mike@softwareontheside.com
http://blog.softwareontheside.com
http://agilecodegames.com
“Often the true value of
a thing isn’t the thing
itself, but instead is the
activity that created it.”
-Dave Thomas
Manifesto for Agile Software Development
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on
the right, we value the items on the left more.
Principles of Agile Software Development
• Our highest priority is to satisfy the customer through early and continuous delivery of valuable
software.
• Welcome changing requirements, even late in development.
• Deliver working software frequently.
• Business people and developers must work together daily throughout the project.
• Build projects around motivated individuals.
• The most efficient and effective method of conveying information is face-to-face conversation.
• Working software is the primary measure of progress.
• Agile processes promote sustainable development.
• Continuous attention to technical excellence and good design enhances agility.
• Simplicity--the art of maximizing the amount of work not done--is essential.
• The best architectures, requirements, and designs emerge from self-organizing teams.
• At regular intervals, the team reflects on how to become more effective, then adjusts accordingly.
Principles of Agile Software Development
• satisfy the customer
• changing requirements
• deliver frequently
• work together
• motivated individuals
• face-to-face conversation
• working software
• sustainable development
• technical excellence
• simplicity
• emerge from self-organizing teams
• team reflects
Principles of Agile Software Development
• satisfy the customer
• changing requirements
• deliver frequently
• work together
• motivated individuals
• face-to-face conversation
• working software
• sustainable development
• technical excellence
• simplicity
• emerge from self-organizing teams
• team reflects
Continuous attention to
technical excellence and good
design enhances agility.
Literature Roots (1999 and 2001)
Clean Code – August 2008
Manifesto for Software Craftsmanship
As aspiring Software Craftsmen we are raising the bar of professional software
development by practicing it and helping others learn the craft. Through this work
we have come to value:
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
That is, in pursuit of the items on the left we have found the items on the right to
be indispensable.
Apprenticeship Patterns – October 2009
The Clean Coder – May 2011
Software Craftsmanship – 2013/2014
Quality Code – November 2013
Software Engineering?
Engineering is the application of scientific, economic, social, and
practical knowledge in order to design, build, maintain, and improve
structures, machines, devices, systems, materials and processes.
• Civil Engineers – do they drive rivets?
• Automotive Engineers – do they assemble cars?
• Computer Engineers – do they fabricate processors?
• Software Engineers – do they write code?
Craftsmanship: What’s different?
“Going slow today to go fast
tomorrow”
“Going deliberately today to not
be stuck tomorrow” – Me
“The only way to go fast, is to go
well” – Uncle Bob
“Optimize for read time, not
write time” – Me
Things that Software Craftsmen Value
• Growth mindset
• Adapting and changing
• Share over hoarding
• Safety to experiment
• Taking control of own destiny
• Inclusiveness
• Skill-centric over process-centric
• Situated Learning
Things that Software Craftsmen Value
• Growth mindset
• Adapting and changing
• Share over hoarding
• Safety to experiment
• Taking control of own destiny
• Inclusiveness
• Skill-centric over process-centric
• Situated learning
Situated learning is learning that
takes place in the same context in
which it is applied.
Agile Code Games
How to learn without really trying
“Often the true value of
a thing isn’t the thing
itself, but instead is the
activity that created it.”
-Dave Thomas
Code Katas
The scales and etudes of developing software
Part of a Guided Kata
FizzBuzz
Solo Randori
Coding up a problem, probably repeatedly (sometimes referred to as a kata)
Problem Description
Once upon a time there was a series of 5 books about a very English hero called Harry. (At least when this Kata was
invented, there were only 5. Since then they have multiplied) Children all over the world thought he was fantastic,
and, of course, so did the publisher. So in a gesture of immense generosity to mankind, (and to increase sales) they
set up the following pricing model to take advantage of Harry's magical powers.
One copy of any of the five books costs 8 EUR. If, however, you buy two different books from the series, you get a 5%
discount on those two books. If you buy 3 different books, you get a 10% discount. With 4 different books, you get a
20% discount. If you go the whole hog, and buy all 5, you get a huge 25% discount.
Note that if you buy, say, four books, of which 3 are different titles, you get a 10% discount on the 3 that form part of
a set, but the fourth book still costs 8 EUR.
Potter mania is sweeping the country and parents of teenagers everywhere are queueing up with shopping baskets
overflowing with Potter books. Your mission is to write a piece of code to calculate the price of any conceivable
shopping basket, giving as big a discount as possible.
For example, how much does this basket of books cost?
2 copies of the first book
2 copies of the second book
2 copies of the third book
1 copy of the fourth book
1 copy of the fifth book
(answer: 51.20 EUR)
http://www.codingdojo.org/cgi-bin/index.pl?action=browse&id=KataPotter&revision=41
Wasa
Coding up a problem, with a pair
Group Randori
Ready… fight!
Quick Concepts
TDD
• Red
• Green
• Refactor
Simple Design
• Passes all tests
• Clear, expressive, consistent
• No duplication
• Minimal
Ways to get Green
• Fake it
• Obvious implementation
• Triangulation
Rules
• Pair Programming
• Use TDD
• Everyone should be following
• Pair should be explaining
• Audience gives suggestions only with when Green
• Today: Will switch pairs about every 2 minutes
Numbers to LCD
123456789
Translates to:
// _ _ _ _ _ _ _
// | _| _||_||_ |_ ||_||_|
// ||_ _| | _||_| ||_| _|
Problem/Kata Lists
• http://codingdojo.org/
• http://codekata.com/
• http://katas.softwarecraftsmanship.org/
Koans
The Path to Enlightenment
Example Koans
• Ruby http://rubykoans.com/
• F# https://github.com/ChrisMarinos/FSharpKoans
• Javascript https://github.com/liammclennan/JavaScript-Koans
• Javascript https://github.com/mrdavidlaing/javascript-koans
• Intro to programming using Javascript
https://github.com/greatersum/intro-to-programming-using-
javascript-koans
• Linq http://linqkoans.codeplex.com/
• Approval Tests
https://github.com/approvals/ApprovalTests.Net.Koans
Coderetreat
A day like no other
Structure of Coderetreat
• Duration: 8:30am to 5 or 6pm (provide breakfast and lunch, not pizza)
• Problem: Conway's Game of Life
• Length of Session: 45 minutes (5 or 6 sessions usually)
• Pair-programming is necessary, as the knowledge transfer contained
in that activity is essential to the practice
• Prefer using Test-Driven Development (TDD)
• After each session, pairs should be swapped
• After each session, code must be deleted, not put in a branch, not
stashed, just deleted with no trace left
Activities/Constraints
• Explore the problem
• Ping pong – intro to pairing techniques
• No mouse
• Paper only
Activities/Constraints
• No naked primitives
• No conditionals
• No loops
• Only 2, 3, 4 lines per method
• Immutable
• Mute
• Evil pair/find the loophole
• Mute with find the loophole
• Tell, don’t ask
• TDD as if you meant it
Experience + Reflection =
Learning
Closing Circle
• What, if anything, did you learn today?
• What, if anything, surprised you today?
• What, if anything, will you do differently in the future?
Mob Programming
Like Randori, but larger switching cycles, and a real team working on a real system
throughout the day
One navigator, many pairs
One navigator, many mobs
Greater Sum Workshops
• 2 hours
• Opening Circle
• Name
• Programming Experience
• Silly question (What’s your favorite… ?)
• Mobbing!
• Possibly “One navigator, many mobs”
• Closing Circle
• Borrowed from Coderetreat
Software Craftsmanship Atlanta and
Utah Software Craftsmanship Format
Our meeting format differs from your usual technology user
group. At a meeting we have:
• 0-3 Lightning talks (up to but not over 5 minutes each)
• ~30 min - Reading Discussion
• ~60 min - Interactive Craftsman-run Coding Exercise (based
on the principles of a Coding Dojo)
“Often the true value of
a thing isn’t the thing
itself, but instead is the
activity that created it.”
-Dave Thomas
Books
• The Pragmatic Programmer: From Journeyman to Master
• Clean Code
• Apprenticeship Patterns (free online)
• The Clean Coder
• Software Craftsmanship: Professionalism, Pragmatism, Pride
• Quality Code: Software Testing Principles, Practices, and Patterns
• The Coding Dojo Handbook
Resources
• http://agilemanifesto.org/
• http://manifesto.softwarecraftsmanship.org/
• http://coderetreat.org/
• http://mobprogramming.org/
• http://www.agilecodegames.com/
Mike Clement
• @mdclement
• mike@softwareontheside.com
• http://blog.softwareontheside.com
• http://agilecodegames.com
• https://github.com/mdclement
• http://www.greatersum.com
• Software Craftsmanship Atlanta – first Wed at 6pm

Contenu connexe

Tendances

코루틴(Coroutine)
코루틴(Coroutine)코루틴(Coroutine)
코루틴(Coroutine)QooJuice
 
2022 01-okky-코드리뷰
2022 01-okky-코드리뷰2022 01-okky-코드리뷰
2022 01-okky-코드리뷰Myeongseok Baek
 
Thrift vs Protocol Buffers vs Avro - Biased Comparison
Thrift vs Protocol Buffers vs Avro - Biased ComparisonThrift vs Protocol Buffers vs Avro - Biased Comparison
Thrift vs Protocol Buffers vs Avro - Biased ComparisonIgor Anishchenko
 
카카오스토리 웹팀의 코드리뷰 경험
카카오스토리 웹팀의 코드리뷰 경험카카오스토리 웹팀의 코드리뷰 경험
카카오스토리 웹팀의 코드리뷰 경험Ohgyun Ahn
 
쉽게 쓰여진 Django
쉽게 쓰여진 Django쉽게 쓰여진 Django
쉽게 쓰여진 DjangoTaehoon Kim
 
The Arrow - Advanced Kanban board
The Arrow - Advanced Kanban boardThe Arrow - Advanced Kanban board
The Arrow - Advanced Kanban boardTomas Rybing
 
PopcornFlow: Continuous Evolution Through Ultra-Rapid Experimentation
PopcornFlow: Continuous Evolution Through Ultra-Rapid ExperimentationPopcornFlow: Continuous Evolution Through Ultra-Rapid Experimentation
PopcornFlow: Continuous Evolution Through Ultra-Rapid ExperimentationClaudio Perrone
 
Yazılımcı Gözüyle Scrum
Yazılımcı Gözüyle ScrumYazılımcı Gözüyle Scrum
Yazılımcı Gözüyle Scrumnedirtv
 
Fatma Urek Uludag - Discovery & Inception at Agile Practices
Fatma Urek Uludag - Discovery & Inception at Agile PracticesFatma Urek Uludag - Discovery & Inception at Agile Practices
Fatma Urek Uludag - Discovery & Inception at Agile PracticesFatma Ürek Uludağ
 
Seven Key Metrics to Improve Agile Performance
Seven Key Metrics to Improve Agile PerformanceSeven Key Metrics to Improve Agile Performance
Seven Key Metrics to Improve Agile PerformanceTechWell
 
DevOps to Agile 敏捷轉型經驗  (From DevOps to Agile: Transformation Experience of G...
DevOps to Agile 敏捷轉型經驗  (From DevOps to Agile: Transformation Experience of G...DevOps to Agile 敏捷轉型經驗  (From DevOps to Agile: Transformation Experience of G...
DevOps to Agile 敏捷轉型經驗  (From DevOps to Agile: Transformation Experience of G...William Yeh
 
Scrum master basics
Scrum master basics Scrum master basics
Scrum master basics Elad Sofer
 
모바일 앱 개발을 위한 Agile 적용
모바일 앱 개발을 위한 Agile 적용모바일 앱 개발을 위한 Agile 적용
모바일 앱 개발을 위한 Agile 적용Kevin Kim
 
Teresa Torres - An introduction to modern product discovery - Productized16
Teresa Torres - An introduction to modern product discovery - Productized16Teresa Torres - An introduction to modern product discovery - Productized16
Teresa Torres - An introduction to modern product discovery - Productized16Productized
 
Scrum simulation-with-lego-bricks-v2.0
Scrum simulation-with-lego-bricks-v2.0Scrum simulation-with-lego-bricks-v2.0
Scrum simulation-with-lego-bricks-v2.0Juan Bohorquez
 
Product Validation With Product Discovery
Product Validation With Product Discovery Product Validation With Product Discovery
Product Validation With Product Discovery Hengki Sihombing
 
Introduction to Agile Estimation & Planning
Introduction to Agile Estimation & PlanningIntroduction to Agile Estimation & Planning
Introduction to Agile Estimation & PlanningAmaad Qureshi
 

Tendances (20)

코루틴(Coroutine)
코루틴(Coroutine)코루틴(Coroutine)
코루틴(Coroutine)
 
2022 01-okky-코드리뷰
2022 01-okky-코드리뷰2022 01-okky-코드리뷰
2022 01-okky-코드리뷰
 
Thrift vs Protocol Buffers vs Avro - Biased Comparison
Thrift vs Protocol Buffers vs Avro - Biased ComparisonThrift vs Protocol Buffers vs Avro - Biased Comparison
Thrift vs Protocol Buffers vs Avro - Biased Comparison
 
Agile
AgileAgile
Agile
 
카카오스토리 웹팀의 코드리뷰 경험
카카오스토리 웹팀의 코드리뷰 경험카카오스토리 웹팀의 코드리뷰 경험
카카오스토리 웹팀의 코드리뷰 경험
 
쉽게 쓰여진 Django
쉽게 쓰여진 Django쉽게 쓰여진 Django
쉽게 쓰여진 Django
 
The Arrow - Advanced Kanban board
The Arrow - Advanced Kanban boardThe Arrow - Advanced Kanban board
The Arrow - Advanced Kanban board
 
Design Sprint
Design SprintDesign Sprint
Design Sprint
 
PopcornFlow: Continuous Evolution Through Ultra-Rapid Experimentation
PopcornFlow: Continuous Evolution Through Ultra-Rapid ExperimentationPopcornFlow: Continuous Evolution Through Ultra-Rapid Experimentation
PopcornFlow: Continuous Evolution Through Ultra-Rapid Experimentation
 
Yazılımcı Gözüyle Scrum
Yazılımcı Gözüyle ScrumYazılımcı Gözüyle Scrum
Yazılımcı Gözüyle Scrum
 
Fatma Urek Uludag - Discovery & Inception at Agile Practices
Fatma Urek Uludag - Discovery & Inception at Agile PracticesFatma Urek Uludag - Discovery & Inception at Agile Practices
Fatma Urek Uludag - Discovery & Inception at Agile Practices
 
Seven Key Metrics to Improve Agile Performance
Seven Key Metrics to Improve Agile PerformanceSeven Key Metrics to Improve Agile Performance
Seven Key Metrics to Improve Agile Performance
 
DevOps to Agile 敏捷轉型經驗  (From DevOps to Agile: Transformation Experience of G...
DevOps to Agile 敏捷轉型經驗  (From DevOps to Agile: Transformation Experience of G...DevOps to Agile 敏捷轉型經驗  (From DevOps to Agile: Transformation Experience of G...
DevOps to Agile 敏捷轉型經驗  (From DevOps to Agile: Transformation Experience of G...
 
DevOps game marshmallow challenge
DevOps game marshmallow challengeDevOps game marshmallow challenge
DevOps game marshmallow challenge
 
Scrum master basics
Scrum master basics Scrum master basics
Scrum master basics
 
모바일 앱 개발을 위한 Agile 적용
모바일 앱 개발을 위한 Agile 적용모바일 앱 개발을 위한 Agile 적용
모바일 앱 개발을 위한 Agile 적용
 
Teresa Torres - An introduction to modern product discovery - Productized16
Teresa Torres - An introduction to modern product discovery - Productized16Teresa Torres - An introduction to modern product discovery - Productized16
Teresa Torres - An introduction to modern product discovery - Productized16
 
Scrum simulation-with-lego-bricks-v2.0
Scrum simulation-with-lego-bricks-v2.0Scrum simulation-with-lego-bricks-v2.0
Scrum simulation-with-lego-bricks-v2.0
 
Product Validation With Product Discovery
Product Validation With Product Discovery Product Validation With Product Discovery
Product Validation With Product Discovery
 
Introduction to Agile Estimation & Planning
Introduction to Agile Estimation & PlanningIntroduction to Agile Estimation & Planning
Introduction to Agile Estimation & Planning
 

En vedette

Put the Tests Before the Code
Put the Tests Before the CodePut the Tests Before the Code
Put the Tests Before the CodeMike Clement
 
Using Rhino Mocks for Effective Unit Testing
Using Rhino Mocks for Effective Unit TestingUsing Rhino Mocks for Effective Unit Testing
Using Rhino Mocks for Effective Unit TestingMike Clement
 
Play to Learn: Agile Games with Cards and Dice
Play to Learn: Agile Games with Cards and DicePlay to Learn: Agile Games with Cards and Dice
Play to Learn: Agile Games with Cards and DiceMike Clement
 
Power of Patterns: Refactoring to (or away from) Patterns
Power of Patterns: Refactoring to (or away from) PatternsPower of Patterns: Refactoring to (or away from) Patterns
Power of Patterns: Refactoring to (or away from) PatternsMike Clement
 
Transformation Priority Premise: TDD Test Order Matters
Transformation Priority Premise: TDD Test Order MattersTransformation Priority Premise: TDD Test Order Matters
Transformation Priority Premise: TDD Test Order MattersMike Clement
 
FizzBuzz Guided Kata
FizzBuzz Guided KataFizzBuzz Guided Kata
FizzBuzz Guided KataMike Clement
 
The Quest for Continuous Delivery at Pluralsight
The Quest for Continuous Delivery at PluralsightThe Quest for Continuous Delivery at Pluralsight
The Quest for Continuous Delivery at PluralsightMike Clement
 
Mob Programming for Continuous Learning
Mob Programming for Continuous LearningMob Programming for Continuous Learning
Mob Programming for Continuous LearningMike Clement
 

En vedette (9)

Put the Tests Before the Code
Put the Tests Before the CodePut the Tests Before the Code
Put the Tests Before the Code
 
Thinking in F#
Thinking in F#Thinking in F#
Thinking in F#
 
Using Rhino Mocks for Effective Unit Testing
Using Rhino Mocks for Effective Unit TestingUsing Rhino Mocks for Effective Unit Testing
Using Rhino Mocks for Effective Unit Testing
 
Play to Learn: Agile Games with Cards and Dice
Play to Learn: Agile Games with Cards and DicePlay to Learn: Agile Games with Cards and Dice
Play to Learn: Agile Games with Cards and Dice
 
Power of Patterns: Refactoring to (or away from) Patterns
Power of Patterns: Refactoring to (or away from) PatternsPower of Patterns: Refactoring to (or away from) Patterns
Power of Patterns: Refactoring to (or away from) Patterns
 
Transformation Priority Premise: TDD Test Order Matters
Transformation Priority Premise: TDD Test Order MattersTransformation Priority Premise: TDD Test Order Matters
Transformation Priority Premise: TDD Test Order Matters
 
FizzBuzz Guided Kata
FizzBuzz Guided KataFizzBuzz Guided Kata
FizzBuzz Guided Kata
 
The Quest for Continuous Delivery at Pluralsight
The Quest for Continuous Delivery at PluralsightThe Quest for Continuous Delivery at Pluralsight
The Quest for Continuous Delivery at Pluralsight
 
Mob Programming for Continuous Learning
Mob Programming for Continuous LearningMob Programming for Continuous Learning
Mob Programming for Continuous Learning
 

Similaire à Software Craftsmanship and Agile Code Games

"Startups, comment gérer une équipe de développeurs" par Laurent Cerveau
"Startups, comment gérer une équipe de développeurs" par Laurent Cerveau"Startups, comment gérer une équipe de développeurs" par Laurent Cerveau
"Startups, comment gérer une équipe de développeurs" par Laurent CerveauTheFamily
 
Distributed teams - it takes two to tango
Distributed teams - it takes two to tangoDistributed teams - it takes two to tango
Distributed teams - it takes two to tangoMille Bessö
 
Webinar - Design thinking 101 - 2018-07-24
Webinar - Design thinking 101 - 2018-07-24Webinar - Design thinking 101 - 2018-07-24
Webinar - Design thinking 101 - 2018-07-24TechSoup
 
Redesigning everything ITARC Stockholm 2021
Redesigning everything ITARC Stockholm 2021Redesigning everything ITARC Stockholm 2021
Redesigning everything ITARC Stockholm 2021Alberto Brandolini
 
Software development management slides by George Berkowski (Hailo)
Software development management slides by George Berkowski (Hailo)Software development management slides by George Berkowski (Hailo)
Software development management slides by George Berkowski (Hailo)MiniBar
 
The 360 Developer
The 360 DeveloperThe 360 Developer
The 360 Developerenteritos
 
Agile software development
Agile software developmentAgile software development
Agile software developmentHemangi Talele
 
It's XP Stupid (2019)
It's XP Stupid (2019)It's XP Stupid (2019)
It's XP Stupid (2019)Mike Harris
 
Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)David Benjamin
 
Agile Software Development.ppt
Agile Software Development.pptAgile Software Development.ppt
Agile Software Development.pptabdulwehab2
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software DevelopmentAhmet Bulut
 
Extreme Programming (XP): Revisted
Extreme Programming (XP): RevistedExtreme Programming (XP): Revisted
Extreme Programming (XP): RevistedMike Harris
 
Intro to Agile and Lean UX
Intro to Agile and Lean UXIntro to Agile and Lean UX
Intro to Agile and Lean UXJacklyn Burgan
 
MagmaRails - Passionate Programmer
MagmaRails - Passionate ProgrammerMagmaRails - Passionate Programmer
MagmaRails - Passionate ProgrammerEdwin Cruz
 
Introducing Pair Programming
Introducing Pair ProgrammingIntroducing Pair Programming
Introducing Pair ProgrammingSteven Smith
 
10 Observations from 10+ years in the Corporate UX Trenches
10 Observations from 10+ years in the Corporate UX Trenches10 Observations from 10+ years in the Corporate UX Trenches
10 Observations from 10+ years in the Corporate UX TrenchesArio Jafarzadeh
 

Similaire à Software Craftsmanship and Agile Code Games (20)

"Startups, comment gérer une équipe de développeurs" par Laurent Cerveau
"Startups, comment gérer une équipe de développeurs" par Laurent Cerveau"Startups, comment gérer une équipe de développeurs" par Laurent Cerveau
"Startups, comment gérer une équipe de développeurs" par Laurent Cerveau
 
Binary crosswords
Binary crosswordsBinary crosswords
Binary crosswords
 
It's XP, Stupid
It's XP, StupidIt's XP, Stupid
It's XP, Stupid
 
Distributed teams - it takes two to tango
Distributed teams - it takes two to tangoDistributed teams - it takes two to tango
Distributed teams - it takes two to tango
 
Webinar - Design thinking 101 - 2018-07-24
Webinar - Design thinking 101 - 2018-07-24Webinar - Design thinking 101 - 2018-07-24
Webinar - Design thinking 101 - 2018-07-24
 
Redesigning everything ITARC Stockholm 2021
Redesigning everything ITARC Stockholm 2021Redesigning everything ITARC Stockholm 2021
Redesigning everything ITARC Stockholm 2021
 
Software development management slides by George Berkowski (Hailo)
Software development management slides by George Berkowski (Hailo)Software development management slides by George Berkowski (Hailo)
Software development management slides by George Berkowski (Hailo)
 
The 360 Developer
The 360 DeveloperThe 360 Developer
The 360 Developer
 
Agile software development
Agile software developmentAgile software development
Agile software development
 
It's XP Stupid (2019)
It's XP Stupid (2019)It's XP Stupid (2019)
It's XP Stupid (2019)
 
Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)
 
Agile Software Development.ppt
Agile Software Development.pptAgile Software Development.ppt
Agile Software Development.ppt
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
 
Extreme Programming (XP): Revisted
Extreme Programming (XP): RevistedExtreme Programming (XP): Revisted
Extreme Programming (XP): Revisted
 
Intro to Agile and Lean UX
Intro to Agile and Lean UXIntro to Agile and Lean UX
Intro to Agile and Lean UX
 
The alignment
The alignmentThe alignment
The alignment
 
MagmaRails - Passionate Programmer
MagmaRails - Passionate ProgrammerMagmaRails - Passionate Programmer
MagmaRails - Passionate Programmer
 
Introducing Pair Programming
Introducing Pair ProgrammingIntroducing Pair Programming
Introducing Pair Programming
 
10 Observations from 10+ years in the Corporate UX Trenches
10 Observations from 10+ years in the Corporate UX Trenches10 Observations from 10+ years in the Corporate UX Trenches
10 Observations from 10+ years in the Corporate UX Trenches
 
Working in teams vs working individually
Working in teams vs working individuallyWorking in teams vs working individually
Working in teams vs working individually
 

Plus de Mike Clement

Collaboration Principles from Mob Programming
Collaboration Principles from Mob ProgrammingCollaboration Principles from Mob Programming
Collaboration Principles from Mob ProgrammingMike Clement
 
Focus on Flow: Lean Principles in Action
Focus on Flow: Lean Principles in ActionFocus on Flow: Lean Principles in Action
Focus on Flow: Lean Principles in ActionMike Clement
 
Taming scary production code that nobody wants to touch
Taming scary production code that nobody wants to touchTaming scary production code that nobody wants to touch
Taming scary production code that nobody wants to touchMike Clement
 
Develop your sense of code smell
Develop your sense of code smellDevelop your sense of code smell
Develop your sense of code smellMike Clement
 
Maps over Backlogs: User Story Mapping to Share the Big Picture
Maps over Backlogs: User Story Mapping to Share the Big PictureMaps over Backlogs: User Story Mapping to Share the Big Picture
Maps over Backlogs: User Story Mapping to Share the Big PictureMike Clement
 
Escaping the Pitfalls of Software Product Development
Escaping the Pitfalls of Software Product DevelopmentEscaping the Pitfalls of Software Product Development
Escaping the Pitfalls of Software Product DevelopmentMike Clement
 
Code Katas Spring 2012
Code Katas Spring 2012Code Katas Spring 2012
Code Katas Spring 2012Mike Clement
 
Linq (from the inside)
Linq (from the inside)Linq (from the inside)
Linq (from the inside)Mike Clement
 
Bowling Game Kata in C# Adapted
Bowling Game Kata in C# AdaptedBowling Game Kata in C# Adapted
Bowling Game Kata in C# AdaptedMike Clement
 
Code Katas: Practicing Your Craft
Code Katas: Practicing Your CraftCode Katas: Practicing Your Craft
Code Katas: Practicing Your CraftMike Clement
 
Software Craftsmanship
Software CraftsmanshipSoftware Craftsmanship
Software CraftsmanshipMike Clement
 

Plus de Mike Clement (11)

Collaboration Principles from Mob Programming
Collaboration Principles from Mob ProgrammingCollaboration Principles from Mob Programming
Collaboration Principles from Mob Programming
 
Focus on Flow: Lean Principles in Action
Focus on Flow: Lean Principles in ActionFocus on Flow: Lean Principles in Action
Focus on Flow: Lean Principles in Action
 
Taming scary production code that nobody wants to touch
Taming scary production code that nobody wants to touchTaming scary production code that nobody wants to touch
Taming scary production code that nobody wants to touch
 
Develop your sense of code smell
Develop your sense of code smellDevelop your sense of code smell
Develop your sense of code smell
 
Maps over Backlogs: User Story Mapping to Share the Big Picture
Maps over Backlogs: User Story Mapping to Share the Big PictureMaps over Backlogs: User Story Mapping to Share the Big Picture
Maps over Backlogs: User Story Mapping to Share the Big Picture
 
Escaping the Pitfalls of Software Product Development
Escaping the Pitfalls of Software Product DevelopmentEscaping the Pitfalls of Software Product Development
Escaping the Pitfalls of Software Product Development
 
Code Katas Spring 2012
Code Katas Spring 2012Code Katas Spring 2012
Code Katas Spring 2012
 
Linq (from the inside)
Linq (from the inside)Linq (from the inside)
Linq (from the inside)
 
Bowling Game Kata in C# Adapted
Bowling Game Kata in C# AdaptedBowling Game Kata in C# Adapted
Bowling Game Kata in C# Adapted
 
Code Katas: Practicing Your Craft
Code Katas: Practicing Your CraftCode Katas: Practicing Your Craft
Code Katas: Practicing Your Craft
 
Software Craftsmanship
Software CraftsmanshipSoftware Craftsmanship
Software Craftsmanship
 

Dernier

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Principled Technologies
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
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
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
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
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
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
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
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
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 

Dernier (20)

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
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
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
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...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
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
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
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
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 

Software Craftsmanship and Agile Code Games

  • 1. Software Craftsmanship and Agile Code Games Mike Clement @mdclement mike@softwareontheside.com http://blog.softwareontheside.com http://agilecodegames.com
  • 2. “Often the true value of a thing isn’t the thing itself, but instead is the activity that created it.” -Dave Thomas
  • 3. Manifesto for Agile Software Development We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more.
  • 4. Principles of Agile Software Development • Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. • Welcome changing requirements, even late in development. • Deliver working software frequently. • Business people and developers must work together daily throughout the project. • Build projects around motivated individuals. • The most efficient and effective method of conveying information is face-to-face conversation. • Working software is the primary measure of progress. • Agile processes promote sustainable development. • Continuous attention to technical excellence and good design enhances agility. • Simplicity--the art of maximizing the amount of work not done--is essential. • The best architectures, requirements, and designs emerge from self-organizing teams. • At regular intervals, the team reflects on how to become more effective, then adjusts accordingly.
  • 5. Principles of Agile Software Development • satisfy the customer • changing requirements • deliver frequently • work together • motivated individuals • face-to-face conversation • working software • sustainable development • technical excellence • simplicity • emerge from self-organizing teams • team reflects
  • 6. Principles of Agile Software Development • satisfy the customer • changing requirements • deliver frequently • work together • motivated individuals • face-to-face conversation • working software • sustainable development • technical excellence • simplicity • emerge from self-organizing teams • team reflects
  • 7. Continuous attention to technical excellence and good design enhances agility.
  • 9. Clean Code – August 2008
  • 10. Manifesto for Software Craftsmanship As aspiring Software Craftsmen we are raising the bar of professional software development by practicing it and helping others learn the craft. Through this work we have come to value: 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 That is, in pursuit of the items on the left we have found the items on the right to be indispensable.
  • 12. The Clean Coder – May 2011
  • 14. Quality Code – November 2013
  • 15. Software Engineering? Engineering is the application of scientific, economic, social, and practical knowledge in order to design, build, maintain, and improve structures, machines, devices, systems, materials and processes. • Civil Engineers – do they drive rivets? • Automotive Engineers – do they assemble cars? • Computer Engineers – do they fabricate processors? • Software Engineers – do they write code?
  • 17. “Going slow today to go fast tomorrow”
  • 18. “Going deliberately today to not be stuck tomorrow” – Me
  • 19. “The only way to go fast, is to go well” – Uncle Bob
  • 20. “Optimize for read time, not write time” – Me
  • 21. Things that Software Craftsmen Value • Growth mindset • Adapting and changing • Share over hoarding • Safety to experiment • Taking control of own destiny • Inclusiveness • Skill-centric over process-centric • Situated Learning
  • 22. Things that Software Craftsmen Value • Growth mindset • Adapting and changing • Share over hoarding • Safety to experiment • Taking control of own destiny • Inclusiveness • Skill-centric over process-centric • Situated learning
  • 23. Situated learning is learning that takes place in the same context in which it is applied.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30. Agile Code Games How to learn without really trying
  • 31. “Often the true value of a thing isn’t the thing itself, but instead is the activity that created it.” -Dave Thomas
  • 32. Code Katas The scales and etudes of developing software
  • 33. Part of a Guided Kata FizzBuzz
  • 34. Solo Randori Coding up a problem, probably repeatedly (sometimes referred to as a kata)
  • 35. Problem Description Once upon a time there was a series of 5 books about a very English hero called Harry. (At least when this Kata was invented, there were only 5. Since then they have multiplied) Children all over the world thought he was fantastic, and, of course, so did the publisher. So in a gesture of immense generosity to mankind, (and to increase sales) they set up the following pricing model to take advantage of Harry's magical powers. One copy of any of the five books costs 8 EUR. If, however, you buy two different books from the series, you get a 5% discount on those two books. If you buy 3 different books, you get a 10% discount. With 4 different books, you get a 20% discount. If you go the whole hog, and buy all 5, you get a huge 25% discount. Note that if you buy, say, four books, of which 3 are different titles, you get a 10% discount on the 3 that form part of a set, but the fourth book still costs 8 EUR. Potter mania is sweeping the country and parents of teenagers everywhere are queueing up with shopping baskets overflowing with Potter books. Your mission is to write a piece of code to calculate the price of any conceivable shopping basket, giving as big a discount as possible. For example, how much does this basket of books cost? 2 copies of the first book 2 copies of the second book 2 copies of the third book 1 copy of the fourth book 1 copy of the fifth book (answer: 51.20 EUR) http://www.codingdojo.org/cgi-bin/index.pl?action=browse&id=KataPotter&revision=41
  • 36. Wasa Coding up a problem, with a pair
  • 38. Quick Concepts TDD • Red • Green • Refactor Simple Design • Passes all tests • Clear, expressive, consistent • No duplication • Minimal
  • 39. Ways to get Green • Fake it • Obvious implementation • Triangulation
  • 40. Rules • Pair Programming • Use TDD • Everyone should be following • Pair should be explaining • Audience gives suggestions only with when Green • Today: Will switch pairs about every 2 minutes
  • 41. Numbers to LCD 123456789 Translates to: // _ _ _ _ _ _ _ // | _| _||_||_ |_ ||_||_| // ||_ _| | _||_| ||_| _|
  • 42. Problem/Kata Lists • http://codingdojo.org/ • http://codekata.com/ • http://katas.softwarecraftsmanship.org/
  • 43. Koans The Path to Enlightenment
  • 44. Example Koans • Ruby http://rubykoans.com/ • F# https://github.com/ChrisMarinos/FSharpKoans • Javascript https://github.com/liammclennan/JavaScript-Koans • Javascript https://github.com/mrdavidlaing/javascript-koans • Intro to programming using Javascript https://github.com/greatersum/intro-to-programming-using- javascript-koans • Linq http://linqkoans.codeplex.com/ • Approval Tests https://github.com/approvals/ApprovalTests.Net.Koans
  • 46. Structure of Coderetreat • Duration: 8:30am to 5 or 6pm (provide breakfast and lunch, not pizza) • Problem: Conway's Game of Life • Length of Session: 45 minutes (5 or 6 sessions usually) • Pair-programming is necessary, as the knowledge transfer contained in that activity is essential to the practice • Prefer using Test-Driven Development (TDD) • After each session, pairs should be swapped • After each session, code must be deleted, not put in a branch, not stashed, just deleted with no trace left
  • 47. Activities/Constraints • Explore the problem • Ping pong – intro to pairing techniques • No mouse • Paper only
  • 48. Activities/Constraints • No naked primitives • No conditionals • No loops • Only 2, 3, 4 lines per method • Immutable • Mute • Evil pair/find the loophole • Mute with find the loophole • Tell, don’t ask • TDD as if you meant it
  • 50. Closing Circle • What, if anything, did you learn today? • What, if anything, surprised you today? • What, if anything, will you do differently in the future?
  • 51. Mob Programming Like Randori, but larger switching cycles, and a real team working on a real system throughout the day
  • 52.
  • 54.
  • 56.
  • 57. Greater Sum Workshops • 2 hours • Opening Circle • Name • Programming Experience • Silly question (What’s your favorite… ?) • Mobbing! • Possibly “One navigator, many mobs” • Closing Circle • Borrowed from Coderetreat
  • 58. Software Craftsmanship Atlanta and Utah Software Craftsmanship Format Our meeting format differs from your usual technology user group. At a meeting we have: • 0-3 Lightning talks (up to but not over 5 minutes each) • ~30 min - Reading Discussion • ~60 min - Interactive Craftsman-run Coding Exercise (based on the principles of a Coding Dojo)
  • 59. “Often the true value of a thing isn’t the thing itself, but instead is the activity that created it.” -Dave Thomas
  • 60. Books • The Pragmatic Programmer: From Journeyman to Master • Clean Code • Apprenticeship Patterns (free online) • The Clean Coder • Software Craftsmanship: Professionalism, Pragmatism, Pride • Quality Code: Software Testing Principles, Practices, and Patterns • The Coding Dojo Handbook
  • 61. Resources • http://agilemanifesto.org/ • http://manifesto.softwarecraftsmanship.org/ • http://coderetreat.org/ • http://mobprogramming.org/ • http://www.agilecodegames.com/
  • 62. Mike Clement • @mdclement • mike@softwareontheside.com • http://blog.softwareontheside.com • http://agilecodegames.com • https://github.com/mdclement • http://www.greatersum.com • Software Craftsmanship Atlanta – first Wed at 6pm

Notes de l'éditeur

  1. Verbs vs. Nouns Requirements “Plans are useless, but planning is invaluable” – Dwight D. Eisenhower the value is the process that everyone goes through in order to produce the document: the understanding gained, the relationships forged, the negotiations, the compromises, and all the other little interactions which share information. Quality Plan, measure, build a quality product! Quality is PART OF THE PROCESS. Quality is in the spirit of the smallest of our daily activities.
  2. A Handbook for Agile Software Craftsmanship
  3. March 2009 A manifesto to complement the Agile Manifesto
  4. Mostly about software testing, but great intro that talks about why code quality is important and uses the context of craftsmanship
  5. Do any other professionals that use the title “engineer” work all the way through the process, from design to building to testing? So, while there are aspects of engineering in software, there is just as much craft.
  6. Notes from recent discussion at the Salt Lake Agile Roundtable – question was “What’s different about Software Craftsmen? Why should a company care?”
  7. Great for what it says, trying F#, but if you really want to learn how to use it, you need to use it in the environment in which you will use it for real.
  8. Agile community has “Agile Games” that facilitate learning of agile/lean principles Emily Bache talks about many of these as part of a catalog of activities that you would do at a Coding Dojo, but I wanted to broaden the scope.
  9. Verbs vs. Nouns Requirements “Plans are useless, but planning is invaluable” – Dwight D. Eisenhower the value is the process that everyone goes through in order to produce the document: the understanding gained, the relationships forged, the negotiations, the compromises, and all the other little interactions which share information. Quality Plan, measure, build a quality product! Quality is PART OF THE PROCESS. Quality is in the spirit of the smallest of our daily activities.
  10. Japanese word describing detailed choreographed patterns of movements practiced either solo or in pairs. A kata is a coding exercise that performed repeatedly and perfected. Practicing a specific skill
  11. Familiarity with TDD Familiarity with Principles of Simple Design
  12. if anyone is lost, pair should explain – audience can ask clarifying questions, but not give suggestions unless Green
  13. A story, dialog, question or statement which is used to test a students progress.
  14. From a practical standpoint, if you facilitate a coderetreat, it’s best to give the group some time to reflect (3-5 minutes) and then write down their own answers to these questions so that the circle can move quickly.
  15. Currently reading Apprenticeship Patterns
  16. Verbs vs. Nouns Requirements “Plans are useless, but planning is invaluable” – Dwight D. Eisenhower the value is the process that everyone goes through in order to produce the document: the understanding gained, the relationships forged, the negotiations, the compromises, and all the other little interactions which share information. Quality Plan, measure, build a quality product! Quality is PART OF THE PROCESS. Quality is in the spirit of the smallest of our daily activities.