Agile development

55
Agile Development

description

 

Transcript of Agile development

Page 1: Agile development

Agile Development

Page 2: Agile development

We want to build software,but how do we go about doing that?

Page 3: Agile development

Waterfall Development

Page 4: Agile development

Waterfall Development

• This is the way industrial engineers built concrete items. It works great.

• We want to build software, and this is a terrible idea.

Page 5: Agile development

Waterfall Development

{side story about the USPS}

Page 6: Agile development

The average software project fails; therefore,we must strive for excellence.*

Page 7: Agile development

The average software project fails; therefore,we must strive for excellence.*

-paraphrased from Chef Gordon Ramsay talking about restaurants

Page 8: Agile development

What is Agile?

Agile manifesto

Proposed by Kent Beck, Martin Fowler, et al.

Page 9: Agile development

What is Agile?

Agile manifesto

Individuals and interactions over processes and toolsWorking software over comprehensive documentationCustomer collaboration over contract negotiationResponding to change over following a plan

Page 10: Agile development

What is Agile?

Agile manifesto

Individuals and interactions over processes and toolsWorking software over comprehensive documentationCustomer collaboration over contract negotiationResponding to change over following a plan

There is value in the items on the right, but more value in the item on the left.

Page 11: Agile development

What is Agile?

Various methodologies:• Scrum• eXtreme Programming (XP)• Lean

Page 12: Agile development
Page 13: Agile development
Page 14: Agile development

Customer satisfaction by rapid delivery of useful software

Page 15: Agile development

Customer satisfaction by rapid delivery of useful softwareRapid delivery means weeks – not months.Useful software means a noticeable difference.

Page 16: Agile development

Welcome changing requirements, even late in development.

Page 17: Agile development

Welcome changing requirements, even late in development.

Page 18: Agile development

Welcome changing requirements, even late in development

Requirements change b/c:Business needs changeUnderstanding changes (yours & theirs)Problems solve themselves or require a new approachCompetitors pop-up

Page 19: Agile development

Welcome changing requirements, even late in development

When requirements or understanding changes, you are free to re-estimate time restraints and put the feature off for another iteration.

Page 20: Agile development

Working software is delivered frequently (weeks rather than months)

Page 21: Agile development

Working software is delivered frequently (weeks rather than months)

Notice the word “working.” If you rollout weekly, you’ll quickly learn to test early and often rather than putting it off.

Page 22: Agile development

Working software is delivered frequently (weeks rather than months)

In order to achieve weekly releases, you must break large problems into smaller problems.

You also focus on the really important problems.

Page 23: Agile development

Working software is the principal measure of progress

Page 24: Agile development
Page 25: Agile development

Working software is the principal measure of progress.

Users can see and understand working software. They can also see what isn’t working. There is no better metric.

Page 26: Agile development

Working software is the principal measure of progress.

“Almost done” is useless for the customer.

Page 27: Agile development

Sustainable development, able to maintain a constant pace.

Page 28: Agile development

Sustainable development, able to maintain a constant pace.

Burnout is a real concern amongst developers. Limit overtime work.

Page 29: Agile development

Close, daily cooperation between business people and developers.

Page 30: Agile development

Close, daily cooperation between business people and developers.

Even if it’s just 5 minutes, daily talks are critical. You don’t want to build excess software.

Page 31: Agile development

Face-to-face conversation is the best form of communication (co-location).

Page 32: Agile development

Face-to-face conversation is the best form of communication (co-location).

Let’s face it, face-to-face is best. You can read mannerisms and tone of voice. You need the feedback.

Page 33: Agile development

Projects are built around motivated individuals, who should be trusted.

Page 34: Agile development

Projects are built around motivated individuals, who should be trusted.

If you can’t trust them, they shouldn’t be working with you.

Page 35: Agile development

Projects are built around motivated individuals, who should be trusted.

“Oh, Larry is working on it? You’ll have to make him do it.”

Page 36: Agile development

Continuous attention to technical excellence and good design.

Page 37: Agile development

Continuous attention to technical excellence and good design.

Shortcuts will destroy you. I spent 3 weeks building a “shortcut” that should have taken 3 days. Now I have bad software that took longer to deliver.

Page 38: Agile development

Continuous attention to technical excellence and good design.

Use design patterns (where appropriate), take advantage of the language’s features, etc.

Page 39: Agile development

Simplicity—the art of maximizing the amount of work not done—is essential

Page 40: Agile development

Simplicity—the art of maximizing the amount of work not done—is essential.

Plans change, understanding changes, and simple things are easier to test.

Quit building things that you won’t need.

Page 41: Agile development

Self-organizing teams

Page 42: Agile development

Self-organizing teams

A “team” isn’t just a group of people with a common assignment. They should have a common spirit and exercise individuals’ strengths.A good team “jells” well.

-Peopleware

Page 43: Agile development

Self-organizing teams

A self-organized team requires no job titles. Job functions overlap, and everyone just falls into place.

Page 44: Agile development

Self-organizing teams

A self-organized team requires no job titles. Job functions overlap, and everyone just falls into place.

They look for work rather than wait for it to be assigned.

Page 45: Agile development

Regular adaptation to changing circumstances.

Page 46: Agile development

Regular adaptation to changing circumstances.

Things will change:requirementsteam membersleadership/directionfunding

Page 47: Agile development

How do I start implementing agile?

Agile development should make things easier. Slowly implement techniques starting with your own work. Then move it out to the team.

Page 48: Agile development

How do I start implementing agile?

• Get “buy-in” from the user (customer, another department, whoever).

• Testing (TDD).• Version control (git, subversion).• Break the large problems into small problems

and rank let the customer rank them with priority.

Page 49: Agile development

How do I start implementing agile?

Get “buy-in” from the user

Meet with the a user, pick a small feature, implement it in a week or two. Do it again.

Page 50: Agile development

How do I start implementing agile?

Test:unit testsregression testsacceptance tests

Page 51: Agile development

How do I start implementing agile?

Version control:

Use git, mercurial, subversion, etc.

Page 52: Agile development

How do I start implementing agile?

Break the large problems into small problems and rank them with priority.

Sit with the user and break feature requests into smaller requests, make time estimates, and let the user rank them with priority.

Page 53: Agile development

Wrap Up

Page 54: Agile development

Books on Agile

Page 55: Agile development

Thanks!

Name: David Haskins

Connect with me on LinkedIn: [email protected]