agile software development in practice: experience, tips and tools from the trenches of higher...

43
Agile Software Development in Practice: Experience, Tips and Tools from the Trenches of Higher Education Valerie Puffet-Michel ([email protected]) and Thomas Wood ([email protected]) Student Affairs Information Technology University of Connecticut NERCOMP 2012 1

Upload: valerie-puffet-michel

Post on 13-Jan-2015

980 views

Category:

Technology


0 download

DESCRIPTION

In the Division of Student Affairs at the University of Connecticut, the Applications Development team has been developing and delivering custom software using agile methods for over four years. In this session, we'll share our experiences and give you a behind the scenes look at how agile software development really works by walking you through how we translate the unique business needs of our clients into deployed software.

TRANSCRIPT

Page 1: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Agile Software Development in Practice:Experience, Tips and Tools from the Trenches of Higher Education

Valerie Puffet-Michel ([email protected])and Thomas Wood ([email protected])

Student Affairs Information TechnologyUniversity of Connecticut

NERCOMP 2012

1

Page 2: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Who are we?

Student Affairs Information Technology (SAIT)

Application development team- 4 developers- 1 team lead with several hats

2

Page 3: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

• Center for Students with Disabilities

• Residential Life

• Office of Student Services and Advocacy

• Dining Services

• Career Services

Who are our customers?

3

Page 4: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Outline

• Why write custom software?

• Challenges of software development in higher education

• Our secret sauce!

• Walk through “The life of a feature”

• What worked for us and what didn’t ...

• Where do you start?

4

Page 5: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

• When you can’t always get you want (from a vendor) ...• Quality• Features• Timeliness

• ... you can get what you need!• The features you need when you want them• Opportunity to design a system: software, business process, integration

Why write custom software for higher education?

5

Page 6: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

So ... we want to develop software, but ...

6

Page 7: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

• In typical software projects:• Scope, resources, planning determined at start of the project ...• ... when you know the LEAST

• We face:• Limited resources• Diverse demands• Everything is important

(no economy!)

It’s not that easy ...

7

Page 8: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Agile

8

Page 9: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

What values are driving us?

Individuals and interactions

Working software

Customer collaboration

Responding to change

over processes and tools

over comprehensive documentation

over contract negotiation

over following a plan

while there is value in the items on the right,

we value the items on the left more.

Agile Manifesto

9

Page 10: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Values continued

10

Page 11: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

• Scrum: Agile Project management

• Good development practices

Our secret sauce!

11

Page 12: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Let’s walk through the life of a feature

12

Page 13: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

We want to hire a notetaker... It takes too much time now!

Can you help us?

Meeting with the customers

13

Page 14: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Mockup

14

Page 15: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Clarify the story

• Val & the team have a conversation, clarify the story.

15

Page 16: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Estimate the story

• The team estimates using a card game called planning poker!

16

Page 17: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Identify stories and commitment!

• Team commits to a group of stories that they will work on in the next 2 weeks.

17

Page 18: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Daily Standup

• Meeting every day... 15 minutes... standing up!

18

Page 19: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Development in progress...

19

Page 20: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Conversation leads to just enough design

• Story as conversation

• What does it mean for a story to be “done”?

• Design just enough to implement the feature

20

Page 21: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Source control and branching

• Central source code repository

• “Trunk”: always deliverable

• “Branch”: private copy of the trunk

21

Page 22: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Tests

• We believe strongly in tests. • 2x as much test code as application code• Tests make us fearless• Tests give us executable documentation• Our tests are automated and easy to run

22

Page 23: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Two types of tests

• Unit tests

• “When a notetaker is hired for a class, the notetaker should be added to the list of notetakers for the class.”

• Functional tests

• “Given I am viewing the schedule for a prospective notetaker, when I check the box next to a class, enter a cell phone numberand click the hire button, I should see the ‘notetaker hired’ message”

23

Page 24: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Test Coverage

• Goal is to make sure every line of code is tested.

• All of the individual tests are collected in a test suite

• Coverage measures which lines of code are executed while a test suite run.

24

Page 25: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Hire a notetaker screen

25

Page 26: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Tom is done!

• What does it mean to be “done”?

• Story is implemented

• Tests pass

• Coverage is good.

What’s next?

26

Page 27: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

The team reviews the code

• Change is distributed to team members for review• Why code review?

• shared ownership • increase quality• follow standards• cross training for free

27

Page 28: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Jenkins helps test the feature automatically

• Jenkins is a continuous integration server.• How does it work?

• When new code is committed to trunk, Jenkins runs the tests automatically, measures the coverage, and deploys the application so Val can try it out.

• Goal: • Automated builds that verify quality: • Make sure we still have working software

Work smarter, not harder!

28

Page 29: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

29

Page 30: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Development practices in a nutshell...

• Source code control

• Simple design

• Automated tests

• Code review

• Continuous integration

30

Page 31: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Val accepts or rejects a story

• Last quality check

31

Page 32: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Demo and customer feedback

32

Page 33: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Story is live!

33

Page 34: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Repeat as needed!

• multiple stories (bricks)

• multiple sprints (rooms)

34

Page 35: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Challenges we faced

• Customer collaboration• Getting regular time with customers. • Getting customers to test the software.• Not having the right users in the room (e.g. students, maintenance staff)

• Development practices & estimation• Deployment cost• Code review bottleneck• Difficulty estimating uncertain stories

35

Page 36: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

What works for us?

• Customer collaboration and feedback• Customer prioritizes the work, team only works on most important features.• We make change happen, flexible• We continually improve our practices.• Deliver software as we go (one brick at a time!)

• Team works on one project at a time • Management support and clear priorities set by SAITOC (Student Affairs IT

Oversight Committee)

• We have fun and love what we do. Everyone is happy!

36

Page 37: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Another view on our practices

• show data!

37

Page 38: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Where do you start?

• One step at a time

• Make mistakes and learn from them

• Enjoy the journey ... patience.

• Make it fun!

38

Page 39: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Acknowledgements

• Our team:

• Matthew Coolbeth

• Matthew Desmarais

• Michael Keating

• SAIT

39

Page 41: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Learn more• the agile manifesto: http://agilemanifesto.org/

• scrum• Intro to scrum - http://www.mountaingoatsoftware.com/topics/new-to-agile-or-scrum• Agile Project Management with Scrum - Ken Schwaber• Jeff Sutherland's blog: http://scrum.jeffsutherland.com/

• development practices• Practices of an Agile Developer - Venkat Subramanian, Handy Hunt• Extreme Programming Explained - Kent Beck, Cynthia Andres• Continuous delivery - Jez Humble, David Farley

• estimation, planning and stories• Planning poker: http://www.mountaingoatsoftware.com/topics/planning-poker• User Stories Applied: for agile software development - Mike Cohn• Agile Estimation and Planning - Mike Cohn

• from traditional project management to agility• The software Project Manager's Bridge to Agility - Michelle Sliger, Stacia Broderick• Agile Project Management: creating Innovative Products - 2nd Edition - Jim Highsmith

• certifications: • Scrum Master and Product Owner - Scrum alliance - http://www.scrumalliance.org/• PMI- ACP - http://www.pmi.org/Certification/New-PMI-Agile-Certification.aspx

41

Page 42: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Tools

• nose (www.readthedocs.org/docs/nose) - automated test framework

• Jenkins (www.jenkins-ci.org) - continuous integration server

• Pivotal Tracker (www.pivotaltracker.com) - agile project management

• Google Code Reviews (code.google.com/p/rietveld) - code review tool

• Subversion (subversion.apache.org) - version control system

42

Page 43: Agile Software Development in practice: Experience, Tips and Tools from the Trenches of Higher Education

Software stack

• Debian Linux (www.debian.org) - operating system

• Python (www.python.org) - programming language

• Pylons (www.pylonshq.org) - web framework

• SQLAlchemy (www.sqlalchemy.org) - object relational manager

• Microsoft SQL Server - relational database

43