Upgrade to Pro — share decks privately, control downloads, hide ads and more …

H/F Prodev - Peopleware > Software

chubas
October 20, 2015

H/F Prodev - Peopleware > Software

In the software development industry, most of the problem are human in nature, not technological. We'll explore some of the psychological and social problems common in development teams, and some tips how to overcome them and become a better developer

chubas

October 20, 2015
Tweet

More Decks by chubas

Other Decks in Programming

Transcript

  1. DILBERT COMPANIES "There are two types of companies. Those that

    recognize that they are just like Dilbert and those that are also like Dilbert but don't know it yet." - Guy Kawasaki
  2. PROGRAMMING IS A HUMAN ACTIVITY SOFTWARE SCIENCE != SOFTWARE ENGINEERING

    Applied discipline of software science Standarized approaches to common problems: Development methodologies System architectures Industry standards etc
  3. CONWAY'S LAW "Organizations which design systems are constrained to produce

    designs which are copies of the communication structures of these organizations" - Melvin Conway
  4. PROGRAMMING IS A HUMAN ACTIVITY SOFTWARE SCIENCE != SOFTWARE ENGINEERING

    Applied discipline of software science Standarized approaches to common problems: Development methodologies System architectures Industry standards etc
  5. THINKING DUAL MODEL System 1 System 2 Unconscious reasoning Conscious

    reasoning Implicit Explicit Automatic Controlled Low Effort High Effort Associative Rule based Non-Logical Logical Parallel Serial
  6. PLANNING FALLACY BELIEF THAT PEOPLE CAN ACCURATELY ESTIMATE TASKS, SPECIALLY

    WITH UNKNOWN ELEMENTS Wrong estimates (time, cost, effort) Blinded by wishful thinking - optimistic scenarios
  7. CONFIRMATION BIAS THE TENDENCY TO SEARCH FOR, INTERPRET, FOCUS ON

    AND REMEMBER INFORMATION IN A WAY THAT CONFIRMS ONE'S PRECONCEPTIONS Tunnel vision when designing architectures Tendency to overlook defects, or fix the wrong issues
  8. DUNNIN-KRUGER EFFECT THE TENDENCY FOR UNSKILLED INDIVIDUALS TO OVERESTIMATE THEIR

    ABILITIES, AND VICEVERSA Contributes to bad estimations and overcommitment Reflects in added complexity in code and bad programming practices
  9. GENERATION EFFECT FALLACY TENDENCY TO BETTER REMEMBER INFORMATION IF IT

    IS GENERATED FROM ONE'S OWN MIND RATHER THAN SIMPLY READ Difficulty on understanding legacy systems Tendency to underestimate documentation and design documents
  10. HYPERBOLIC DISCOUNTING TENDENCY TO PREFER SMALLER PAYOFFS NOW OVER LARGER

    PAYOFFS LATER, MAKING CHOICES THAT DISREGARD LONG-TERM PLANNING Hacks, TODOs... Technical Debt !
  11. BANDWAGON EFFECT PEOPLE MAKE CHOICES WITHOUT EVIDENCE BASED JUST ON

    POPULARITY OR CONSENSUS Choice of the tools / frameworks Decisions taken by a team leader without team discussion
  12. BIASES ARE UNAVOIDABLE Biases are part of our evolutionary mechanisms

    related to survival instincts. Conflict between System 1 and System 2
  13. RETROSPECTION / INTROSPECTION "KNOWING IS HALF THE BATTLE" Look for

    past biases by looking at the consequences Spend conscious effort to think about your decisions Use safeguard tools for countering common biases
  14. THINKING FRAMEWORK TOOLS FOR INTRODUCING OBJECTIVITY INTO YOUR DECISION MAKING

    Checklists, reminders, notes Ask the right questions, validate with other people Follow a PROCESS
  15. CONCLUSIONS Software development is a human activity, and such is

    prone to human errors at the individual and organizational levels Cognitive biases are constantly present and almost unavoidable One of the best ways to counter them is to establish a thinking framework
  16. REFERENCES Weinberg, Gerald (2011-03-08). The Psychology of Computer Programming: Silver

    Anniversary. Weinberg & Weinberg Kahneman, Daniel (2011-11-03). Thinking, Fast and Slow. Penguin Books Ltd. Heath, Chip; Heath, Dan (2011-10-31). Switch - How to Change Things when Change is Hard. Random House UK. Jørgensen, Magne, and Efi Papatheocharous. (2015) Believing is Seeing: Confirmation Bias Studies in Software Engineering In SEAA, Euromicro. Tore Dybå, Barbara Kitchenham and Magne Jørgensen, Evidence-based Software Engineering for Practitioners, IEEE Software, Vol. 22, No. 1, Jan-Feb 2005.