Why Software Projects Fail - Coding the...

94
www.codingthearchitecture.com Why Software Projects Fail

Transcript of Why Software Projects Fail - Coding the...

Page 1: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

www.codingthearchitecture.com

Why Software Projects Fail

Page 2: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Simon Brown

Hands-on software architect

Page 3: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Why software projects fail...

Page 4: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

...architects are here

to help, not to hinder

Page 5: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Software projects failfor a number of reasons

Page 6: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Iterative and agile techniques solve some problems...

Page 7: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

...but not all of them

Page 8: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Software architectshave a

bad reputation(“thinkers”)

Page 9: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Project failure

“let’s get an architect in for the

first few weeks”(they are too expensive and they don’t code)

“we don’t need an architect,

we have smart developers”(we only hire the best)

“you must follow what our

central architecture

team dictates”

(the ones in the ivory tower)

Page 10: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Time for

change

Page 11: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

1. Management of the non-functional

requirements

Page 12: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Stakeholder

“it should be

fast”

Page 13: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

“the main flow of the

search use caseshould respond within

10 seconds,for

all concurrent users”

Page 14: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Non-runtimeRuntime

PerformanceScalabilityAvailabilitySecurityDisaster RecoveryAccessibilityMonitoringManagementAuditability...

FlexibilityExtensibilityMaintainabilityInteroperabilityLegalRegulatoryCompliancei18nL10n...

Page 15: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Somebody needsto take

ownership

Page 16: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

It should be the

architect

Page 17: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

2. Architecture definition

Page 18: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Every system has an architecture, but not every architecture is

defined

Page 19: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Just enough(pragmatic rather than

big design up front)

Page 20: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Architecture definition introduces

structure, guidelinesand leadership

Page 21: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Somebody needs totake

ownership

Page 22: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

It should be the

architect(to be fair, defining the architecture *is* our job)

Page 23: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

3. Technology selection

Page 24: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Do you believe

vendor hype?

Page 25: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

“does it actually work?

show me.”

Page 26: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Technology selectionis about

managing risk

Page 27: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Somebody needsto take

ownership

Page 28: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

It should be the

architect(if we recommend some technology,

we better make sure it works!)

Page 29: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

4. Architecture evaluation

Page 30: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Does your architecture

work?(and what does “work” mean?)

Page 31: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Do you trust yourself?(I don’t)

Page 32: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Testing provides

confidence

Page 33: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

I want to prove my architecture will work

(management generally give meless grief when I do this)

Page 34: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Performance and scalability tests

(automated if possible)

Page 35: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Somebody needs totake

ownership

Page 36: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

It should be the

architect(we should taste our architecture)

Page 37: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

5. Architecture collaboration

Page 38: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

The team needs to

understand the architecture

Page 39: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Architecturesdon’t live in

isolation

Page 40: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

“Sharing Architectures”(a quick plug)

Page 41: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Somebody needs totake

ownership

Page 42: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

It should be the

architect(our architecture needs to integrate)

Page 43: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Definition

Management of non-functional requirements

Technology selection

Architecture definition

Architecture evaluation

Architecture collaboration

This is what we write about on our

website...

www.codingthearchitecture.com

Page 44: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

6. Ownership of the bigger picture

Page 45: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Software developmentis not a

relay sport

Page 46: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

“how do you knowthat your solution

will work?”

Page 47: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

“Architect”

“that’s an

implementation detail”

Page 48: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

“Architect”

“we have a

spreadsheetfrom past projects”

Page 49: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Look after your architecture

Page 50: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Architectures

evolve

Page 51: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Somebody needs totake

ownership

Page 52: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

It should be the

architect(why hand-off *our* architecture?)

Page 53: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

7. Leadership

Page 54: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Mind the

gap

There’s an essay on our website

about this...

Page 55: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Experienceand focus

Page 56: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Developer

Focusses only on the low-level

detail

Developer

Focusses only on the low-level

detail

Developer

Focusses only on the low-level

detail

Developer

Focusses only on the low-level

detail

Developer

Focusses only on the low-level

detail

Page 57: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Gap

Developer

Focusses only on the low-level

detail

Architect

Sits in an ivory tower and dictates

Page 58: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Reduced gapArchitect

Developer

Increased architectural awareness

Increased collaboration

Page 59: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Somebody needs toundertake technical

leadership(continuously)

Page 60: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

It should be the

architect(sounds obvious, but it doesn’t always happen -

who’s going to steer the boat?)

Page 61: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

8. Coaching and mentoring

Page 62: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Project teams needleadership and

support

Page 63: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Somebody needs to

coach and

mentor

Page 64: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

It could be the

architect(why not share some of our vast experience?)

Page 65: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

9. Quality assurance

Page 66: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Quality needs

standardsand practices

Page 67: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

1. Continuous integration

2. Automated unit testing

3. Code coverage

Page 68: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Source code

analyzers

Page 69: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Most projects

don’t do enoughquality assurance

Page 70: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

What’s

important?

Page 71: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Door

delegate

Page 72: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Somebody needs to

assure quality

Page 73: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

It should be the

architect(agile would say differently, but that’sa bit harsh on junior team members)

Page 74: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

10. Design, developmentand testing

Page 75: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Hands-ondoesn’t necessarily

mean coding

Page 76: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Hands-on means

engaged,but...

Page 77: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

...why shouldn’t the architect code?

Page 78: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

I enjoy

;-)

Page 79: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Manager

“Our architects are

too valuableto code”

Page 80: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Me

“Does it matterif your projects

fail?”

Page 81: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

the architectcan code

(it’s not mandatory; project size orpolitics may prevent this)

Page 82: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

This is what we write about on our

website...

www.codingthearchitecture.com

Delivery

Ownership of the bigger

pictureLeadership

Coaching and mentoring

Quality assurance

Design, development and testing

Page 83: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Summary

Page 84: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Software projects fail for many reasons

(some of which agile doesn’thave the answers for)

Page 85: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Software architects have a

bad reputationbecause of the

limited rolewe often undertake

Page 86: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Software architecture is morethan choosing technology and defining architecture

Page 87: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Project success is more

than choosing technology and defining architecture

Page 88: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Delivery

Ownership of the bigger

pictureLeadership

Coaching and mentoring

Quality assurance

Design, development and testing

Definition

Management of non-functional requirements

Technology selection

Architecture definition

Architecture evaluation

Architecture collaboration

Page 89: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Who should doall of this?

Page 90: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

It should be the

architect(somebody has to do it and that’s why

we get paid the big bucks)

Page 91: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Definition

Management of non-functional requirements

The role of a software architect

Delivery

Ownership of the bigger

pictureLeadership

Coaching and mentoring

Quality assurance

Design, development and testing

Technology selection

Architecture definition

Architecture evaluation

Architecture collaboration

This is what we write about on our

website...

www.codingthearchitecture.com

Page 92: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

A hands-on software architect can be

invaluable for preventing project failure

Page 93: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

A hands-on software architect

can be invaluable for driving

project success

Page 94: Why Software Projects Fail - Coding the Architecturestatic.codingthearchitecture.com/.../sa2008-why-software-projects-fa… · Project failure ÒletÕs get an architect in for the

Websitehttp://www.codingthearchitecture.com

London User GroupMonthly mix of presentation and discussion

Google Grouphttp://groups.google.com/codingthearchitecture