Transcript
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:


Recommended