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.

LJC 2014 "Professional Software Development: Thinking Fast and Slow"

2,362 views

Published on

In the international bestseller 'Thinking, Fast and Slow', Daniel Kahneman explains how we as human beings think and reason, and perhaps surprisingly how our thought processes are often fundamentally flawed and biased. This talk briefly explores the ideas presented in the book in the context of professional software development. As software developers we all like to think that we are highly logical, and make only rational choices, but after reading the book I'm not so sure. Here I'll share my thinking on thinking.

This is the second iteration of this talk.

Published in: Technology

LJC 2014 "Professional Software Development: Thinking Fast and Slow"

  1. 1. Professional Software Development: Thinking, Fast and Slow Daniel Bryant Principal Consultant, OpenCredo daniel.bryant@opencredo.com @danielbryantuk
  2. 2. Thinking, Fast and Slow An awesome book! Exploring how we think… “Bias and decision heuristics” amzn.to/KidCCy 14/08/2014 @danielbryantuk
  3. 3. Workplace decision making… 14/08/2014 @danielbryantuk http://dilbert.com/strips/comic/1994-11-03/
  4. 4. Your Thinking: A Tale of Two Systems… System 1: fast, instinctive, emotional, subconscious System 2: slower, deliberate, reasoning, conscious 14/08/2014 @danielbryantuk
  5. 5. 2 + 2 = ? 14/08/2014 @danielbryantuk
  6. 6. 13 + 47 = ? 14/08/2014 @danielbryantuk
  7. 7. 14/08/2014 @danielbryantuk
  8. 8. 14/08/2014 @danielbryantuk
  9. 9. 14/08/2014 @danielbryantuk
  10. 10. Bob is a single male in his 20’s who is bright, quiet, likes science fiction and fantasy, and avoids interacting with people in the real world • Computer programmer? • Computer programmer who plays MMORPG? 14/08/2014 @danielbryantuk
  11. 11. Your Thinking: A Tale of Two Systems… System 1: fast, instinctive, emotional, subconscious Rapid, associative, and has systemic errors System 2: slower, deliberate, reasoning, conscious Lazy, and causal (not statistical) 14/08/2014 @danielbryantuk
  12. 12. Heuristics / biases affecting software developers 14/08/2014 @danielbryantuk
  13. 13. Availability Heuristic “If something can be recalled, it must be important” ‘Hipster-itis’ e.g. RDBMS aren’t web-scale… …and “alpha geeks” tend to be quite opinionated 14/08/2014 @danielbryantuk
  14. 14. “MongoDB is Webscale” 14/08/2014 @danielbryantuk http://www.mongodb-is-web-scale.com/
  15. 15. TDD is Dead (Long Live TDD) 14/08/2014 @danielbryantuk
  16. 16. Availability: Think Professionally • Stop… engage system 2 • Constant learning and evaluation – Find trusted mentors – Read the classics – Cultivate blogs • Spike, prototype, experiment… 14/08/2014 @danielbryantuk
  17. 17. Java Fundamentals 14/08/2014 @danielbryantuk
  18. 18. Comparison Matrix 14/08/2014 @danielbryantuk Matt Raible comparison matrix (bit.ly/OxUzad)
  19. 19. Optimistic Bias “People tend to be overconfident, believing that they have substantial control in their lives” Big up-front design… vs ‘last responsible moment’… 14/08/2014 @danielbryantuk
  20. 20. The Unknown Unknowns… 14/08/2014 @danielbryantuk http://dilbert.com/strips/comic/1995-11-10/
  21. 21. Optimism: Think Professionally • Remove uncertainty early (bit.ly/1mAb6o4) – “Patterns of Effective Delivery” by Dan North • Review (and retrospect) progress regularly • Architectural knowledge is vital • Software is inherently collaborative… 14/08/2014 @danielbryantuk
  22. 22. Collaboration and Architecture 14/08/2014 @danielbryantuk
  23. 23. Anchoring Bias “Common tendency to rely too heavily on the first piece of information offered when making decisions. ” How does your manager ask for estimates? …is it an unbiased question? 14/08/2014 @danielbryantuk
  24. 24. 14/08/2014 @danielbryantuk
  25. 25. Anchoring: Think Professionally • Learn to say no… – Provide explanations and alternatives • Make sure User Stories are well-defined – Collaboration • Apply PERT estimations (bit.ly/1mGzuoe) 14/08/2014 @danielbryantuk
  26. 26. Read Your Way to Tech Lead (?) 14/08/2014 @danielbryantuk
  27. 27. Summary • Learn, do, teach, retrospect, repeat • Engage system 2… • Apply process (as appropriate) • Collaborate 14/08/2014 @danielbryantuk
  28. 28. Thanks for Listening! Comments and feedback are welcomed… daniel.bryant@opencredo.com @danielbryantuk Thanks: 14/08/2014 @danielbryantuk

×