115
CC-BY-2.0 https://www.flickr.com/photos/isafmedia/4649277399 Commando Code Commando Code What software developers can learn from What software developers can learn from the United States Marine Corps the United States Marine Corps

Commando code

  • Upload
    gooh

  • View
    126

  • Download
    4

Embed Size (px)

DESCRIPTION

While developers do not fight wars and risk their lifes, the characteristics of their work environment share similarities to those of a battlefield: rapid change and constant uncertainty require us to be highly agile and flexible. To achieve project success, we need to cooperate, lead and communicate efficiently with the team and other business units to make timely and right decisions. The US Marine Corps has a long tradition at solving these problems. Their leadership strategies scale to 190000 soldiers along the entire chain of command. Consequently, it makes sense to draw parallels from these strategies and apply them to our craft. This session is based on the findings of my academic thesis on the same topic. The talk will give a brief overview of how the US Marine Corps defines war and how it meets the challenges it poses through Mission Command and Control. I will show how Agile Software Development already utilizes similar concepts and which additional strategies we could reap for our benefit, be it as an individual, team or organisation.

Citation preview

Page 1: Commando code

CC-BY-2.0 https://www.flickr.com/photos/isafmedia/4649277399

Commando CodeCommando CodeWhat software developers can learn from What software developers can learn from the United States Marine Corpsthe United States Marine Corps

Page 2: Commando code

Gordon OheimGordon OheimPHP Craftsman, PHP Documentor, PHP Craftsman, PHP Documentor, Stack Overflow Contributor & Moderator, Stack Overflow Contributor & Moderator, AgilistAgilist

→ → http://twitter.com/go_ohhttp://twitter.com/go_oh → → http://about.me/goohhttp://about.me/gooh → → [email protected]@php.net

Page 3: Commando code

Before we start Before we start

https://www.flickr.com/photos/redeagle/5852033219/

Page 4: Commando code

PD: http://commons.wikimedia.org/wiki/File:USMC_War_Memorial_01.jpg

Page 5: Commando code

PD: http://commons.wikimedia.org/wiki/File:USMC_War_Memorial_01.jpg

This talk is not about Heroism.This talk is not about Heroism.It's about Organization.It's about Organization.

Page 6: Commando code

Huzzah \o/Huzzah \o/

CC-BY-2 https://www.flickr.com/photos/carbonnyc/6123612647

Page 7: Commando code

Why this talk?Why this talk?

Page 8: Commando code

„„Uncertainty is inherent and inevitable Uncertainty is inherent and inevitable in software development processes and in software development processes and and products“and products“

- The Uncertainty Principle in Software Engineering- The Uncertainty Principle in Software Engineering(Ziv and Richardson)(Ziv and Richardson)

Page 9: Commando code

The military has operated in The military has operated in this environment for this environment for

hundreds of years.hundreds of years.

Page 10: Commando code

https://www.flickr.com/photos/defenceimages/9522632709

Page 11: Commando code

Your idea of officers Your idea of officers barking orders and barking orders and

soldiers blindly following soldiers blindly following them is wrong.them is wrong.

Page 12: Commando code

A constant threat to life A constant threat to life demands agility and speedy demands agility and speedy

decision making.decision making.

Page 13: Commando code

It demands top It demands top performing teams that performing teams that can rely on each other.can rely on each other.

Page 14: Commando code

It demands an organization It demands an organization that can react and adapt to that can react and adapt to

changing circumstance.changing circumstance.

Page 15: Commando code

How do they do that?How do they do that?

Page 16: Commando code

AboutAbout WarWar

Page 17: Commando code

„„War is father of all and War is father of all and king of all; and some he king of all; and some he manifested as gods, some manifested as gods, some as men; some he made as men; some he made slaves, some free.“slaves, some free.“

- Heraclitus- Heraclitus

CC-SA 2 https://www.flickr.com/photos/cote/146504243/

Page 18: Commando code

„„We must recognize that We must recognize that war is common, strife is war is common, strife is

justice, and all things justice, and all things happen according to strife happen according to strife

and necessity.“and necessity.“

- Heraclitus- Heraclitus

CC-SA 2 https://www.flickr.com/photos/cote/146504243/

Page 19: Commando code

CC-BY-2 https://www.flickr.com/photos/rebeccaselah/5159682027

Umm, what?!Umm, what?!

Page 20: Commando code

„„Heraclitus, I believe, Heraclitus, I believe, says that all things pass says that all things pass and nothing stays, and and nothing stays, and comparing existing comparing existing things to the flow of a things to the flow of a river, he says you could river, he says you could not step twice into the not step twice into the same river.“same river.“

- Plato, Cratylus- Plato, Cratylus

http://commons.wikimedia.org/wiki/File:Plato_Silanion_Musei_Capitolini_MC1377.jpghttp://commons.wikimedia.org/wiki/File:Plato_Silanion_Musei_Capitolini_MC1377.jpg

Page 21: Commando code

War is the father of allWar is the father of allbecause war is the essence of change.because war is the essence of change.

Page 22: Commando code

Every being and every thing is in a Every being and every thing is in a constant battle and conflict with constant battle and conflict with every being and every thing.every being and every thing.

Page 23: Commando code

Every action has an impact Every action has an impact and a consequence for someone or and a consequence for someone or something.something.

Page 24: Commando code

The world is not staticThe world is not staticbut dynamically interconnected.but dynamically interconnected.

Page 25: Commando code

Everything flowsEverything flowsand becomes.and becomes.

Page 26: Commando code

Sounds like ZenSounds like Zenbut is actually Systems Thinking.but is actually Systems Thinking.

Page 27: Commando code

AuftragstaktikAuftragstaktikInvented by ze germansInvented by ze germans

Adopted by all modern armiesAdopted by all modern armies

Page 28: Commando code

„„War is nothing but a duel on War is nothing but a duel on an extensive scale. an extensive scale. If we would conceive as a unit If we would conceive as a unit the countless number of duels the countless number of duels which make up a War, we which make up a War, we shall do so best by supposing shall do so best by supposing to ourselves two wrestlers.“to ourselves two wrestlers.“

- Carl von Clausewitz, On War- Carl von Clausewitz, On War

http://commons.wikimedia.org/wiki/File:Carl_von_Clausewitz.PNG

Page 29: Commando code

War on a large scaleWar on a large scalemust work the same as in a duel.must work the same as in a duel.

Page 30: Commando code

Success in the smallSuccess in the smalldrives success in the largedrives success in the large

Page 31: Commando code

„„Each [wrestler] strives by Each [wrestler] strives by physical force to compel the physical force to compel the other to submit to his will: other to submit to his will: each endeavours to throw his each endeavours to throw his adversary, and thus render adversary, and thus render him incapable of further him incapable of further resistance.“resistance.“

- Carl von Clausewitz, On War- Carl von Clausewitz, On War

http://commons.wikimedia.org/wiki/File:Carl_von_Clausewitz.PNG

Page 32: Commando code

Problem:Problem:The other guy wants the sameThe other guy wants the same

Page 33: Commando code

„„The tactical result of an The tactical result of an engagement forms the base engagement forms the base for new strategic decisions for new strategic decisions because […] no plan of because […] no plan of operations extends with any operations extends with any certainty beyond the first certainty beyond the first contact with the main hostile contact with the main hostile force.“force.“

- Helmuth von Moltke the - Helmuth von Moltke the ElderElder

http://commons.wikimedia.org/wiki/File:Helmuth_Karl_Bernhard_von_Moltke.jpg

Page 34: Commando code

„„Everyone has a Everyone has a plan 'till they get plan 'till they get punched in the punched in the mouth.“ mouth.“

- Mike Tyson- Mike Tyson

CC-BY-SA 2.0 https://www.flickr.com/photos/merille/5525561640

Page 35: Commando code

Strategy beats planStrategy beats planTakeaway #1Takeaway #1

Page 36: Commando code

Set a goal and constraintsSet a goal and constraintsLet people figure out how to do itLet people figure out how to do it

Page 37: Commando code

Plan to beat Mike TysonPlan to beat Mike TysonUppercut, uppercut, low punch, low Uppercut, uppercut, low punch, low punch, left jab, right hook, left jab, punch, left jab, right hook, left jab, right hook, back off, attack right hook, back off, attack

Page 38: Commando code

Strategy to beat Mike TysonStrategy to beat Mike TysonDon't get punched in the mouthDon't get punched in the mouth

Page 39: Commando code

CC-BY-2 https://www.flickr.com/photos/rebeccaselah/5159682027

What does this have to What does this have to do with software do with software

development?!development?!

Page 40: Commando code

Plans and process Plans and process work in known and predictable work in known and predictable environmentsenvironments

Page 41: Commando code

Software is writtenSoftware is writtenby people for people with differentby people for people with differentexpectations of your software.expectations of your software.

ConflictConflict

Page 42: Commando code

All communicationAll communicationbetween people is inherently falliblebetween people is inherently falliblemaking mutual understanding difficult.making mutual understanding difficult.

UncertaintyUncertainty

Page 43: Commando code

Your initial requirementsYour initial requirementswill likely turn out wrong.will likely turn out wrong.

Invalid plansInvalid plans

Page 44: Commando code

„„For a new software system, the For a new software system, the requirements will not be completely requirements will not be completely known until after the users have used it.“known until after the users have used it.“

- Humphrey's Requirements Uncertainty Principle- Humphrey's Requirements Uncertainty Principle

Page 45: Commando code

„ „Responding to change Responding to change over following a plan“over following a plan“

- Agile Manifesto- Agile Manifesto

Page 46: Commando code

StrategyStrategyAllows you to respond to changeAllows you to respond to changewhile keeping focus on the goalwhile keeping focus on the goal

Page 47: Commando code

AgilityAgilitySituational AwarenessSituational AwarenessSpeedy decisionsSpeedy decisionsKeeping the initiativeKeeping the initiative

Page 48: Commando code

http://commons.wikimedia.org/wiki/File:JohnBoyd_Pilot.jpghttp://commons.wikimedia.org/wiki/File:JohnBoyd_Pilot.jpg

John Boyd's John Boyd's OODA LoopOODA Loop

t

ACTACT

OBSERVEOBSERVE

ORIENTORIENT

DECIDEDECIDE

Page 49: Commando code

ACTACT

OBSERVEOBSERVE

ORIENTORIENT

DECIDEDECIDE

ACTACT

OBSERVEOBSERVE

ORIENTORIENT

DECIDEDECIDE

YOU THEMYOU THEM

disruptdisrupt

Page 50: Commando code

CC-BY-2 https://www.flickr.com/photos/rebeccaselah/5159682027

Who is „them?“Who is „them?“

Page 51: Commando code

Them:Them:Everyone that can disrupt your Everyone that can disrupt your OR your unit's OODA loopOR your unit's OODA loop

Page 52: Commando code

http://commons.wikimedia.org/wiki/File:OODA.Boyd.svg

Page 53: Commando code

Friction:Friction:Everything that can disrupt your Everything that can disrupt your OR your unit's OODA loopOR your unit's OODA loop

Page 54: Commando code

Slowest t

t3

t1 t2

t4

John

You

Jane

Judy

Your unitYour unit

Page 55: Commando code

Slowest t

t3

t1 t2

t4

John

You

Jane

Judy

Your unitYour unit

Page 56: Commando code

Slowest t

t3

t1 t2

t4

John

You

Jane

Judy

Your unitYour unit

Page 57: Commando code

Slowest t

t3

t1 t2

t4

John

You

Jane

Judy

Your unitYour unit

Page 58: Commando code

Your unit is only as fastYour unit is only as fastas it's slowest member.as it's slowest member.

Page 59: Commando code

CC-BY-2 https://www.flickr.com/photos/15609463@N03/7728672184

Cohesive teamsCohesive teamsaligned to a strategy perform betteraligned to a strategy perform betterthan the best individual alone.than the best individual alone.

Page 60: Commando code

fastest t - xfastest t - x

t3

t1 t2

t4

EmergentEmergenteffectseffects

Page 61: Commando code

Minimize known frictionMinimize known frictionBy eliminating it's source.By eliminating it's source.

Page 62: Commando code

React to unknown frictionReact to unknown frictionby creating and keeping options.by creating and keeping options.

Page 63: Commando code

Create Unity of ActionCreate Unity of Actionto achieve the strategy.to achieve the strategy.Takeaway #2Takeaway #2

Page 64: Commando code

http://commons.wikimedia.org/wiki/File:Goldegotze.jpg

Page 65: Commando code

CC-BY-ND-2 https://www.flickr.com/photos/backpackphotography/2318062662

It scales!It scales!

Page 66: Commando code

t3

t1 t2

t4

John

You

Jane

Judy

Your unitYour unit

Page 67: Commando code

t3

t1 t2

t4

Unit 4

Unit 2

Unit 3

Unit 1

Your deptYour dept

Page 68: Commando code

t3

t1 t2

t4

Dept 4

Dept 2

Dept 3

Dept 1

Your companyYour company

Page 69: Commando code

t3

t1 t2

t4

Comp 4

Comp 2

Comp 3

Comp 1

Your marketYour market

Page 70: Commando code

Ad infinitumAd infinitum

Page 71: Commando code

You

Page 72: Commando code

Your actions matterYour actions matterTakeaway #3Takeaway #3

Page 73: Commando code

CC-BY-2 https://www.flickr.com/photos/rebeccaselah/5159682027

When will you get to the When will you get to the Marine Corps?Marine Corps?

Page 74: Commando code

Mission CommandMission Command

Page 75: Commando code

Centers of GravityCenters of GravityYour main assets to protectYour main assets to protectTheir main assets to disruptTheir main assets to disruptCompetitive edgeCompetitive edge

Page 76: Commando code

Main EffortMain EffortWhere to put the most actionWhere to put the most actionSupported by all other teamsSupported by all other teamsMost critical to successMost critical to success

Page 77: Commando code

Identify your main assetsIdentify your main assetsTakeaway #4Takeaway #4

Page 78: Commando code

Commander's IntentCommander's IntentWhat to achieve and whyWhat to achieve and why

Page 79: Commando code

Task 1

Task 3

Task 2

Mission / Strategy Achieved by(what)

Do because(why)

Page 80: Commando code

In order to win the war …In order to win the war …

Mission: „drive enemy off the peninsula“Mission: „drive enemy off the peninsula“

Task 1: attack enemy from seaTask 1: attack enemy from seaTask 2: disrupt supporting linesTask 2: disrupt supporting linesTask 3: secure the peninsulaTask 3: secure the peninsulaTask 4: don't get punched in the mouthTask 4: don't get punched in the mouth

Page 81: Commando code

Looks like User Stories?Looks like User Stories?Guess why …Guess why …

Page 82: Commando code

what

whywhat

whywhat

whywhat

whyChain of CommandChain of Command

StrategyStrategy

OperationsOperations

TacticsTactics

Page 83: Commando code

High level strategyHigh level strategyis defined as a broad missionis defined as a broad missionwith equally broad tasks.with equally broad tasks.

Page 84: Commando code

Missions are delegatedMissions are delegatedto subordinate commanders.to subordinate commanders.

No micromanagement.No micromanagement.

Page 85: Commando code

Subordinate commandersSubordinate commandersbackbrief how they want to achieve backbrief how they want to achieve a mission to their superior to a mission to their superior to eliminate misunderstandings.eliminate misunderstandings.

Page 86: Commando code

Use BackbriefingUse BackbriefingTakeaway #5Takeaway #5

Page 87: Commando code

Missions are broken downMissions are broken downuntil they cannot be broken down.until they cannot be broken down.

Page 88: Commando code

All commandersAll commandersmust know the mission of their must know the mission of their superior commanders.superior commanders.

Page 89: Commando code

Head of CommandHead of Command

Mission Command scaled across the organizationMission Command scaled across the organization

Page 90: Commando code

Communication flowsCommunication flowshorizontally and verticallyhorizontally and vertically

Page 91: Commando code

Units accomplish missionsUnits accomplish missionsthrough autonomous decisions.through autonomous decisions.

Remember ClausewitzRemember Clausewitz

Page 92: Commando code

Decisions happenDecisions happenwhere the information iswhere the information is

Page 93: Commando code

Understand the higher Understand the higher missionmissionTakeaway #6Takeaway #6

Page 94: Commando code

Drill & DoctrineDrill & DoctrineBecoming a MarineBecoming a Marine

http://commons.wikimedia.org/wiki/File:Drill_instructor_at_the_Officer_Candidate_School.jpghttp://commons.wikimedia.org/wiki/File:Drill_instructor_at_the_Officer_Candidate_School.jpg

Page 95: Commando code

Being a MarineBeing a Marineis not a profession but a mindset.is not a profession but a mindset.It's an identity.It's an identity.

Page 96: Commando code

Marines are unitedMarines are unitedBy a common ethosBy a common ethosand esprit d'corps.and esprit d'corps.

Page 97: Commando code

Marines learn how to leadMarines learn how to leadthemselves and others right from themselves and others right from the start.the start.

Page 98: Commando code

Marines are highly trainedMarines are highly trainedIn their tools and maneuversIn their tools and maneuversto prepare them for war.to prepare them for war.

Page 99: Commando code

CC-BY-2 https://www.flickr.com/photos/rebeccaselah/5159682027

Didn't you sayDidn't you say„„no heroisms“?no heroisms“?

Page 100: Commando code

QuestionQuestionDid your formal education prepare Did your formal education prepare you for your job?you for your job?

Page 101: Commando code

„„We need students better trained in We need students better trained in standards, standards of communication, standards, standards of communication, of documentation, of set-up, and of documentation, of set-up, and of use of software.“of use of software.“

- NATO SOFTWARE ENGINEERING CONFERENCE, 1968- NATO SOFTWARE ENGINEERING CONFERENCE, 1968

Page 102: Commando code

Known for 46 yearsKnown for 46 yearsYet some say we are still in a Yet some say we are still in a software crisissoftware crisis

Page 103: Commando code

„„My standard speech to teams large and My standard speech to teams large and small is: 'Do you really want to suck small is: 'Do you really want to suck forever? Is that what your motivation is forever? Is that what your motivation is in life? Because it’s a choice, you know—in life? Because it’s a choice, you know—you don’t have to be that way.' A team you don’t have to be that way.' A team has to demand greatness from itself.“has to demand greatness from itself.“

- Jeff Sutherland, co-creator of Scrum- Jeff Sutherland, co-creator of Scrum

Page 104: Commando code

Joint effortJoint effortThe USMC understood that people The USMC understood that people in teams, joint effort, harmonius in teams, joint effort, harmonius initiative and unity of effect are key initiative and unity of effect are key to successful missions.to successful missions.

Page 105: Commando code

Improve peopleImprove peoplethrough Drill and Doctrinethrough Drill and Doctrineto prepare them for their missions.to prepare them for their missions.

How is up to you.How is up to you.

Page 106: Commando code

It's already happeningIt's already happeningFacebook sends their developers Facebook sends their developers through an internal bootcamp.through an internal bootcamp.

Page 107: Commando code

Standardize thingsStandardize thingsthat are known and predictablethat are known and predictableto spend less time on themto spend less time on themand make them easily understoodand make them easily understood

Page 108: Commando code

DrillDrillKnowing your tools will make you Knowing your tools will make you think less about rote actions.think less about rote actions.

(Git comes to mind)(Git comes to mind)

Page 109: Commando code

TrainingTrainingDevelopers that don't know their Developers that don't know their stuff will suck with their stuff. This stuff will suck with their stuff. This will affect the outcomes.will affect the outcomes.

Page 110: Commando code

Invest into peopleInvest into peopleTakeaway #7Takeaway #7

Page 111: Commando code

DoctrineDoctrineAchieving unity of effect is easier Achieving unity of effect is easier when we share common beliefs and when we share common beliefs and values.values.

Page 112: Commando code

Esprit d'corpsEsprit d'corpsEven if we never find a common Even if we never find a common doctrine, you can create a common doctrine, you can create a common understanding about what it means understanding about what it means to create software in your team.to create software in your team.

Page 113: Commando code

Find out who you are.Find out who you are.Bonus TakeawayBonus Takeaway

Page 114: Commando code

CC-BY-2 https://www.flickr.com/photos/rebeccaselah/5159682027

Can we ask a question?Can we ask a question?

Page 115: Commando code

Thanks!Thanks!