The Fourth Agile Principle

“Business people and developers must work together daily throughout the project.”

I was in a backlog grooming meeting this morning when I was given reason to reflect on this, the fourth, Agile principle. The reason was that the team I was working with was struggling/arguing about the proper wording of a story. To a few on the team the absolutely precise wording of the story was of paramount importance. While I am a big fan of precision, the vehemence of the need to be precise was a bad smell. It took me some time to realize where the stridency came from.

Continue reading “The Fourth Agile Principle”

The Reason Your Agile Implementation will Fail

I have had the good fortune of managing Agile (scrum) implementations at a number of different companies over the years. I have had some great success and some implementations that were not so great. While not unique, my experience is such that I have enough data points to start seeing patterns, especially patterns of failure. That is, while I cannot confidently tell you what will most certainly work in your particular situation, I am eminently qualified to tell you what will not work.

Continue reading “The Reason Your Agile Implementation will Fail”

10 Reasons Why BDD Changes Everything

Goal, larry apke, bdd

Goal written on whiteboard

Recently I have been working with my two scrum teams to implement a BDD approach to our development. I’d have to say that the early results are astounding! While I have always known and believed in BDD in theory, I continue to be amazed by its simple power in practice. For anyone reading who is considering BDD adoption, below are 10 good reasons to move off of the sidelines and embrace BDD:

 

1. Communication between business and development is extremely focused as a result of common language.

A recent scrum team I lead was struggling during groomiing sessions to come up with valid acceptance criteria. After much excruciating pain we introduced ubiquitous language of BDD. What was taking days was accomplished in just a few hours with better quality forged from increased understanding of expected behavior.

2. Business needs tie directly to the code that is written.

The scenarios can be written by the business, testers and/or developers. Since the scenarios can be written by business and the scenarios create the tests, the code that satisfies the tests satisfies the business requirements. Simple.

3. Developers know what test cases they should write to accommodate TDD.

Most developers will see the wisdom in Test Driven Development, but they find it very hard to decide what tests to create. BDD eliminates this by having tests created directly from scenarios, making the process of deciding which tests to write a moot point.

4. All the underlying benefits of TDD become more easily realized.

These include: safer refactoring, fewer regression defects, greater ability of QA to concentrate on important tests, defects are found and fixed sooner.

5. Code is easier to maintain.

Studies have shown that about 90% of investment in software involves the maintenance of code after the initial “project” is complete. BDD means that all features have tests and these tests show how the code is used and make the code easier to understand and maintain.

6. Code is self documenting.

Similar to the point above. Your test cases and scenarios become your documentation. Using BDD will allow you to have updated documentation that is not separate from code, but integral to code. Documentation can be easily extracted and that documentation is understandable by anyone.

7. Stories are easier to “groom” – breakdown, task and plan.

I can better estimate a story that I have acceptance criteria for and the BDD scenarios become that acceptance criteria. Armed with the scenarios ahead of planning allows a team to better understand the work needed and estimate how long it will take to complete.

8. Teams can be more agile.

Like the point above – when your requirements are better understood, your acceptance criteria better known and estimates more accurate you can be more agile.

9. Developers can be trained / on-boarded easier.

Since the code is self-documenting and test cases show how the code should work, new developers have access to a wealth of information that is usually not available when they are brought on-board a project. This point alone should be a driving reason to adopt BDD as new developer training is usually steep.

10. There is more visibility into team progress and status.

One of the main benefits to Agile is to have visibility into team progress. The tasks for completing a story are broken into well-known pieces that burn down cleanly. For example, each scenario can be added to story as a task and tracked to completion to see how well the story is progressing.

I hope that you find my reasons compelling and that you too try BDD and see if it provides the benefits I outline.

Larry Apke

Not Burning Down? Diagnosing and Fixing the Some of the Problems

Of course you would not expect every sprint to have a perfect burndown. You would not expect to complete every story in every sprint (my goal has always been 90% or greater stories complete), but if you are finding yourself with many “overhanging” stories each sprint there are a number of things that you can do to diagnose and fix the issue. In this particular post, I am going to discuss problems with time and hours.

There are three things that can go wrong with hours:

  1. The number of hours the individual estimates for capacity is too low.
  2. The number of tasks identified is incorrect (not enough tasks identified).
  3. The number of hours associated with each task is too low.

Continue reading “Not Burning Down? Diagnosing and Fixing the Some of the Problems”

Wideband Delphi and How I Re-Discovered It

While on my way to researching something else I can across an interesting blog entry on Atwood’s coding horror site about Planning Poker. Over the years I have been a scrum master I have evolved a pretty effective way of getting relative story sizes as quickly and accurately as possible. I do this rapid release planning by having the team choose t-shirt size stories as yardsticks and then having them use these sizes to size new stories. This in itself is not unique, but what I ended up doing to further streamline the process is to give the team members a spreadsheet and have them fill this out on their own and send to me.

It works very well.It keeps team members from getting “bullied” by outspoken teammates. We find that there is really a great deal of agreement for the size of stories (80-90%) and we save a great deal of time that would be spent in a meeting discussing a bunch of stories we already agree on. Not only do we save time but we gain accuracy by tapping into the wisdom of crowds. Those stories where we don’t have good agreement (high Standard Deviation) we can discuss until we agree. So I thought I came up with a new way of doing story pointing. While that still may be technically true, after stumbling upon Jeff Atwood’s blog, I realized that what I really did was to re-discover Wideband Delphi and apply it to Agile instead of waterfall. It goes to show that everything old is new again.

Welcome to 2012! Getting Back to Agile.

Wow! Just noticed that I had not blogged at all since October of last year! Between starting a new gig on October 31st and the holidays I have been way too busy getting acclimated to my new surroundings, shopping for the perfect holiday gifts, feeding my face with holiday cheer, etc. to spend time writing about Agile development. Time to get back to it. My new year’s resolution is to begin contributing again on a regular basis. It is therapeutic for me and I have found out through Google analytics that there are a number of folks out there that have found some value in my musings. I hope you all had a great holiday season and I wish you the very best in the new year!