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.

A Programmer's Guide to Humans

526 views

Published on

What makes software development complex isn't the code, it's the humans. The most effective way to improve our capabilities in software development is to better understand ourselves.

In this talk, I'll introduce a conceptual model for human interaction, identity, culture, communication, relationships, and learning based on the foundational model of Idea Flow. If you were to write a simulator to describe the interaction of humans, this talk would describe the architecture.

Learn how to understand the humans on your team and fix the bugs in communication, by thinking about your teammates like code!

Edit
Archive
Delete
I'm not a scientist or a psychologist. These ideas are based on a combination of personal experience, reading lots of cognitive science books, and a couple years of running experiments on developers. As I struggled through the challenges of getting a software concept from my head to another developer's head (interpersonal Idea Flow), I learned a whole lot about human interaction.

As software developers, we have to work together, think together, and solve problems together to do our jobs. Code? We get it. Humans? WTF?!

Fortunately, humans are predictably irrational, predictably emotional, and predictably judgmental creatures. Of course those pesky humans will always do a few unexpected things, but once we know the algorithm for peace and harmony among humans, we can start debugging the communication problems on our team.

Published in: Software
  • Be the first to comment

A Programmer's Guide to Humans

  1. 1. Janelle Klein openmastery.org @janellekz A Programmer’s Guide To HUMANS
  2. 2. SPC Looks okay. Alert! Measurements Tools About 10 Years Ago… Statistical Process Control (SPC) in Semiconductor
  3. 3. SPC Looks okay. Alert! Measurements Tools We shipped to production…
  4. 4. SPC Looks okay. Shutdown! Measurements Tools Missing Config Change We shipped to production…
  5. 5. SPC Measurements Looks okay. Alert! Tools We shipped to production…AGAIN
  6. 6. SPC Looks okay. Shutdown! Measurements Tools We couldn’t reproduce the problem! We shipped to production…AGAIN
  7. 7. SPC Looks okay. Shutdown! Measurements Tools Six months later… Threading Bug
  8. 8. SPC Measurements Looks okay. Alert! Tools We shipped to production… AGAIN (3x)
  9. 9. SPC Looks okay. Shutdown! Measurements Tools Memory Leak We shipped to production… AGAIN (3x) Totally my fault.
  10. 10. We had an AWESOME team! We had a MOUNTAIN of automation! We were DISCIPLINED with best practices! + Project FAILURE
  11. 11. + We had a GREAT team! We had a MOUNTAIN of automation! We were DISCIPLINED with best practices! How did we turn this around?
  12. 12. The Retrospective “Our tests aren’t catching our bugs!” Our biggest problem “Well, if we don’t understand a problem, we should collect data.” “What data would help us understand the problem?”
  13. 13. Technical Debt Mistakes I thought the problem was Technical Debt
  14. 14. SPC Looks okay. Alert! Measurements Tools System Architecture Statistical Process Control (SPC) UI code Charting Code
  15. 15. Beautiful Looks okay. Alert! Measurements Tools UGLY UGLY System Architecture Statistical Process Control (SPC)
  16. 16. Complex( So*ware( PAIN This is what I knew... What made development feel painful?
  17. 17. Unexpected Behavior Problem Resolved Tracking Painful Experience with the Code Troubleshooting Progress 5 hours and 18 minutes of troubleshooting... PAINFUL
  18. 18. The amount of PAIN was caused by… Likeliness(of(( Unexpected( Behavior( Cost(to(Troubleshoot(and(Repair( High(Frequency( Low(Impact( Low(Frequency( Low(Impact( Low(Frequency( High(Impact( PAIN(
  19. 19. What Causes Unexpected Behavior (likeliness)? What Makes Troubleshooting Time-Consuming (impact)? Semantic Mistakes Stale Memory Mistakes Association Mistakes Bad Input Assumption Tedious Change Mistakes Copy-Edit Mistakes Transposition Mistakes Failed Refactor Mistakes False Alarm Non-Deterministic Behavior Ambiguous Clues Lots of Code Changes Noisy Output Cryptic Output Long Execution Time Environment Cleanup Test Data Creation Using Debugger Most of the pain was caused by human factors. What causes PAIN?
  20. 20. What Causes Unexpected Behavior (likeliness)? What Makes Troubleshooting Time-Consuming (impact)? Non-Deterministic Behavior Ambiguous Clues Lots of Code Changes Noisy Output Cryptic Output Long Execution Time Environment Cleanup Test Data Creation Using Debugger What causes PAIN? Most of the pain was caused by human factors. Semantic Mistakes Stale Memory Mistakes Association Mistakes Bad Input Assumption Tedious Change Mistakes Copy-Edit Mistakes Transposition Mistakes Failed Refactor Mistakes False Alarm
  21. 21. What Causes Unexpected Behavior (likeliness)? What Makes Troubleshooting Time-Consuming (impact)? Non-Deterministic Behavior Ambiguous Clues Lots of Code Changes Noisy Output Cryptic Output Long Execution Time Environment Cleanup Test Data Creation Using Debugger What causes PAIN? Semantic Mistakes Stale Memory Mistakes Association Mistakes Bad Input Assumption Tedious Change Mistakes Copy-Edit Mistakes Transposition Mistakes Failed Refactor Mistakes False Alarm Most of the pain was caused by human factors.
  22. 22. PAIN occurs during the process of understanding and extending the software Complex( So*ware( PAIN Not the Code. Optimize “Idea Flow”
  23. 23. PAIN occurs during the process of understanding and extending the software Complex( So*ware( PAIN Not the Code. Optimize “Idea Flow” Data-driven Improvement
  24. 24. My team spent tons of time working on improvements that didn’t make much difference. We had tons of automation, but the automation didn’t catch our bugs.
  25. 25. My team spent tons of time working on improvements that didn’t make much difference. We had well-modularized code, but it was still extremely time-consuming to troubleshoot defects.
  26. 26. The hard part isn’t solving the problems it’s identifying the right problems to solve. “What are the specific problems that are causing the team’s pain?”
  27. 27. We learned how to learn together Culture What changed on our team?
  28. 28. The Fifth Discipline The Art & Practice of the Learning Organization Peter Senge The Most INSPIRING Book EVER…
  29. 29. We learned how to learn together? What if…
  30. 30. We saw the world as one big design problem? What if…
  31. 31. Coding problem? We’ve got tools for this. Service 2Service 1 Human problem? PANIC! “Let’s fix these HUMAN Problems!” A Scary Thought to Engineers
  32. 32. Predictably Irrational Dan Ariely “What if I could explain humans like code?” Crazy Idea:
  33. 33. Code problems? We’ve got tools for this. Service 2Service 1 Humans Become an Engineering Problem Service 2Service 1 Human Problems? We’ve got tools for this too. This Talk: Culture from the Inside Out
  34. 34. Output: Decisions Feedback Loop DB Pain Signal Input: Ideas HUMAN = Decision-Making Engine Awesome Signal Goal: Minimize PAIN Maximize AWESOME
  35. 35. Recognition: How do ideas get inside our head? Input: Ideas
  36. 36. Metaphors We Live By George Lakoff and Mark Johnson On Intelligence Jeff Hawkins + A Synthesis of the Research In…
  37. 37. Observe Pattern “Do I know this pattern?” Think of a “Concept” as a Metaphorical Shape
  38. 38. Observe Pattern “Do I know this pattern?” Think of a “Concept” as a Metaphorical Shape
  39. 39. “I don’t see anything.” No Shape = No Recognition Think of a “Concept” as a Metaphorical Shape
  40. 40. “Clojure” “What is Clojure?” Let’s say a friend asks us…
  41. 41. “What is Clojure?” Let’s say a friend asks us…
  42. 42. Recognition is a Bottom-Up Process Summarize Sensory signals “Clojure” Brain Layer Brain Layer Brain Layer
  43. 43. Recognition FAILURE Summarize Sensory signals Brain Layer Brain Layer Brain Layer Eh?
  44. 44. “What is Clojure?” Lisp Functional Language Groovy JVM Language Object-Oriented Language New Shapes are Defined Relative to Old Shapes
  45. 45. “What is Clojure?” Lisp Functional Language Groovy JVM Language Object-Oriented Language Clojure! Functional Language JVM Language New Shapes are Defined Relative to Old Shapes
  46. 46. Brain Hack #1 How can you improve your ability to communicate with your peers and recognize more details in your experience? Expand your vocabulary of shapes
  47. 47. What Causes Unexpected Behavior (likeliness)? What Makes Troubleshooting Time-Consuming (impact)? Semantic Mistakes Stale Memory Mistakes Association Mistakes Bad Input Assumption Tedious Change Mistakes Copy-Edit Mistakes Transposition Mistakes Failed Refactor Mistakes False Alarm Non-Deterministic Behavior Ambiguous Clues Lots of Code Changes Noisy Output Cryptic Output Long Execution Time Environment Cleanup Test Data Creation Using Debugger Expand your vocabulary of shapes
  48. 48. Meaning: How are shapes combined to create meaning? Input: Ideas DB
  49. 49. Thing Patterns Process Patterns Relationship Patterns Three Different Base Classes for “Concepts"
  50. 50. Base Classes for Thing Patterns Physical Object I
  51. 51. Base Classes for Relationship Patterns Directions = Better = Worse Containers In Group Out Group
  52. 52. Human Identity Put Things and Containers Together… Object Identity
  53. 53. Empathy. Short-circuit Empathy.
  54. 54. Direction Metaphors Give Us Rank Rank Objects Rank CategoriesRank People
  55. 55. Categorizing and ranking things is how our brains make sense of the world
  56. 56. Category Types affect how we compare In Group Look for similarities Out Group Look for differences
  57. 57. Pre-wired to Model the In-Group You extends from I “I want to be just like you!” Similarity Seeking
  58. 58. My Team We write unit tests. We pair program. You Do you do these things? YES Pre-wired to Model the In-Group
  59. 59. Pre-wired to Objectify the Out-Group You extends from Object “You’re nothing like me.” Difference Seeking
  60. 60. Developers Testers Pre-wired to Objectify the Out-Group Testers extend from Object “Testers are a tool for us to use.”
  61. 61. Smart People Idiots Pre-wired to Objectify the Out-Group Idiots extend from Object “Idiots are a tool for us to use.”
  62. 62. When I decide someone is “not like me” Human Short-circuit empathy This is why we act like assholes.
  63. 63. Brain Hack #2 How do you stop being an asshole? Rewire your brain for empathy.
  64. 64. 1. Stop and think. Rewire your brain: How to Stop Being an Asshole: Similarity Seeking Disgust or ? 2. Choose ( ) Pity
  65. 65. Pre-wired to Extend Identity to Offspring This is me. This is my baby. “My baby is a part of me” MyBaby extends I
  66. 66. Pre-wired to Extend Identity to “SoulCrafts” This is me. This is my code. PAIN “Your code sucks.”
  67. 67. Brain Hack #3 How do you stop feeling defensive? Rewire your brain to disable empathy.
  68. 68. 1. Stop and think. Rewire your brain: or ? How to Stop Feeling Defensive: Disables Empathy PAIN “Your code sucks.” 2. Choose ( )
  69. 69. Output: Decisions DB Pain Signal Input: Ideas Awesome Signal Gut Feel: Where do “gut feel” decisions come from?
  70. 70. Feeling Machine Orbitofrontal Cortex + Lymbic System (Summarized Body Response) AWESOMEPAIN Disgust Anger Desire Beauty LoveFear
  71. 71. Think “Fruit” Simulate Body Experience Do I want “Fruit” or a “Salad”? Not so much…
  72. 72. Think “Salad” Simulate Body Experience Do I want “Fruit” or a “Salad”? Fairly awesome…
  73. 73. Think about “Sally” Simulate Body Experience Do I Like “Sally”? Desire Beauty
  74. 74. Think about “George” Simulate Body Experience Do I Like “George”? Disgust Anger
  75. 75. Breakpoint More Complex Decisions Skip the Tests? DELETE IT ALL!Write a Test? Where do these feelings come from?
  76. 76. Base Class for Process Pattern Journey Beginning End Journey: The Rollercoaster of Human Experience
  77. 77. Journey Constraints What were the challenges on the journey? Frustration
  78. 78. Friction Journey What were the challenges on the journey? PAIN
  79. 79. Journey Strategy What were the challenges on the journey? Victory!
  80. 80. This SUCKS! Journeys End in PAIN or AWESOME Yay! AWESOME! AWESOMEPAIN
  81. 81. Situation Strategy Consequence I’m on a Journey “Journeys” are constructed of chainable parts
  82. 82. caused by caused by Consciousness “What if?” what if? what if? This SUCKS! I just brought down production…How do I avoid the PAIN next time? What if I had checked configs? What if I had better tests? Brought down production
  83. 83. How do I avoid the PAIN next time? caused by caused by what if? what if? I’ll do better next time. Consciousness “What if?” Brought down production
  84. 84. Situation Consequence Prediction Machine 70% 20% 10% sense intuit “Gut Feel” arises through pattern reinforcement see Minimize PAIN Maximize AWESOME How do I avoid the PAIN next time?
  85. 85. Our PAIN Sensor is Horribly Miscalibrated Ugly Bothers us a lot Difficult Moderate difficulty is enjoyable Our entire discipline has evolved in the absence of a feedback loop.
  86. 86. Brain Hack #4 How can you recalibrate your PAIN sensor? Visualize your “PAIN” If you want to desire it, call it AWESOME If you want to avoid it, call it PAIN
  87. 87. Output: Decisions Feedback Loop DB Pain Signal Input: Ideas Awesome Signal Brain in Motion: Prediction Machine
  88. 88. Rewire Your Brain John B. Arden, Ph. D. A Synthesis of the Research In… Leadership and Self-Deception The Arbringer Institute +
  89. 89. Recent Past (Patterns Recognized) Predict: What’s Next? Our Brain is Constantly Making Predictions We only update our brain code when predictions FAIL
  90. 90. Predictions Confirmed Imagine you’re walking down the stairs… predictions.next()
  91. 91. WTF?! (RuntimeException) Imagine you’re walking down the stairs… Predictions Violated Consciousness + Repair Predictions i.e. construct story to make sense
  92. 92. Social Rejection = Violated Prediction No Identity predicts inclusion… Consciousness PAIN WTF?! + Repair Identity
  93. 93. “Me” PAIN How do we Repair Identity? No.
  94. 94. “Me” PAIN How do we Repair Identity? No. PAIN > Disgust “Me” Self-Deception WTF?!
  95. 95. “Me” PAIN How do we Repair Identity? No. PAIN > Disgust “Me” Self-Deception Self-Deception is a coping strategy for resolving identity conflicts
  96. 96. Personal Truth Authentic Path (the “sense”) The Downward Spiral of the Self Identity Self Deception lies
  97. 97. Personal Truth Authentic Path (the “sense”) Identity Self Deception lies The more we deviate Consciousness Rationalize The Downward Spiral of the Self
  98. 98. Personal Truth Identity Self Deception Authentic Path (the “sense”) lies The more we deviate Consciousness Rationalize “Emotional Baggage” The Downward Spiral of the Self
  99. 99. Brain Hack #5 How do we escape the downward spiral? Identity 2.0
  100. 100. Identity 2.0: “I am the one who chooses in the moment” Identity 1.0: “I am the sum of my past” The database is me. DB Consciousness is me. Consciousness
  101. 101. Dreams DB Consciousness Past Lessons “I Choose” in the moment Identity 2.0 Momentum on the journey results in joy in the moment
  102. 102. = Me Consciousness Refactor the base class What are the choices you can make everyday that define who you are? Identity 2.0 is a principle of continuous choice
  103. 103. My Team… What choices did we believe in?
  104. 104. Courage. Leadership. Empathy. Authenticity. Respect. The C.L.E.A.R. Mindset Identity 2.0 is a principle of continuous choice.
  105. 105. Personal Truth Identity Self Deception lies Consciousness CHOOSE WTF?! The C.L.E.A.R. Mindset What is true?
  106. 106. Personal Truth Authentic Path (the “sense”) Identity Self Deception Consciousness CHOOSE WTF?! The C.L.E.A.R. Mindset What is true?
  107. 107. Brain Hack #6 How do we build a C.L.E.A.R. culture? Choose the path we want others to follow.
  108. 108. Culture is an Emergent Property The only thing we actually control: Personal Mindset There is only “I” who chooses.
  109. 109. Remember: Pre-wired to Model the In-Group When you step up and lead, the people on your team will model your choices.
  110. 110. C.L.E.A.R. Learning Culture We put the PAIN on center stage, then learn our way to AWESOME by working together
  111. 111. Poverty War Corrupt Government Broken Education Planetary Destruction The world around us…
  112. 112. If we zoom out… We all want the world to be different. But we all feel helpless. Why are we helpless?
  113. 113. If we zoom out… Why are we helpless? We are crippled by our inability to work together. We are crippled by the difficulty of change.
  114. 114. The Fifth Discipline The Art & Practice of the Learning Organization Peter Senge The Most INSPIRING Book EVER…
  115. 115. The Most INSPIRING Book EVER… What I See: Hope for Humanity
  116. 116. A path to get us here… What I See: Hope for Humanity
  117. 117. Strategy to make mastery-level education FREE to EVERY HUMAN in the world Challenge 1: $$$$$$$$$$$$$$$$$$$$$$$$ Challenge 2: Unprecedented levels of cooperation
  118. 118. I believe the path starts with us… Learning how to learn together as a software community
  119. 119. We start with visibility. We move toward awesome.
  120. 120. We start with our team. We move toward our industry.
  121. 121. 1. Measure Your PAIN Automated Visibility Tools Automated FAQ “Idea Flow Maps” January 1st, 2017 MVP for Individuals (OSS) June 15th, 2017 MVP for Teams ($)
  122. 122. Dreams DB Past Lessons 2. Key Paradigm Shift: Machine -> Organism “Business Creature”
  123. 123. DB Past Lessons Innovation Pain Signal Awesome Signal Dreams Dec 1st, 2018 BusinessCreatureOS ($$$) 2. Key Paradigm Shift: Machine -> Organism
  124. 124. Dreams Dreams 3. MMORPG: The Game of Life (Gamified Education) C.L.E.A.R. C.L.E.A.R.
  125. 125. Tony’s Flair: Monthly Awards for guild achievements!
  126. 126. Tony’s Flair: Monthly Awards for guild achievements! Nov 8th, 2020 MVP for Free Education
  127. 127. We design the game. We make up the rules. We invite the world to play.
  128. 128. Janelle Klein openmastery.org @janellekz How to Join: Janelle Klein Founder of Open Mastery janelle@openmastery.org 1. Email Subject: “Tools Pilot” 2. Include IDE/Editor, Your OS FREE!

×