You Can't be Agile When you are Knee Deep in Mud

36
@rachellaycock YOU CAN’T BE AGILE When you are knee deep in mud

Transcript of You Can't be Agile When you are Knee Deep in Mud

Page 1: You Can't be Agile When you are Knee Deep in Mud

@r a c h e l l a y c o c k

YOU CAN’T BE AGILEWhen you are knee deep in mud

Page 2: You Can't be Agile When you are Knee Deep in Mud

2

Page 3: You Can't be Agile When you are Knee Deep in Mud

I WANT CONTINUOUS DELIVERY

3

Architecture Quality Assurance

Continuous Integration

Configuration Management

Data Management

Environments & Deployment

Page 4: You Can't be Agile When you are Knee Deep in Mud

WHERE ARE WE?

4

Page 5: You Can't be Agile When you are Knee Deep in Mud

AGILE THE ADJECTIVE

5

Page 6: You Can't be Agile When you are Knee Deep in Mud

FLUENCY MODEL

6

Page 7: You Can't be Agile When you are Knee Deep in Mud

IT’S THE 90S

7

Page 8: You Can't be Agile When you are Knee Deep in Mud

SCRUM

8http://upload.wikimedia.org/wikipedia/commons/thumb/5/58/Scrum_process.svg/2000px-Scrum_process.svg.png

Page 9: You Can't be Agile When you are Knee Deep in Mud

XP

9http://ronjeffries.com/xprog/what-is-extreme-programming/circles.jpg

Page 10: You Can't be Agile When you are Knee Deep in Mud

TDD?

10http://luizricardo.org/wordpress/wp-content/upload-files/2014/05/tdd_flow.gif

Page 11: You Can't be Agile When you are Knee Deep in Mud

SELF TESTING CODE

11http://www.focus-itoutsourcing.com/wp-content/uploads/2013/10/Software-testing-trends-2013.jpg

Page 12: You Can't be Agile When you are Knee Deep in Mud

TESTING CUPCAKE

12

Page 13: You Can't be Agile When you are Knee Deep in Mud

REFACTORING

13

Refactoring is a controlled technique for improving the design of an existing code

base.

http://martinfowler.com/books/refactoring.html

Page 14: You Can't be Agile When you are Knee Deep in Mud

CONTINUOUS INTEGRATION

14http://ronjeffries.com/xprog/what-is-extreme-programming/circles.jpg

Page 15: You Can't be Agile When you are Knee Deep in Mud

CONTINUOUS INTEGRATION

15

Everyone Commits To

the Mainline Every Day

Mainline Server

Develop

Build

Build

pull

Local Workstation

Buildpush

✔Done!

Page 16: You Can't be Agile When you are Knee Deep in Mud

WATER - SCRUM - FALL

16

Page 17: You Can't be Agile When you are Knee Deep in Mud

CONTINUOUS DELIVERY

17

Software always production ready

Releases tied to business needs, not operational constraints

Customer

Delivery teamConstant flow of new features into production

Page 18: You Can't be Agile When you are Knee Deep in Mud

MORE THAN JUST DEVOPS

18

Organisational Alignment

Release Management

Architecture Quality Assurance

Continuous Integration

Configuration Management

Data Management

Environments & Deployment

Page 19: You Can't be Agile When you are Knee Deep in Mud

BALLS OF MUD

19

Page 20: You Can't be Agile When you are Knee Deep in Mud

Reckless Prudent

DeliberateInadvertent

“We don’t have time for design”

“What’s Layering?”

“We must ship now and deal with consequences”

Page 21: You Can't be Agile When you are Knee Deep in Mud

Good Design

No Design

Design Payoff Line

Cumulative Functionality

time

Page 22: You Can't be Agile When you are Knee Deep in Mud

“We don’t have time for design”

“What’s Layering?”

“We must ship now and deal with consequences”

“Now we know how we should have done it”

Reckless Prudent

DeliberateInadvertent

Page 23: You Can't be Agile When you are Knee Deep in Mud

QUALITY ISSUES (TECHNICAL)

23

Code qualityDesign qualityAutomated testingTechnical debt reduction

…is what your business partners hear!

BLAHBLAHBLAH

Page 24: You Can't be Agile When you are Knee Deep in Mud

HISTORICAL DILEMMA

24

Business Outcome

FEATURES QUALITY

Technical Outcome

Page 25: You Can't be Agile When you are Knee Deep in Mud

WHAT IF?

25

Business Outcome

FEATURES ?

BusinessOutcome

Page 26: You Can't be Agile When you are Knee Deep in Mud

WHAT IF?

26

Business Outcome

FEATURES

BusinessOutcome

CYCLE TIME

Page 27: You Can't be Agile When you are Knee Deep in Mud

CAN’T JUST LIFT AND SHIFT

27

Page 28: You Can't be Agile When you are Knee Deep in Mud

REPLACING THE MONOLITH

28

Page 29: You Can't be Agile When you are Knee Deep in Mud

MICROSERVICES

29

A monolithic application puts all its functionality into a single process…

… and scales by replicating the monolith on multiple servers

A microservices architecture puts each element of functionality into a separate service…

… and scales by distributing these services across servers, replicating as needed.

Page 30: You Can't be Agile When you are Knee Deep in Mud

REFACTORING

30

Page 31: You Can't be Agile When you are Knee Deep in Mud

COMPONENTS

31

Component

LibraryService

Libraries and Services are two forms of component

Components are units of software that can be independently replaced and upgraded

Libraries run within a single process, communicating through language function call mechanisms

Services run in separate processes, communicating with networking mechanisms such as HTTP or TCP/IP

Page 32: You Can't be Agile When you are Knee Deep in Mud

COUPLING AND COHESION

32

code artifact

afferent efferent

Page 33: You Can't be Agile When you are Knee Deep in Mud

FROM PROJECTS

33

BUSINESS PROJECTS OPERATIONSMany ‘good’ ideas -

WE NEED $$$! We’re working - GIVE US $$$!

That doesn’t work - NEED MORE $$$!

Humble, Molesky, O’Reilly, Lean Enterprise: How High Performance Organizations Innovate At Scale

Page 34: You Can't be Agile When you are Knee Deep in Mud

TO PRODUCTS

34

PRODUCTS / SERVICES OPERATIONS

Customers

Service DeskOps Management

Cross-FunctionalProduct Teams

Teams PushChanges Continuously

Product Teamsfor IaaS / PaaS

Infrastructure / Platform-As-A-Service

Humble, Molesky, O’Reilly, Lean Enterprise: How High Performance Organizations Innovate At Scale

Page 35: You Can't be Agile When you are Knee Deep in Mud

YOU NEED TO BE THIS TALL TO BE AGILE

35

Page 36: You Can't be Agile When you are Knee Deep in Mud

@rachellaycock

THANK YOU