15
Give Recognition Get Recognition Tag, you’re it. Entaggle. com A Case Study in Agile Software Development with Rails Elisabeth Hendrickson [email protected] Last updated April 11, 2011 This presentation is licensed under the Creative Commons Attribution 3.0. Permission granted to distribute and excerpt . Attribute this work to Elisabeth Hendrickson, Quality Tree Software, Inc.

Entaggle: an Agile Software Development Case Study

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Entaggle: an Agile Software Development Case Study

Give RecognitionGet Recognition

Tag, you’re it.

Entaggle.comA Case Study in Agile Software Development with RailsElisabeth [email protected] updated April 11, 2011

This presentation is licensed under the Creative Commons Attribution 3.0. Permission granted to distribute and excerpt. Attribute this work to Elisabeth Hendrickson, Quality Tree Software, Inc.

Page 2: Entaggle: an Agile Software Development Case Study

OverviewFirst code written in October 2010.Announced to the public March 1, 2011.Automated continuous deploy in place from the beginning.Test-driven from the beginning.Built with Rails using Devise, Paperclip, Kaminari, HAML, SASS, JQueryUI with Rspec & Cucumber for testing and Fixjour for test data creation.Build w/ all tests currently takes 13 mins.…and it’s a “spare time” project.

Page 3: Entaggle: an Agile Software Development Case Study

Ch-ch-changesTwo complete UI rewrites since the first placeholder UI put in place. (3 UI designs total since the beginning.)The core “Tagging” user flow has changed uncountable times based on feedback.New features added at least weekly.Backlog reprioritized frequently based on user feedback.

Page 4: Entaggle: an Agile Software Development Case Study

User Suggestions Come From…

Email Conversations

Page 5: Entaggle: an Agile Software Development Case Study

ReprioritizingI thought these things would be critically important:– Moderation & admin features– User “credibility” and Tag “prestige”I was wrong.

Turns out these things were more important:– More engaging UI/flow– “Since you were last here…”– Instrumenting & Metrics

Page 6: Entaggle: an Agile Software Development Case Study

Key Factors for AgilityFrequent checkinsAutomated “checks” at both unit & acceptance levelsAutomated deploy to StagingRelentless attention to removing sources of friction

Page 7: Entaggle: an Agile Software Development Case Study

My Workflow

My CI Box (running Hudson)

Pick up the next

story.

Develop until green & clean.

Then check in.

Build kicks off.

Exploratory

Testing If build passes,

automatic deploy to Staging

Go see it in multiple

browsers.

PRODUCTION

If ready, manual deploy

Back to start.

STAGING

Page 8: Entaggle: an Agile Software Development Case Study

Frequent Checkins

Github “Punchcard” Graph

Page 9: Entaggle: an Agile Software Development Case Study

Automated “checks”239 Rspec examples (includes unit & integration tests)90 Cucumber scenarios with 684 stepsOver 93% code coverageAll major user flows covered in Cucumber scenarios

Page 10: Entaggle: an Agile Software Development Case Study

Code Coverage (Rcov)

WHY THE DIP? For no apparent reason, Rcov suddenly started counting coverage for standard ruby libraries. Edited the rake task to explicitly exclude them & coverage went back to normal.

Page 11: Entaggle: an Agile Software Development Case Study

Automated DeployIf the tests pass, Hudson CI server uses a shell command to deploy:

git pull && bundle install && rake db:migrate && touch tmp/restart.txt

(in the past I’ve used Capistrano; may decide I need it again. But not yet.)

Page 12: Entaggle: an Agile Software Development Case Study

Examples of Relentlessly Removing Sources of FrictionRegularly refactoring to remove crufty code.Avoiding the generators: they spew large amounts of templated code.Investing in making deploy to staging automatic, smooth, & secure w/ RSA key authentication.Investing in making deploy to production trivially easy.Creating shell command aliases for frequent command sequences.

Page 13: Entaggle: an Agile Software Development Case Study

Results…Stats:– 93 user stories completed including 22 user-

requested enhancements– 10 user reported bugs (only 1 critical in

production). 41 self-reported bugs. 46 of 51 bugs closed. All 5 remaining open are self-reported.

Production busted for ~3mins once on a bad deploy. Otherwise it’s been up.Almost non-existent “WTF?!?!” incident count.

Page 14: Entaggle: an Agile Software Development Case Study

Lessons Learned (and Reinforced)

The tests are totally worth it, even when it is tempting to skip them.However, high code coverage != well tested. Exploratory Testing is essential.Building up an inventory of unused acceptance tests was an unfortunate waste.Splitting stories until they represent <= 2 days worth of work is essential for keeping momentum.

Page 15: Entaggle: an Agile Software Development Case Study

Appreciations……to the following contributors:

Pat Maddox, Dale Emery, Joseph Wilk, Michael Dowling, Richard Scherek, and Lasse Koskela all paired with me on writing code.Andy Hohenner helped with System Administration.Yves Hannoulle has been an ardent supporter and evangelist.Marcus Smith created our cheerful “e” logo and Darren McMillan created the favicon.The Entaggle community has helped me steer the project with great suggestions.The Weekend Testers kept me busy with bug reports.