104
Mob Programming for Continuous Learning Mike Clement @mdclement [email protected] http://blog.softwareontheside.com

Mob Programming for Continuous Learning

Embed Size (px)

Citation preview

Page 1: Mob Programming for Continuous Learning

Mob Programming for Continuous Learning

Mike Clement@mdclement

[email protected]://blog.softwareontheside.com

Page 2: Mob Programming for Continuous Learning

My journey

Page 3: Mob Programming for Continuous Learning
Page 4: Mob Programming for Continuous Learning

“Review every line of code. A code review typically involves the programmer and at least two reviewers. That means that at least three people read every line of code. Another name for peer review is "peer pressure." In addition to providing a safety net in case the original programmer leaves the project, reviews improve code quality because the programmer knows that the code will be read by others. Even if your shop hasn't created explicit coding standards, reviews provide a subtle way of moving toward a group coding standard—decisions are made by the group during reviews, and over time the group derives its own standards.”

Page 5: Mob Programming for Continuous Learning

“Review every line of code. A code review typically involves the programmer and at least two reviewers. That means that at least three people read every line of code. Another name for peer review is "peer pressure." In addition to providing a safety net in case the original programmer leaves the project, reviews improve code quality because the programmer knows that the code will be read by others. Even if your shop hasn't created explicit coding standards, reviews provide a subtle way of moving toward a group coding standard—decisions are made by the group during reviews, and over time the group derives its own standards.”

Page 6: Mob Programming for Continuous Learning

Code Reviews

Page 7: Mob Programming for Continuous Learning
Page 8: Mob Programming for Continuous Learning

Benefits of Code Reviews

• Help from others• Redundancy• Readability• Coding standards

Page 9: Mob Programming for Continuous Learning
Page 10: Mob Programming for Continuous Learning
Page 11: Mob Programming for Continuous Learning

How to reduce the length of the feedback loop?

Page 12: Mob Programming for Continuous Learning

Informal Pairing

Page 13: Mob Programming for Continuous Learning
Page 14: Mob Programming for Continuous Learning

Informal pairing

• “On demand” collaboration• Started to spend more time together

Page 15: Mob Programming for Continuous Learning

Randori

Page 16: Mob Programming for Continuous Learning
Page 17: Mob Programming for Continuous Learning
Page 18: Mob Programming for Continuous Learning

Utah Software Craftsmanship

Page 19: Mob Programming for Continuous Learning
Page 20: Mob Programming for Continuous Learning

How to reduce the length of the feedback loop?

Page 21: Mob Programming for Continuous Learning

Pairing Time with Pairing Stations

Page 22: Mob Programming for Continuous Learning
Page 23: Mob Programming for Continuous Learning
Page 24: Mob Programming for Continuous Learning

Caves and Commons

Page 25: Mob Programming for Continuous Learning

Agile Software Development: The Cooperative Game by Alistair CockburnFigure 3.1-1. Completed office layout (Courtesy of Ken Auer, RoleModelSoftware).

Page 26: Mob Programming for Continuous Learning

One navigator, many drivers

Page 27: Mob Programming for Continuous Learning
Page 28: Mob Programming for Continuous Learning

How to reduce the length of the feedback loop?

Page 29: Mob Programming for Continuous Learning

Persistent, promiscuous pair programming

Page 30: Mob Programming for Continuous Learning
Page 31: Mob Programming for Continuous Learning
Page 32: Mob Programming for Continuous Learning

Whole team ownership?

Page 33: Mob Programming for Continuous Learning

“You should really talk to Woody Zuill. You need to see what they’re doing at Hunter Industries”

Page 34: Mob Programming for Continuous Learning

http://mobprogramming.org/

Page 35: Mob Programming for Continuous Learning
Page 36: Mob Programming for Continuous Learning

All the brilliant people, working on the same thing, at the same time, in the same space…

Page 37: Mob Programming for Continuous Learning

All the brilliant people, working on the same thing, at the same time, in the same space, and at the same computer.

Page 38: Mob Programming for Continuous Learning
Page 39: Mob Programming for Continuous Learning

How to reduce the length of the feedback loop?

Page 40: Mob Programming for Continuous Learning

“Let’s try mob programming”

Page 41: Mob Programming for Continuous Learning

My experience

Page 42: Mob Programming for Continuous Learning

Mob #1

Page 43: Mob Programming for Continuous Learning

Mob #1

•3 co-located + 1 remote•Pairing station

Page 44: Mob Programming for Continuous Learning
Page 45: Mob Programming for Continuous Learning

Whole team ownership of code!

Page 46: Mob Programming for Continuous Learning

Then we added a team member…

Page 47: Mob Programming for Continuous Learning
Page 48: Mob Programming for Continuous Learning

And the remote member moved to be co-located…

Page 49: Mob Programming for Continuous Learning
Page 50: Mob Programming for Continuous Learning
Page 51: Mob Programming for Continuous Learning

A trip to San Diego

Page 52: Mob Programming for Continuous Learning

https://twitter.com/ChristophLucian/status/482651109173895168

Page 53: Mob Programming for Continuous Learning

Mob #2

Page 54: Mob Programming for Continuous Learning

Mob #2

•4 co-located including team lead•2 80 inch TVs on the wall

Page 55: Mob Programming for Continuous Learning
Page 56: Mob Programming for Continuous Learning
Page 57: Mob Programming for Continuous Learning
Page 58: Mob Programming for Continuous Learning

Discoveries!

Page 59: Mob Programming for Continuous Learning

Physical space

Page 60: Mob Programming for Continuous Learning
Page 61: Mob Programming for Continuous Learning

Strong-style pairing

Page 62: Mob Programming for Continuous Learning

"For an idea to go from your head into the computer, it MUST go through someone else's hands"

Page 63: Mob Programming for Continuous Learning

Strong-style pairing

Driver• At the keyboard• “Smart keyboard”• Trust your navigator• Think the computer of the

Enterprise

Navigator• Give verbal instructions to the

driver• Talk at the highest level of

abstraction

Page 64: Mob Programming for Continuous Learning

Location

Detail

Page 65: Mob Programming for Continuous Learning
Page 66: Mob Programming for Continuous Learning

The hard work is when you’re NOT at the keyboard

Page 67: Mob Programming for Continuous Learning

No standups!

Page 68: Mob Programming for Continuous Learning

More JIT code design

Page 69: Mob Programming for Continuous Learning

Increased “Bus Factor”

Page 70: Mob Programming for Continuous Learning

Resilient

Page 71: Mob Programming for Continuous Learning

Working on the right thing

Page 72: Mob Programming for Continuous Learning

Get things done and delivered

Page 73: Mob Programming for Continuous Learning
Page 74: Mob Programming for Continuous Learning

Downside?

Page 75: Mob Programming for Continuous Learning

Less worktime flexibility

Page 76: Mob Programming for Continuous Learning

Looks funny from the outside

Page 77: Mob Programming for Continuous Learning

And then product management…

Page 78: Mob Programming for Continuous Learning

Mob #3

Page 79: Mob Programming for Continuous Learning
Page 80: Mob Programming for Continuous Learning

Ways we use forms of Mobbing

•Large onsite with client workshops•Workshops at our location•Everyday work

Page 81: Mob Programming for Continuous Learning

One navigator, many pairs

Page 82: Mob Programming for Continuous Learning
Page 83: Mob Programming for Continuous Learning
Page 84: Mob Programming for Continuous Learning

One navigator, many mobs

Page 85: Mob Programming for Continuous Learning
Page 86: Mob Programming for Continuous Learning
Page 87: Mob Programming for Continuous Learning
Page 88: Mob Programming for Continuous Learning
Page 89: Mob Programming for Continuous Learning

Experience != Learning

Page 90: Mob Programming for Continuous Learning

Experience + Reflection => Learning

Page 91: Mob Programming for Continuous Learning
Page 92: Mob Programming for Continuous Learning
Page 93: Mob Programming for Continuous Learning
Page 94: Mob Programming for Continuous Learning
Page 95: Mob Programming for Continuous Learning
Page 96: Mob Programming for Continuous Learning
Page 97: Mob Programming for Continuous Learning
Page 98: Mob Programming for Continuous Learning

https://github.com/willemlarsen/mobprogrammingrpg

Page 99: Mob Programming for Continuous Learning
Page 100: Mob Programming for Continuous Learning

It’s not solo programming with a group

Page 101: Mob Programming for Continuous Learning

It’s fun!

Page 102: Mob Programming for Continuous Learning
Page 103: Mob Programming for Continuous Learning

Mike Clement

• @mdclement• [email protected]• http://blog.softwareontheside.com• https://github.com/mdclement• http://agilecodegames.com

• Greater Sum• @thegreatersum• http://www.greatersum.com

• Software Craftsmanship Atlanta• Find us on meetup.com

Page 104: Mob Programming for Continuous Learning

Resources

• http://mobprogramming.org/mob-programming-time-lapse-video-a-day-of-mob-programming/

• Updated video: https://www.youtube.com/watch?v=dVqUcNKVbYg• http://llewellynfalco.blogspot.com/2014/06/llewellyns-strong-style-

pairing.html• Timer: https://github.com/MobProgramming/MobTimer.Python• Mob Programming Conference:

http://agilegamesnewengland.org/index.php/mob-programming-conference

• RPG: https://github.com/willemlarsen/mobprogrammingrpg• Mobster Timer with RPG: https://github.com/dillonkearns/mobster