The conflict between agile and...

43
Simon Brown @simonbrown The conflict between agile and architecture Myth or reality?

Transcript of The conflict between agile and...

Page 1: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

Simon Brown@simonbrown

The conflict betweenagile and architecture

Myth or reality?

Page 2: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

[email protected]

@simonbrown on Twitter

Jersey, Channel Islands

Page 3: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

[email protected]

@simonbrown on Twitter

Jersey, Channel Islands

Page 4: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

I help software teams understand

software architecture,

technical leadership and

the balance with agility(I code too)

Training Book Speaking

Page 5: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

What is

agile?

Page 6: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

What is architecture?As a noun...

StructureThe definition of something in terms

of its components and interactions As a verb...

VisionThe process of architecting,

making (significant) design decisions, etc

and

Page 7: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

The conflict betweenagile and architecture

Myth or reality?

Page 8: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

MythThere is no conflict between agile and architecture

All software projects

need structure and vision

Page 9: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

Dedicatedsoftware architect

Single point of responsibility for the technical aspects of the

software project

Everybody is asoftware architect

Joint responsibility for the technical aspects of the

software project

1. A conflict in team structure

vs

Page 10: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

I’m a

software architect

Big up front designand analysis paralysis UML

Waterfall

Ivory TowerArchitecture AstronautPowerPoint Architect

Page 11: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

AaaS ... architecture as a service

Software development is not a

relay sportSoftwareArchitectureDocument

Page 13: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

Developer Developer Developer Developer Developer

Small teams of generalising specialists,

everybody does everything

With agile, there is often a

perception that you must

have self-organising teams

Page 14: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

2. A conflict in process

SoftwareArchitectureDocument

Big up front design

Requirements capture, analysis and design complete before

coding starts

Evolutionary architecture

The architecture evolves secondary to the value created

by early regular releases of working software

/// <summary>/// Represents the behaviour behind the .../// </summary>public class SomeWizard : AbstractWizard{ private DomainObject _object; private WizardPage _page; private WizardController _controller;

public SomeWizard() { }

...

}

vs

Page 15: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

The conflict relates to the desired

approachMoving fast, embracing change, delivering value early, getting feedback

Understanding everything up

front, defining a blueprint

for the team to “follow”vs

Page 16: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

Respondingto change

over

following a plan

This doesn’t mean“don’t do any planning”!

Manifesto for Agile Software Development, 2001

Page 17: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

Modern software development teams

often seem afraid of doing

analysis

Page 18: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

Bigdesign up front

No

Page 19: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

Agile software team

We don’t needsoftware architecture;

we do TDD

Page 20: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

The result of the conflicts?

Page 21: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

Chaos!Does the team understand what they are building and how they are building it?

Page 22: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

Chaos!Does the team understand what they are building and how they are building it?

No defined structure, inconsistent approaches,

big ball of mud,spaghetti code, ...

STOPSlow, insecure, unstable, unmaintainable,

hard to deploy, hard to change, over time, over budget, ...

Page 23: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

Shared vision of

TL; DRSoftware

ArchitectureDocument

Page 24: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

Shared vision of

WTF?!

Page 25: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

Software architecture

in the

21st century

Page 26: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

Chaos!Does the team understand what they are building and how they are building it?

No defined structure, inconsistent approaches,

big ball of mud,spaghetti code, ...

STOPSlow, insecure, unstable, unmaintainable,

hard to deploy, hard to change, over time, over budget, ...

Let’s agreeon some things Let’s make the implicit,

explicit

Put some boundariesand guidelines in place

Page 27: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

Dedicatedsoftware architect

Single point of responsibility for the technical aspects of the

software project

Everybody is asoftware architect

Joint responsibility for the technical aspects of the

software project

1. A conflict in team structure

vs

Page 28: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

Every software development team

needs amaster builder

1 or many

Page 29: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

DepthDeep hands-on technology

skills and knowledge

BreadthBroad knowledge ofpatterns, designs,

approaches, technologies,non-functional requirements

...

Awareness of optionsand trade-offs

Good software architects

are master-builders

Generalising

Spec

ialis

t

Page 30: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

From chaos to self-organising

Dedicatedsoftware architect

Single point of responsibility for the technical aspects of the

software project

Everybody is asoftware architect

Joint responsibility for the technical aspects of the

software project

The software architecture role

Elastic Leadership (Roy Osherove)

Chaos (command and control),

learning (coaching),

self-organising (facilitation)

Page 31: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

2. A conflict in process

SoftwareArchitectureDocument

Big up front design

Requirements capture, analysis and design complete before

coding starts

Evolutionary architecture

The architecture evolves secondary to the value created

by early regular releases of working software

/// <summary>/// Represents the behaviour behind the .../// </summary>public class SomeWizard : AbstractWizard{ private DomainObject _object; private WizardPage _page; private WizardController _controller;

public SomeWizard() { }

...

}

vs

Page 32: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

How much up front design should you do?

Big design up front?

Emergent design?(or none, depending on

your viewpoint!)

Something in between?

Waterfall

Page 33: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

You should do

“just enough”

Isn’t agile about being

flexible and adapting

to the context? :-)

Page 34: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

What’s important?

Understanding the significant elements and how they fit together

Significant decisions Low-level details

Class and sequence

diagrams covering everyuser story

Defining the length ofall database columns

Understanding howsecurity will work

Page 35: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

Just enough up front design to

understand the structure

of the software and

create ashared vision

for the team

Page 36: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

You need to

identify and mitigate

your highest priority

risksThings that will cause

your project to fail

or you to be fired!Agile software projectsdo have risks, right? :-)

Page 37: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

ProbabilityIm

pact

Low (1) Medium (2) High (3)

Low

(1)

Med

ium (

2)High

(3)

1 2

2 4

3

3 6

6

9

Page 38: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

Risk-storming

A collaborative and visual technique for identifying risk

Page 39: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

Effective software architecture sketches

Page 40: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

/// <summary>/// Represents the behaviour behind the .../// </summary>public class SomeWizard : AbstractWizard{ private DomainObject _object; private WizardPage _page; private WizardController _controller;

public SomeWizard() { }

...

}

“just enough”software architecture

The role

The process

Understand how the significant elements

fit togetherIdentify and mitigate

the key risks

Provide firm foundations and a visionto move forward

SoftwareArchitectureDocument

Page 41: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

Is a collaborative and lightweightapproach to software architecture

the missing pieceof the jigsaw?

Page 42: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

Many softwaredevelopment teams

don’tunderstand or practice

“architecture”If you’re a developer who wants to contribute to the big picture – the high-level design of the systems you work on – you need to be able to communicate your ideas clearly for your peers to understand. In my experience, with myself included, developers are inherently lacking in this skill.

http://www.ntcoding.blogspot.co.uk/2013/02/improve-your-communication-skills-with.html

Page 43: The conflict between agile and architecturestatic.codingthearchitecture.com/presentations/saturn... · 2013-05-17 · 2. A conflict in process re ure nt Big up front design Requirements

educateWe have a duty to

[email protected]

@simonbrown on Twitter

This is aboutscaling teams...