Download - When Code Cries: Listening to Code
![Page 1: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/1.jpg)
BT10 Concurrent Session 11/14/2013 3:45 PM
"When Code Cries: Listening to Code"
Presented by:
Cory Foy Cory Foy, LLC
Brought to you by:
340 Corporate Way, Suite 300, Orange Park, FL 32073 888‐268‐8770 ∙ 904‐278‐0524 ∙ [email protected] ∙ www.sqe.com
![Page 2: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/2.jpg)
Cory Foy Cory Foy, LLC
A passionate technical executive, developer, blogger, and speaker, Cory Foy has more than sixteen years of software and technology experience, and ten years of agile and lean methods experience. His background includes work in the health care, financial, and technology sectors, serving as a Premier Field Engineer and Team System Ranger for Microsoft; consulting with DirecTV, Stratos Global, and Invensys as a senior consultant for Net Objectives; and architecting solutions for organizations such as MIT's College of Engineering while at 8th Light. Cory's blog coryfoy.com was ranked as one of the top 100 Agile blogs. You can find Cory on Twitter @cory_foy and on LinkedIn at linkedin.com/in/coryfoy.
![Page 4: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/4.jpg)
Bad Code
![Page 5: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/5.jpg)
Is this quality code?
![Page 6: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/6.jpg)
Is this quality code?
![Page 7: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/7.jpg)
Is this quality code?
“Code that actually gets used”
![Page 8: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/8.jpg)
Is this quality code?
“Code that actually gets used”
“Lots of merged in pull requests”
![Page 9: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/9.jpg)
Is this quality code?
“Code that actually gets used”
“Lots of merged in pull requests”
“Quality code makes me say, "hmm," not
"ick."”
![Page 10: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/10.jpg)
Is this quality code?
“Code that actually gets used”
“Lots of merged in pull requests”
“Quality code makes me say, "hmm," not
"ick."”
“If, when used, it pleases the user”
![Page 11: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/11.jpg)
“The specific patterns out of which a building or a town is made may be alive or dead. To the extent they are
alive, they let our inner forces loose, and set us free; but when they are dead, they keep us locked in inner
conflict.”Christopher Alexander - “The Timeless Way of Building”
![Page 12: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/12.jpg)
![Page 13: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/13.jpg)
![Page 14: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/14.jpg)
Code Smells
![Page 15: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/15.jpg)
Code Talks
![Page 16: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/16.jpg)
Code Cries
![Page 17: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/17.jpg)
Because No One Understands What It Is
Saying
Code Cries
![Page 18: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/18.jpg)
So?
![Page 19: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/19.jpg)
So?
![Page 20: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/20.jpg)
So?
![Page 21: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/21.jpg)
http://www.flickr.com/photos/bunchofpants/99848415
![Page 22: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/22.jpg)
![Page 23: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/23.jpg)
![Page 24: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/24.jpg)
“...we have so far beset ourselves with rules, and concepts, and ideas of what must be done to make a
building or a town alive, that we have become afraid of what will happen naturally, and convinced that we must
work within a “system” and with “methods” since without them our surroundings will come tumbling
down in chaos.”Christopher Alexander - “The Timeless Way of Building”
![Page 25: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/25.jpg)
Ten Thousand Hours
![Page 26: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/26.jpg)
Ten Thousand Hours
Ten Thousand Hours
![Page 27: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/27.jpg)
![Page 28: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/28.jpg)
![Page 29: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/29.jpg)
![Page 30: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/30.jpg)
![Page 31: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/31.jpg)
Functional ProgrammingImperative Programming
Logic ProgrammingStatic Typing
Dynamic Typing
![Page 32: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/32.jpg)
Coding Standards Define Dialects
![Page 33: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/33.jpg)
BICS
CALP
![Page 34: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/34.jpg)
BICS
CALP
![Page 35: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/35.jpg)
BICS
CALP
ContextReduced
ContextEmbedded
![Page 36: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/36.jpg)
BICS
CALP
ContextReduced
ContextEmbedded
Cognitively Undemanding
Cognitively Demanding
- Copying from the board- Reading a Map- Face to Face Conversation- Selecting food in the lunchroom
![Page 37: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/37.jpg)
BICS
CALP
ContextReduced
ContextEmbedded
Cognitively Undemanding
Cognitively Demanding
- Copying from the board- Reading a Map- Face to Face Conversation- Selecting food in the lunchroom
- Following a class schedule- Telephone Conversation- Oral Presentations- Getting an absence excuse
![Page 38: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/38.jpg)
BICS
CALP
ContextReduced
ContextEmbedded
Cognitively Undemanding
Cognitively Demanding
- Copying from the board- Reading a Map- Face to Face Conversation- Selecting food in the lunchroom
- Following a class schedule- Telephone Conversation- Oral Presentations- Getting an absence excuse
- Demonstrations- Basic Math Computations- Science Experiements
![Page 39: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/39.jpg)
BICS
CALP
ContextReduced
ContextEmbedded
Cognitively Undemanding
Cognitively Demanding
- Copying from the board- Reading a Map- Face to Face Conversation- Selecting food in the lunchroom
- Following a class schedule- Telephone Conversation- Oral Presentations- Getting an absence excuse
- Demonstrations- Basic Math Computations- Science Experiements
- Standardized Tests- Math Concepts and Applications- Listening to a Lecture
![Page 40: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/40.jpg)
BICS
CALP
ContextReduced
ContextEmbedded
Cognitively Undemanding
Cognitively Demanding
![Page 41: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/41.jpg)
BICS
CALP
ContextReduced
ContextEmbedded
Cognitively Undemanding
Cognitively Demanding
Foy-Z
![Page 42: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/42.jpg)
BICS
CALP
ContextReduced
ContextEmbedded
Cognitively Undemanding
Cognitively Demanding
Katas
Foy-Z
![Page 43: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/43.jpg)
BICS
CALP
ContextReduced
ContextEmbedded
Cognitively Undemanding
Cognitively Demanding
Katas Koans
Foy-Z
![Page 44: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/44.jpg)
BICS
CALP
ContextReduced
ContextEmbedded
Cognitively Undemanding
Cognitively Demanding
Katas Koans
Adding a new Feature
Foy-Z
![Page 45: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/45.jpg)
BICS
CALP
ContextReduced
ContextEmbedded
Cognitively Undemanding
Cognitively Demanding
Katas Koans
Adding a new Feature
Listening to Code
Foy-Z
![Page 46: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/46.jpg)
Listening to Code
http://www.flickr.com/photos/jn2race/263149573
![Page 47: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/47.jpg)
Listening to Code
Decide to listen
http://www.flickr.com/photos/jn2race/263149573
![Page 48: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/48.jpg)
Listening to Code
Decide to listen Listen for the whole message
http://www.flickr.com/photos/jn2race/263149573
![Page 49: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/49.jpg)
Listening to Code
Let go of your own personal
agenda
Decide to listen Listen for the whole message
http://www.flickr.com/photos/jn2race/263149573
![Page 50: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/50.jpg)
Listening to Code
Let go of your own personal
agenda
Decide to listen Listen for the whole message
Be patient
http://www.flickr.com/photos/jn2race/263149573
![Page 51: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/51.jpg)
Listening to Code
Let go of your own personal
agenda
Decide to listen
Be curious
Listen for the whole message
Be patient
http://www.flickr.com/photos/jn2race/263149573
![Page 52: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/52.jpg)
Listening to Code
Let go of your own personal
agenda
Decide to listen
Be curious
Listen for the whole message
Be patient
Test for understanding
http://www.flickr.com/photos/jn2race/263149573
![Page 53: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/53.jpg)
4 Rules of Simple Design
Does this code express all of the ideas we want to
express?
Are there concepts from our domain
that can be expressed?
![Page 54: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/54.jpg)
Commonality/Variability Analysis
What is common? What varies?
Is it easy to swap the things that vary?
Is it easy to identify the things that are
common?
![Page 55: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/55.jpg)
Fowler’s Perspectives (from UML Distilled)
Are we operating at the right level -
Conceptual, Specification or Implementation?
![Page 56: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/56.jpg)
SOLID Principles
Do we have duplication
(implementation or conceptual)?
Single responsibilities?
LoD violations?
LSP violations?
![Page 57: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/57.jpg)
![Page 58: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/58.jpg)
To Listen, We Must Understand
![Page 59: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/59.jpg)
To Listen, We Must Understand
To Understand, We Must Practice
![Page 60: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/60.jpg)
To Listen, We Must Understand
To Understand, We Must Practice
To Practice, We Must Have Context
![Page 61: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/61.jpg)
To Listen, We Must Understand
To Understand, We Must Practice
To Practice, We Must Have Context
![Page 62: When Code Cries: Listening to Code](https://reader034.vdocument.in/reader034/viewer/2022052619/555de193d8b42a192c8b4e82/html5/thumbnails/62.jpg)
To Listen, We Must Understand
To Understand, We Must Practice
To Practice, We Must Have Context