Optimize Your Team for Tough Times

49
Team Wide Tune-ups Optimize Your Team for Tough Times by Jared Richardson

description

Slides from this week's talk on Optimizing Your Team using Agile techniques.

Transcript of Optimize Your Team for Tough Times

Page 1: Optimize Your Team for Tough Times

Team Wide Tune-upsOptimize Your Team for Tough Times

by Jared Richardson

Page 2: Optimize Your Team for Tough Times
Page 3: Optimize Your Team for Tough Times

Lift 100 Pounds?

Page 4: Optimize Your Team for Tough Times

Lift 200 Pounds?

Page 5: Optimize Your Team for Tough Times

Lift 500 Pounds?

Page 6: Optimize Your Team for Tough Times

Maybe All of Us?

• Lever

• Pulley

• Block and tackle

flickr.com/photos/_pixelmaniac_/2149556620/

Page 7: Optimize Your Team for Tough Times

Need to Leverage

• Time

• Money

• Staff

• Expertise

Page 8: Optimize Your Team for Tough Times

Need to Leverage?

Everything!

Page 9: Optimize Your Team for Tough Times

Focus

• Specific areas

• Exact problems

• Usable solutions

http://flickr.com/photos/spacepleb/1505372433/

Page 10: Optimize Your Team for Tough Times

Feedback Loop

• Smaller

• Easier

• Faster

Page 11: Optimize Your Team for Tough Times

Fast Feedback

• Creates change

• Enables learning

• Connects cause and effect

Page 12: Optimize Your Team for Tough Times

Plan

• Find an area

• Tighten the feedback

Page 13: Optimize Your Team for Tough Times

Focus Areas

• Requirements

• Execution

• Testing

• Deployment

• Maintenance

Page 14: Optimize Your Team for Tough Times

Requirements Issues

• Too many

• Too few

• Moving target

• Vague

Page 15: Optimize Your Team for Tough Times

Requirements Feedback Loops

• Time boxed iterations

• Top 10 list

• Very specific month

• Very vague year

Page 16: Optimize Your Team for Tough Times

Time Boxed Iteration

• 1 to 4 weeks

• “Finished” tasks

• Demo

• 10 tasks in 10 days

• Get the customer to prioritize

http://flickr.com/photos/bozarth/187224341/

Page 17: Optimize Your Team for Tough Times

Iterations Catch…

• Undefined requirements

• Problem teams

• Black hole task

• Any problems

• Compresses everything

Page 18: Optimize Your Team for Tough Times

Execution/Coding Issues

• Can’t finish

• Buggy

• Brittle

• Cool features

• Infrastructure

Page 19: Optimize Your Team for Tough Times

Coding Feedback Loops

• Continuous integration

• Test automation

• Daily meetings

• Peer code reviews

• Time boxed iterations

Page 20: Optimize Your Team for Tough Times

Continuous Integration

• Code is checked in

• Code is compiled

• Tests are run

Page 21: Optimize Your Team for Tough Times

Continuous Integration

• No weekly/nightly builds

• Code tested NOW

• Problems caught quickly

• Especially functional

Page 22: Optimize Your Team for Tough Times

CI Catches…

• Failure to add a file

• Out of date local libraries/code

• Code collisions

• Functional breaks

Page 23: Optimize Your Team for Tough Times

Test Automation

• Scriptable

• Self-verifying

• Simple (Unit)

• Package level (API)

• Integration (Acceptance)

Page 24: Optimize Your Team for Tough Times

Test Automation Catches..

• Functional breaks

• Broken refactoring

• Collateral damage

• Ignorance

Page 25: Optimize Your Team for Tough Times

DefectDrivenTesting

• Find a bug…

• Add a test

• Jazz

Page 26: Optimize Your Team for Tough Times

Where’s Your Test Coverage?

• On the bugs

• Incremental change

• Automate as needed

Page 27: Optimize Your Team for Tough Times

Daily Meetings

• 1 to 3 minutes per person

• 3 questions

• Re-direct

• Re-task

• Peer pressure

Page 28: Optimize Your Team for Tough Times

Daily Meetings Catch…

• Wasted work

• Misunderstanding

• Off track

• Knowledge silos

http://flickr.com/photos/mcmorr/1126312308/

Page 29: Optimize Your Team for Tough Times

Peer Code Review

• Finish one task

• Find a co-worker

• Get a review

• Repeat until done

Page 30: Optimize Your Team for Tough Times

PCR Catches…

• Your bugs

• Their bugs

• Knowledge silos

• Rewriting code

• Hacks

http://flickr.com/photos/gtstuff/3215232741/

Page 31: Optimize Your Team for Tough Times

Iterations Catch…

• Mired down developers

• “Almost done” features

• Unestimated features

• Uncommitted code

Page 32: Optimize Your Team for Tough Times

Testing Issues

• Too slow

• Misses problems

• Expensive

• New eyes

Page 33: Optimize Your Team for Tough Times

Testing Feedback Loops

• Automated testing

• Continuous integration

• Static code analysis tools

Page 34: Optimize Your Team for Tough Times

Testing Feedback Loops

• Eliminates click-thru testing

• Runs 24x7

• Repeatable

• Reliable

• Controlled environment

• Free up human testers to think

Page 35: Optimize Your Team for Tough Times

Deployment Issues

• By hand

• Hit or miss

• Manual

• Difficult

• Stupid users

Page 36: Optimize Your Team for Tough Times

Deployment Feedback Loops

• Scripted deployments

• Continuous integration

• Automated integration tests

Page 37: Optimize Your Team for Tough Times

Scripted Deployments

• Capistrano

• Database migrations

• Runs locally

• Runs on production

• Runs on test

Page 38: Optimize Your Team for Tough Times

Deployment Loops Catch…

• Bugs in installers

• Bugs in code

• Performance issues

• Intermittent issues

Page 39: Optimize Your Team for Tough Times

Maintenance Issues

• Biggest expense

• Brittle

• Difficult

• Expensive

• Frustrating

• Learning curve

Page 40: Optimize Your Team for Tough Times

Maintenance Loops

• Automated tests

• Continuous integration

• Static code analysis

Page 41: Optimize Your Team for Tough Times

Maintenance Loops Catch…

• Assumptions

• Misunderstandings

• Breaks

• Collateral damage

Page 42: Optimize Your Team for Tough Times

Need to Optimize?

• Find an area

• Tighten the feedback loop

Page 43: Optimize Your Team for Tough Times

Focus Areas

• Requirements

• Execution

• Testing

• Deployment

• Maintenance

Page 44: Optimize Your Team for Tough Times

Where to Start?

• Take a picture

• Fresh perspective

http://flickr.com/photos/dsevilla/249202834/

Page 45: Optimize Your Team for Tough Times

Onsite Assessments

• Tune-up

• Overhaul

• Direction

• Strategy

Page 46: Optimize Your Team for Tough Times

Fresh perspective

Page 47: Optimize Your Team for Tough Times

Onsite Training

• Test automation

• Product owner training

• Agile expertise

• Hibernate

• Maven

• More added as needed…

Page 48: Optimize Your Team for Tough Times

Leverage Expertise

Page 49: Optimize Your Team for Tough Times

http://NFJSOne.com