Why agile works

Post on 02-Jul-2015

181 views 0 download

description

A deck supporting a speech at TopConf Tallinn 2014 on modelling software projects and our mental models of software.

Transcript of Why agile works

Why agile works?

Andres Kütt RIA / State Information System Architect

20.11.14

We perceive the world via mental models

We also use them to make predictions about the future

These models are inaccurate

Because humans are not perfect

Contrary to what you might think about yourself

Because accuracy does not guarantee social success

Galileo had a very accurate model of the universe that also made him very unpopular

Because math gets too complex

Non-linear and chaotic processes, the three-body problem, etc.

This is a three litre Bag-in-Box of Sacrifice Shiraz Red Wine. Drink responsibly!

Can we find tempty based on S0 and g?

gS

S

The exponent will never reach zero

Yet we get the physics for this in high-school

Our mental model is not accurate enough

What else might we get wrong?

What about our mental model of software projects?

About the computational model used

! Shape is more important than size ! The idea is to model behaviour, not give precise numbers

! The same sort of bathtub-based logic is used ! A lot can be built by simulating interconnected baths ! Look up system dynamics, if you are so inclined

! It has been validated ! Not published but supported by research ! Makes a lot of intuitive sense

Let’s get to it

The simple model Let our base project be a project with 100 tasks. The team size is 200 people, each of whom can accomplish 0.005 tasks per week, this leads to…

20% of mistakes and reasonable assumptions on additional work

Whoops, a 2.25 times longer project emerged by allowing mistakes (20%) and allowing them to cause additional work. Of course, the relationships are more subtle but they are way too geeky to explain here. The deconstruction rate depends on how much of the project is done: it is 0 for about 50% and grows to 1 (in the later phase, as much of effort goes into deconstruction as into rework) as the project progresses.

Team churn, turns out, does not have a significant impact

Projects are not linear

Not on a large scale. But agile works on much smaller timescales

What is the main assumption that we have made in this modelling thus far? We test all the time. What if this is not the case? Let’s look at typical waterfall.

no testing before 30% of project duration. Which turns out to be a 25%.

The sooner you test, the better

In agile, testing starts immediately

The importance of skilled workforce. Decreasing the error rate is 1.5 times as beneficial than allowing it to increase

Incompetence is really bad

Agile breeds and needs competence

Can agile only be done properly by such competent folks who would succeed regardless?

Effects of learning will be over- and bad HR under-estimated

Decreased error rate will have a much smaller impact than increased error rate

The basic structure of the model used

Thank you!

Andres Kütt andres.kutt@ria.ee