28
Professional Software Development: Thinking, Fast and Slow Daniel Bryant Principal Consultant, OpenCredo [email protected] @danielbryantuk

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

Embed Size (px)

DESCRIPTION

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.

Citation preview

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

Professional Software Development:Thinking, Fast and Slow

Daniel BryantPrincipal Consultant, OpenCredo

[email protected]@danielbryantuk

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

10/04/2023 @danielbryantuk

Thinking, Fast and Slow

An awesome book!

Exploring how we think…“Bias and decision heuristics”

amzn.to/KidCCy

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

10/04/2023 @danielbryantuk

Workplace decision making…

http://dilbert.com/strips/comic/1994-11-03/

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

10/04/2023 @danielbryantuk

Your Thinking: A Tale of Two Systems…

System 1:fast, instinctive, emotional, subconscious

System 2:slower, deliberate, reasoning, conscious

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

10/04/2023 @danielbryantuk

2 + 2 = ?

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

10/04/2023 @danielbryantuk

13 + 47 = ?

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

10/04/2023 @danielbryantuk

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

10/04/2023 @danielbryantuk

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

10/04/2023 @danielbryantuk

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

10/04/2023 @danielbryantuk

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?

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

10/04/2023 @danielbryantuk

Your Thinking: A Tale of Two Systems…

System 1:fast, instinctive, emotional, subconsciousRapid, associative, and has systemic errors

System 2:slower, deliberate, reasoning, consciousLazy, and causal (not statistical)

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

10/04/2023 @danielbryantuk

Heuristics / biases affecting software developers

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

10/04/2023 @danielbryantuk

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

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

10/04/2023 @danielbryantuk

“MongoDB is Webscale”

http://www.mongodb-is-web-scale.com/

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

10/04/2023 @danielbryantuk

TDD is Dead (Long Live TDD)

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

10/04/2023 @danielbryantuk

Availability: Think Professionally

• Stop… engage system 2

• Constant learning and evaluation – Find trusted mentors– Read the classics– Cultivate blogs

• Spike, prototype, experiment…

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

10/04/2023 @danielbryantuk

Java Fundamentals

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

10/04/2023 @danielbryantuk

Comparison Matrix

Matt Raible comparison matrix (bit.ly/OxUzad)

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

10/04/2023 @danielbryantuk

Optimistic Bias

“People tend to be overconfident, believing that they have substantial

control in their lives”

Big up-front design… vs ‘last responsible moment’…

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

10/04/2023 @danielbryantuk

The Unknown Unknowns…

http://dilbert.com/strips/comic/1995-11-10/

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

10/04/2023 @danielbryantuk

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…

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

10/04/2023 @danielbryantuk

Collaboration and Architecture

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

10/04/2023 @danielbryantuk

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?

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

10/04/2023 @danielbryantuk

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

10/04/2023 @danielbryantuk

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)

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

10/04/2023 @danielbryantuk

Read Your Way to Tech Lead (?)

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

10/04/2023 @danielbryantuk

Summary

• Learn, do, teach, retrospect, repeat

• Engage system 2…

• Apply process (as appropriate)

• Collaborate

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

10/04/2023 @danielbryantuk

Thanks for Listening!

Comments and feedback are welcomed…

[email protected]@danielbryantuk

Thanks: