42
making programming fun again Agile Software Development

Agile Software Development - making programming fun again

Embed Size (px)

DESCRIPTION

Agile Software Development - making programming fun again

Citation preview

Page 1: Agile Software Development - making programming fun again

making programming fun again

Agile Software Development

Page 2: Agile Software Development - making programming fun again

Software engineering done right.

How Projects Really Work

Page 3: Agile Software Development - making programming fun again

Software engineering done right.

How the customer explained it

Page 4: Agile Software Development - making programming fun again

Software engineering done right.

How the project leader understood it

Page 5: Agile Software Development - making programming fun again

Software engineering done right.

How the analyst designed it

Page 6: Agile Software Development - making programming fun again

Software engineering done right.

How the programmer wrote it

Page 7: Agile Software Development - making programming fun again

Software engineering done right.

How the business consultant described it

Page 8: Agile Software Development - making programming fun again

Software engineering done right.

How the project was documented

Page 9: Agile Software Development - making programming fun again

Software engineering done right.

How much the project cost

Page 10: Agile Software Development - making programming fun again

Software engineering done right.

What the customer really needed

Page 11: Agile Software Development - making programming fun again

Software engineering done right.

“CHAOS Report” by Standish Group

Page 12: Agile Software Development - making programming fun again

Software engineering done right.

Challenged Projects - Reasons

Lack of User Input Incomplete

Requirements & Specifications

Changing Requirements & Specifications

Lack of Executive Support

Technology Incompetence

Lack of Resources Unrealistic Expectations Unclear Objectives Unrealistic Time Frames New Technology

Page 13: Agile Software Development - making programming fun again

Software engineering done right.

Failed Projects - Reasons

Incomplete Requirements

Lack of User Involvement

Lack of Resources Unrealistic Expectations Lack of Executive

Support

Changing Requirements & Specifications

Lack of Planning Didn't Need It Any

Longer Lack of IT Management Technology Illiteracy

Page 14: Agile Software Development - making programming fun again

Software engineering done right.

Successful Projects - Reasons

User involvement Executive management

support Clear business

objectives Optimizing scope Agile process

Project manager expertise

Financial management Skilled resources Formal methodology Standard tools and

methodology

Page 15: Agile Software Development - making programming fun again

Software engineering done right.

What's wrong with “Waterfall”?

Page 16: Agile Software Development - making programming fun again

Software engineering done right.

What's wrong with “Waterfall”?

Mistakes are hard to find in early stages Expensive to fix mistakes in later stages Customers don't know what they want from the

beginning Developers don't know how long a project will take

from the beginning Business needs change

Page 17: Agile Software Development - making programming fun again

Software engineering done right.

Effects of “Waterfall”

Death March projects‒ Mis-estimated schedules lead to successive overtime‒ Delays in one stage cause delays in succeeding stages

Conflict between customers and developers‒ Customers don't get the software that they want‒ Developers don't get clear requirements

Process and tool obsession‒ People focus on creating artifacts but lose sight of the

goal of working software‒ Processes replace natural communication

Page 18: Agile Software Development - making programming fun again

Software engineering done right.

The Agile Manifesto

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

• Individuals and interactions over processes and tools

• Working software over comprehensive documentation

• Customer collaboration over contract negotiation

• Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

Page 19: Agile Software Development - making programming fun again

Software engineering done right.

Selected Practices

Iterative Development User Stories Test-Driven Development One Team Self-Managed Teams Sustainable Pace

Page 20: Agile Software Development - making programming fun again

Software engineering done right.

Iterative Development

Software development as an evolutionaryevolutionary process

Page 21: Agile Software Development - making programming fun again

Software engineering done right.

Iterative Development

All steps of SDLC are done at each iteration

Page 22: Agile Software Development - making programming fun again

Software engineering done right.

Iterative Development

Working softwareWorking software produced at each iteration– No such thing as “X% complete”, only done and not

done

Page 23: Agile Software Development - making programming fun again

Software engineering done right.

Iterative Development

Benefits‒ Customers can evaluate what they want and adjust

requirements

‒ Developers get better estimates of future tasks

‒ Better communication between customer and developers and among developers

Talk is about something concrete, not abstract

‒ Just enough artifacts are created to produce working software

Less waste

Page 24: Agile Software Development - making programming fun again

Software engineering done right.

User Stories

Traditional requirements: “The system shall... the system shall...”

Page 25: Agile Software Development - making programming fun again

Software engineering done right.

User Stories

As a < user role >

In order to < business goal >

I want to < behavior >

Focus on business goals- Requirements have context

Story-telling is the most natural way of communication

Page 26: Agile Software Development - making programming fun again

Software engineering done right.

Test-Driven Development

Bugs are harder to find and fix when found later

Modifying code tends to introduce bugs

- Difficult to know if one has introduced bugs without tests

Manual tests are expensive to repeat and provide limited information

Page 27: Agile Software Development - making programming fun again

Software engineering done right.

Test-Driven Development

Programmers should write automated tests as they code

- Write test before implementation Provides immediate feedback if their code works Builds suite of automated tests that can be run each

time code is modified Makes it safe to modify existing code Frameworks: JUnit, NUnit, hundreds of others...

Page 28: Agile Software Development - making programming fun again

Software engineering done right.

Page 29: Agile Software Development - making programming fun again

Software engineering done right.

TDD Benefits

Code is safe to modify Tests are excellent documentation

- Programmers hate writing documentation, but they like to code

Design improves- Programmers think of their code's behavior before coding

- Programmers see their code from a second-person's point-of-view

• Is my code readable? Easy to use?

- Components become decoupled to facilitate testing

Page 30: Agile Software Development - making programming fun again

Software engineering done right.

One Team

Everyone is considered part of one team, including the customer

Developers, testers, business analysts, project managers, web designers, etc, work in work in the same placethe same place, usually on the same table

Page 31: Agile Software Development - making programming fun again

Software engineering done right.

Page 32: Agile Software Development - making programming fun again

Software engineering done right.

One Team

Faster communication– Issues resolved faster

Natural communication– Face-to-face, ad hoc and continuous throughout the

day Less misunderstanding and antagonism between

functional groups

Page 33: Agile Software Development - making programming fun again

Software engineering done right.

Self-Managed Teams

When teams manage themselves... Higher motivation More creative solutions Faster resolution of issues Drive for continuous improvement

Page 34: Agile Software Development - making programming fun again

Software engineering done right.

Self-Managed Teams

Practices/Tools Daily Stand-Up Meetings Retrospectives Big Visible Charts,

Whiteboards Direct access to

customers

Page 35: Agile Software Development - making programming fun again

Software engineering done right.

Sustainable Pace

Overtime leads to lower productivity

Lowers morale

Page 36: Agile Software Development - making programming fun again

Software engineering done right.

Sustainable Pace

Team should measure “velocity” at each iteration Keep work load within velocity If iteration load was underestimated, ask customer

to decide which features to move to future iterations

Page 37: Agile Software Development - making programming fun again

Software engineering done right.

Other Practices...

Planning Tracking Continuous Integration Pair Programming Refactoring Planning Boards Burn-Down Charts Collective Code Ownership Coding Standards

Many more...

Page 38: Agile Software Development - making programming fun again

Software engineering done right.

Agile at Orange & Bronze

• Been doing Agile since its foundation in 2005– Before it became mainstream

• We've tried different methodologies and practices– XP, Scrum, Kanban

– Not all practices work in all conditions

• The first to offer training in Agile methodologies and practices

– Scrum, TDD, Agile Business Analysis, Agile QA, etc

– Trainers are seasoned practictioners

Page 39: Agile Software Development - making programming fun again

Software engineering done right.

Open Workspaces

Page 40: Agile Software Development - making programming fun again

Software engineering done right.

Project Automation

Page 41: Agile Software Development - making programming fun again

Software engineering done right.

Collaborative Design

Page 42: Agile Software Development - making programming fun again

Software engineering done right.

Agile Training