a gentle introduction to agile software development

59
A Gentle Introduction to Agile Software Development H. Alan Stevens Manage Complexity With Agility

Upload: alan-stevens

Post on 01-Nov-2014

899 views

Category:

Technology


5 download

DESCRIPTION

Software development is complex business. In order to deal with this complexity, agile practices have been developed to break development into manageable cycles of development called iterations. We examine the use of user stories to gather requirements. We examine ways to automate our build and deployment process in order to produce more frequent releases. Finally we look at ways to implement each of these practices in existing projects.

TRANSCRIPT

Page 1: A Gentle Introduction to Agile Software Development

A Gentle Introduction to Agile Software Development

H. Alan Stevens

Manage Complexity With Agility

Page 2: A Gentle Introduction to Agile Software Development

Contact Me

Slides: speakerdeck.com/alanstevens

Email/IM: [email protected]

Website: halanstevens.com

Twitter: @alanstevens

Page 3: A Gentle Introduction to Agile Software Development

nerdhiveindustries.com

Page 4: A Gentle Introduction to Agile Software Development

The Straw Man

Page 5: A Gentle Introduction to Agile Software Development

Software is Complex

Page 6: A Gentle Introduction to Agile Software Development

You Are Already Succeeding

Page 7: A Gentle Introduction to Agile Software Development

Pomposity

Page 8: A Gentle Introduction to Agile Software Development

Use What Works(For You)

Page 9: A Gentle Introduction to Agile Software Development

Avoid Dogma

Page 10: A Gentle Introduction to Agile Software Development

It’s a processIt takes Time

Page 11: A Gentle Introduction to Agile Software Development
Page 12: A Gentle Introduction to Agile Software Development

Release Regularly(Every two to four weeks)

Page 13: A Gentle Introduction to Agile Software Development

Release: Even Internally

Page 14: A Gentle Introduction to Agile Software Development

Constant Velocity“Heroism is Failure”

H. Alan Stevens

Page 15: A Gentle Introduction to Agile Software Development

Short Horizons

Page 16: A Gentle Introduction to Agile Software Development

Frequent Course Corrections

Page 17: A Gentle Introduction to Agile Software Development
Page 18: A Gentle Introduction to Agile Software Development

User GoalsNot Technical Requirements

Page 19: A Gentle Introduction to Agile Software Development

Reminder of a Future Conversation

Page 20: A Gentle Introduction to Agile Software Development

SWAGSophisticated Wild Ass

Arbitrary Guess

Page 21: A Gentle Introduction to Agile Software Development

User Story Template

As a: (Role)I want: (Something)So that: (Benefit)

Page 22: A Gentle Introduction to Agile Software Development

Documented in Acceptance Tests

Page 23: A Gentle Introduction to Agile Software Development

Avoid BDUF(Big Design Up Front)

Page 24: A Gentle Introduction to Agile Software Development

The Last Responsible Moment

Page 25: A Gentle Introduction to Agile Software Development
Page 26: A Gentle Introduction to Agile Software Development

Do the simplest thing that could possibly work

Page 27: A Gentle Introduction to Agile Software Development

YAGNIYou Ain’t Gonna’ Need It!

Page 28: A Gentle Introduction to Agile Software Development

Loose Coupling

Page 29: A Gentle Introduction to Agile Software Development

High Cohesion &

Low Coupling

Page 30: A Gentle Introduction to Agile Software Development

Law of DemeterA class should only

communicate with its immediate neighbors

Page 31: A Gentle Introduction to Agile Software Development

Manage Technical Debt

Page 32: A Gentle Introduction to Agile Software Development

I thought that rushing software out the door to get some experience with it was a good idea, but that of course, you would eventually go back

Ward Cunningham“Ward Explains Debt Metaphor”http://c2.com/cgi/wiki?WardExplainsDebtMetaphor

Page 33: A Gentle Introduction to Agile Software Development

as you learned things about that software you would repay that loan by refactoring the program to reflect your experience as you acquired it.

Ward Cunningham“Ward Explains Debt Metaphor”http://c2.com/cgi/wiki?WardExplainsDebtMetaphor

Page 34: A Gentle Introduction to Agile Software Development
Page 35: A Gentle Introduction to Agile Software Development

Code Smellsa hint that something might be wrong

Page 36: A Gentle Introduction to Agile Software Development

Follow the “Boy Scout Principle”

Page 37: A Gentle Introduction to Agile Software Development

Enable Change

Page 38: A Gentle Introduction to Agile Software Development

Common Refactorings

Rename ClassExtract VariableExtract MethodExtract Class

Page 39: A Gentle Introduction to Agile Software Development
Page 40: A Gentle Introduction to Agile Software Development

DRYDon’t

Repeat Yourself

Page 41: A Gentle Introduction to Agile Software Development

See it once: do it

See it twice: notice it

See it a third time:

Automate It!

The Rule of Three

Page 42: A Gentle Introduction to Agile Software Development

OptimizeBottlenecks

Page 43: A Gentle Introduction to Agile Software Development

Reduce Friction

Page 44: A Gentle Introduction to Agile Software Development

Enable Flow

Page 45: A Gentle Introduction to Agile Software Development

Reduce Ceremony

Page 46: A Gentle Introduction to Agile Software Development

Automate the BFDs

(Big Friggin’ Deals)

Page 47: A Gentle Introduction to Agile Software Development
Page 48: A Gentle Introduction to Agile Software Development

As applications mature, they should become more

maintainable, not less.

Page 49: A Gentle Introduction to Agile Software Development

Continuous Improvement

Page 50: A Gentle Introduction to Agile Software Development

“With every mistake, I must surely be learning”

George Harrison

Page 51: A Gentle Introduction to Agile Software Development

Work on your

process, not just in

your process

Page 52: A Gentle Introduction to Agile Software Development

Value Developer Cycles Over CPU Cycles

Page 53: A Gentle Introduction to Agile Software Development

Eliminate Waste

Page 54: A Gentle Introduction to Agile Software Development

Prevention is the best cure

Page 55: A Gentle Introduction to Agile Software Development

Avoid Complacency

Page 56: A Gentle Introduction to Agile Software Development

LEAN

Page 57: A Gentle Introduction to Agile Software Development
Page 58: A Gentle Introduction to Agile Software Development
Page 59: A Gentle Introduction to Agile Software Development

Slides: speakerdeck.com/alanstevens

Email/IM: [email protected]

Website: halanstevens.com

Twitter: @alanstevens

Thanks For Listening!