Teams

The Secret to Success

Teams Make Most Software

  • with mixed roles
    • analysts, architects, designers, testers, writers, ...
  • with mixed personalities
    • shy, dominating, leader, follower, neat freak, slob, data nerd, night person, day person, problem solver, problem finder, ...

Teams Make or Break the Project

  • The two least successful 394 teams in one quarter were the most skilled.
  • The most successful teams in that quarter and some others were the least skilled.

Team Development is Central to Agile

  • The last lines of The Agile Samurai
    Whenever you are wondering whether you are doing things the "agile way," instead ask yourself two questions:
    • Are we delivering something of value every week?
    • Are we striving to continuously improve?
    If you can answer yes to both those questions, you're being agile.

What's Wrong with Your Team

  • A few people did all the hard coding
  • Some people did almost no coding
  • Some people have no idea how much of the app works
  • Almost no one knows who anyone else is beyond their name and email
  • Some people are clearly more skilled than other people
  • Some people are always late to meetings
  • Some people dominate every discussion
  • Most people believe the #1 myth about teams

Number #1 Myth about Teams

  • The purpose of a team is to split up work.
  • When you split up the work, you
    • lose a shared vision
    • make everyone a potential bottleneck
    • encourage "my code" attitudes
    • maximize work-in-progress
      • 4 tasks 25% done => nothing ready to test
    • make your Bus Factor = 1
    • minimize learning and growth
Divide and conquer is what you do to the problem, not the team.

What Teams Are For

  • To gang up on problems -- show no mercy!
  • Create and share one vision
  • Minimize work-in-progress
  • Apply multiple views, skills and perspectives
  • Back each other up
  • Teach each other
  • Have fun!

The Secret to Success: Jelled Teams

  • A jelled team is one that is more than the sum of its parts. [Peopleware, 1999]
  • Signs of a jelled team:
    • low turnover
    • team identity
    • team pride
    • joint ownership
    • having fun

Incremental Agile Team Development

  • Speed kills! Don't focus on just the fastest way to get code written
  • Never program alone. Swarm and pair.
  • Training by pairing
  • Weekly team retrospectives

Retrospectives

  • Every week
  • Identify and then analyze metrics that matter , e.g.,
    • Buggy code, low productivity, ...
    • Bad bus factor, bottlenecks, ...
    • Low team morale
  • The only practice commonly associated with agile considered essential.

Team Assessment

  • The class team review tools:
    • Self reflect on your contributions, shared with your team
    • Summarize and evaluate your team mate contributions for the week, using the self-reviews and data collected by the team

Common Agile Practices

  • NO SILOS (The Agile Samurai, Chapter 2)
    • Divide and conquer is not your friend
  • Swarm
  • If you plan to code solo, message the team in advance
  • If you see such a message, volunteer to help
  • Use Facebook, Twitter, group.me or whatever works for low-effort easy communication

Mood charts

  • Common: Niko Niko charts
  • Better: 394 Mood Charts
    • Easier to see trends with colors
    • Easier to see common issues in the texts
  • Brevity is key: use mood entries to start a conversation, not make a report.
  • Focus on YOUR feeling at the end of the swarm and its cause, no more.

Building the Team

Train by Doing

  • Integrate development with learning
  • Pick developers for a task based on learning needs
  • If pairing:
    • Driver = learner
    • Navigator = teacher

The Three Essentials to Jelling

  • Trust
    • You trust your team so well, you let them know when you're really lost, or when you really mess up.
  • Respect
    • You respect each team member and value their contribution, not in spite of how they differ from you, but because of how they differ.
  • Responsibility
    • You see the success of the project and the team as your responsibility. Every problem is your problem.

Team Development Takes Time

How to Invest Your Effort

Team ProjectClient Project
Invest about 50% in team
Invest about 20% in team

How to Improve

  • "Never let a good crisis go to waste."
  • Problems are opportunities
  • If your program crashed...
    • ... your code needs better defenses
    • ... your process needs better testing
    • ... your architecture needs harder to mis-code
  • Then make small but effective fixes at multiple levels
  • When code breaks, does
    • Blaming it help?
    • Running it again, but "harder"?
  • You diagnose the cause and change the code.
  • Fix team problems the same way

Jelling by Process Repair

  • No problem is a one-time accident.
    • if someone checks in broken code
    • if you deliver the client something they didn't want
    • if someone's late to team meetings
    • ...

Bad Repairs

  • Try harder
    • Whatever caused the problem before will cause the problem again
  • Make a big change
    • A brand new process is probably worse than the old one
  • Add more process
    • This is how software development got in trouble in the first place
  • You need to be SMART

Thanks to Hakim El Hattab for RevealJS