Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

When Code Cries

1,297 views

Published on

In this talk from S

Published in: Technology
  • Be the first to comment

When Code Cries

  1. 1. When Code Cries Cory Foy @cory_foy cory@8thlight.comwww.8thlight.com, www.coryfoy.com
  2. 2. Bad Code
  3. 3. Is this quality code?
  4. 4. Is this quality code?
  5. 5. Is this quality code? “Code that actually gets used”
  6. 6. Is this quality code? “Code that actually gets used” “Lots of merged in pull requests”
  7. 7. Is this quality code? “Code that actually gets used” “Lots of merged in pull requests”“Quality code makes me say, "hmm," not "ick."”
  8. 8. 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”
  9. 9. “The specific patterns out of which a building or a town is made may be alive or dead. To the extent they arealive, 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”
  10. 10. Code Smells
  11. 11. Code Talks
  12. 12. Code Cries
  13. 13. Code Cries Because No OneUnderstands What It Is Saying
  14. 14. So?
  15. 15. So?
  16. 16. So?
  17. 17. http://www.flickr.com/photos/bunchofpants/99848415
  18. 18. “...we have so far beset ourselves with rules, and concepts, and ideas of what must be done to make abuilding or a town alive, that we have become afraid ofwhat 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”
  19. 19. Ten Thousand Hours
  20. 20. Functional ProgrammingImperative Programming Logic Programming Static Typing Dynamic Typing
  21. 21. Coding Standards Define Dialects
  22. 22. BICSCALP
  23. 23. BICSBasic Interpersonal Communication Skills CALP
  24. 24. BICSBasic Interpersonal Communication Skills CALPCognitive/Academic Language Proficiency
  25. 25. BICSBasic Interpersonal Communication Skills CALPCognitive/Academic Language Proficiency
  26. 26. BICS Basic Interpersonal Communication Skills Context ContextEmbedded Reduced CALP Cognitive/Academic Language Proficiency
  27. 27. Cognitively Undemanding BICS Basic Interpersonal Communication Skills Context ContextEmbedded Reduced CALP Cognitive/Academic Language Proficiency Cognitively Demanding
  28. 28. Cognitively Undemanding BICS - Copying from the board - Reading a Map - Face to Face Conversation - Selecting food in the lunchroom Context ContextEmbedded Reduced CALP Cognitively Demanding
  29. 29. Cognitively Undemanding BICS - Copying from the board - Reading a Map - Following a class schedule - Face to Face Conversation - Telephone Conversation - Selecting food in the - Oral Presentations lunchroom - Getting an absence excuse Context ContextEmbedded Reduced CALP Cognitively Demanding
  30. 30. Cognitively Undemanding BICS - Copying from the board - Reading a Map - Following a class schedule - Face to Face Conversation - Telephone Conversation - Selecting food in the - Oral Presentations lunchroom - Getting an absence excuse Context ContextEmbedded Reduced - Demonstrations - Basic Math Computations - Science Experiements CALP Cognitively Demanding
  31. 31. Cognitively Undemanding BICS - Copying from the board - Reading a Map - Following a class schedule - Face to Face Conversation - Telephone Conversation - Selecting food in the - Oral Presentations lunchroom - Getting an absence excuse Context ContextEmbedded Reduced - Demonstrations - Standardized Tests - Basic Math - Math Concepts and Computations Applications - Science Experiements - Listening to a Lecture CALP Cognitively Demanding
  32. 32. Cognitively Undemanding BICS Context ContextEmbedded Reduced CALP Cognitively Demanding
  33. 33. Foy-Z Cognitively Undemanding BICS Context ContextEmbedded Reduced CALP Cognitively Demanding
  34. 34. Foy-Z Cognitively Undemanding BICS Katas Context ContextEmbedded Reduced CALP Cognitively Demanding
  35. 35. Foy-Z Cognitively Undemanding BICS Katas Koans Context ContextEmbedded Reduced CALP Cognitively Demanding
  36. 36. Foy-Z Cognitively Undemanding BICS Katas Koans Context ContextEmbedded Reduced Adding a new Feature CALP Cognitively Demanding
  37. 37. Foy-Z Cognitively Undemanding BICS Katas Koans Context ContextEmbedded Reduced Adding a new Listening to Code Feature CALP Cognitively Demanding
  38. 38. Listening to Code http://www.flickr.com/photos/jn2race/263149573
  39. 39. Listening to CodeDecide to listen http://www.flickr.com/photos/jn2race/263149573
  40. 40. Listening to CodeDecide to listen Listen for the whole message http://www.flickr.com/photos/jn2race/263149573
  41. 41. Listening to Code Decide to listen Listen for the whole messageLet go of yourown personal agenda http://www.flickr.com/photos/jn2race/263149573
  42. 42. Listening to Code Decide to listen Listen for the whole messageLet go of yourown personal Be patient agenda http://www.flickr.com/photos/jn2race/263149573
  43. 43. Listening to Code Decide to listen Listen for the whole messageLet go of yourown personal Be patient agenda Be curious http://www.flickr.com/photos/jn2race/263149573
  44. 44. Listening to Code Decide to listen Listen for the whole messageLet go of yourown personal Be patient agenda Be curious Test for understanding http://www.flickr.com/photos/jn2race/263149573
  45. 45. 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?
  46. 46. Commonality/Variability Analysis What is common? What varies? Is it easy to swapthe things that vary?Is it easy to identify the things that are common?
  47. 47. Fowler’s Perspectives (from UML Distilled)Are we operating at the right level - Conceptual, Specification or Implementation?
  48. 48. SOLID Principles Do we have duplication(implementation or conceptual)? Single responsibilities? LoD violations? LSP violations?
  49. 49. To Listen, We Must Understand
  50. 50. To Listen, We Must UnderstandTo Understand, We Must Practice
  51. 51. To Listen, We Must Understand To Understand, We Must PracticeTo Practice, We Must Have Context
  52. 52. To Listen, We Must Understand To Understand, We Must PracticeTo Practice, We Must Have Context
  53. 53. To Listen, We Must Understand To Understand, We Must PracticeTo Practice, We Must Have Context
  54. 54. Cory Foy (@cory_foy) cory@8thlight.com www.8thlight.com www.coryfoy.com 8th LightSoftware is our craft TM

×