May 27th, 2009How agile are you ?

This is a small test based on the Nokia test to check if their scrum teams are agile enough
  1. The team is empowered to make decisions.
  2. The team is self-organising and does not rely on management to set and meet its goals.
  3. The team commits and takes responsibility for delivery and is prepared to help with any task that helps the team to achieve its goal.
  4. The team knows who the product owner is.
  5. Each sprint/iteration has a clear goal.
  6. All team members, including testers, are included in requirements workshops.
  7. Requirements documentation is barely sufficient and the team collaborates to clarify details as features are ready for development.
  8. Test cases are written up-front with the requirements/user story.
  9. There is a product backlog/feature list prioritised by business value.
  10. The product backlog has estimates created by the team.
  11. The team knows what their velocity is.
  12. Velocity is used to gauge how many user stories should be included in each sprint/iteration.
  13. Sprints/iterations are timeboxed to four weeks or less.
  14. Sprint budget is calculated to determine how many product backlog items/features can be included in the sprint/iteration.
  15. The sprint/iteration ends on the agreed end date.
  16. All tasks on the sprint backlog are broken down to a size that is less than one day.
  17. Requirements are expressed as user stories and written on a card.
  18. The team estimates using points which indicate the relative size of each feature on the product backlog/feature list.
  19. The team generates burndown charts to track progress daily.
  20. Software is tested and working at the end of each sprint/iteration.
  21. The team is not disrupted during the sprint/iteration.
  22. Changes are integrated throughout the sprint/iteration.
  23. Automated unit testing is implemented where appropriate.
  24. There is an automated build and regression test.
  25. Stretch tasks are identified for inclusion in the sprint/iteration if it goes better than expected.
  26. The Product Owner is actively involved throughout each sprint.
  27. All code changes are reversible and it is possible to make a release at any time.
  28. Testing is integrated throughout the lifecycle and starts on delivery of the first feature.
  29. Impediments that hold up progress are raised, recorded on the whiteboard and resolved in a timely fashion.
  30. When someone says ‘done’, they mean DONE! (ie shippable).
  31. The team uses the whiteboard to provide clear visibility of progress and issues on a daily basis.
  32. The sprint/iteration goal(s) is clearly visible on the board.
  33. All user stories and tasks are displayed on the whiteboard for the duration of the sprint/iteration.
  34. Daily scrums happen at the same time every day – even if the scrum master isn’t present.
  35. The daily scrum is resticted to answering the standard 3 scrum questions and lasts no more than 15 minutes.
  36. There is a product demonstration/sprint review meeting at the end of each sprint/iteration.
  37. All team members, including testers and Product Owner, are included in the sprint/iteration review.
  38. The sprint/iteration review is attended by executive stakeholders.
  39. There is a sprint retrospective at the end of each sprint/iteration.
  40. Key metrics are reviewed and captured during each sprint retrospective.
  41. All team members, including testers, are included in the sprint retrospective meeting.
  42. Actions from the sprint retrospective have a positive impact on the next sprint/iteration.
Our approach to these statements is this:
* Ask every team member of an agile team (including the product owner, tester, manager, everyone) to review the statements honestly.
* Ask them only to mark a score with a 1 if - and only if - they believe they are consistent and it could be audited. In other words, if I was to turn up at any time and ask for evidence, are you confident you could provide it. Otherwise score 0.
* Add up the 1’s for each team member. Then average the score for the team.
To what extent a team is really effective at all these points is another matter, of course.

But if a team has really got agile principles and practices consistently nailed, and according to every team member…

They score 42 of course! :-)

“As a role, I want something so that some value“. The template is burned into your brain. “I always use that template!” I hear you proudly say. “See? Here’s an example: As a user, I want a glass of lemonade so that I drink something.” Ok, stop right there. I know that the world of software development changes rapidly, and there’s just so much to keep track of. But maybe it’s time to revisit some of those foundational practices you take for granted. No, of course you are doing it right. We just want to make sure the new guy over there understands. In today’s timely reminder, let’s revisit on how we write user stories.

Like most agile practices, it’s not good enough to just do the practice -you have to do the practice in the spirit in which it is intended. That way, you can evolve it to better help you achieve the goals it is meant to help you reach.

So what’s the goal of the user story template? Well, a lot of smart folks have written about this. That’s why this is a timely reminder and not a timely revelation. But to me, it’s about capturing system behaviors that have business value. To get there, it asks 3 questions:

  1. Who?
  2. Does what?
  3. And why?

Let’s re-visit the user story for our killer Lemonade Stand app:

As a user I want a glass of lemonade so that I drink something.

Who?

A “user”, that’s who. I consider “As a user” to be a story smell. Every so often, it’s actually appropriate, but most of the time, it’s not. The next time you catch yourself writing, “As a user”, stop and think about who this user really is. In our case, maybe this user is a charitable neighbor. Or maybe she’s a lemonade connoisseur. Or maybe she’s a gardener who’s been out in the hot sun for hours and is overheated and incredibly thirsty.

Why does it matter? Well, I find that frequently, when I start identifying who the users really are, I gain insight into workflows these stories are a part of, and I figure out how to optimize their experience using my software. So with the charitable neighbor, I may not have to worry about the quality of my lemonade as much as with the lemonade connoisseur. And if my user is the overheated gardener then maybe I need to start thinking about glass sizes. Then again, maybe identifying the user doesn’t change the story. In that case, I still think it’s valuable because now I’ve at least asked that question and had that conversation instead of avoiding it.

Does what?

Wants a glass of lemonade. This is the part that most people get right -sort of. The problem is that we love features, don’t we? But it’s not really the features we care about, it’s the behaviors -we just think it’s the features. In everyday life, the features we want often have the action implied. When I say that I want a new piano, you can safely assume that I mean that I want to buy a new piano. Sometimes it’s obvious in software and sometimes it isn’t. When in doubt, make the action explicit.

In our example, “As a charitable neighbor, I want a glass of lemonade…” might be ok. But I would still add the action because it could be either “to buy” or “to drink”. Both could be right, but may lead to different conversations and outcomes.

In particular, watch out for the product manager forcing a feature she wants into a story and tagging it with “As a user”. Because all users must be clamoring for this magical, out-of context feature, right?

And why?

So that I drink something. Because I like to randomly drink things, don’t you? This is where we state the case for the value this user gets out of performing this action. I can’t tell you how many times I’ve been certain I needed a feature in a hobby project, went through the act of writing the story anyway…

…and ended up throwing the story out because when I got to the “so that”, I realized it had no real value. I’ve seen this happen on professional projects, too. Another common occurrence is when, in clarifying the value, we realize that the behavior we want needs to be adjusted.

For example, depending on how we clarify this lemonade story, we might be led to drastically different places:

As a charitable neighbor, I want to buy something so that I support the neighborhood kids

As a lemonade connoisseur, I want to drink a glass of lemonade so that I can determine how it ranks against other glasses of lemonade I’ve had

As an overheated, thirsty gardener, I want to drink something cold and refreshing so that I am no longer overheated nor thirsty

Lemonade could be the answer for each of these, or we could be steered in other directions. This is an admittedly contrived and dramatic example -usually, the business model has been investigated enough that you don’t have these sorts of questions about it rising from your user stories. But it happens a lot for lower level stories, and when it does happen for a high-level story, the payoff is huge!

So the next time you write a user story, double check it to make sure that you’ve correctly identified who?, does what?, and why?, and that they all support each other. You won’t always need this level of detail, but when you do, you’ll surface important conversations, gain greater insight into what your software is, work towards a better experience for your users, and make it easier for your team to implement the right functionality.

May 19th, 2009Scrum in the real world

Nice video on using scrum in the real world.  Thanks guys

http://www.vimeo.com/4587652

Agile programming prescribes automated acceptance testing so that tests can be run
often, while facilitating regression testing at a low cost. Nice tool to automate user acceptance testing.

http://www.vimeo.com/2456352

Some aspects of Agile create tremendous value

The people who are successful with Agile realize that it’s not just a set of techniques; Agile is about creating better products, and making the process less painful along the way.

  • Agile is about shared responsibility. “Someone is going to design your product, it can happen accidentally, or on purpose.” Instead of an indirect cascade of responsibility, Agile makes developers partners with other people in the organization. Instead of delivering software that meets specifications, developers engage with the rest of the organization in a more collaborative way to create products.
  • Agile is about effective communication. By changing the language of product definition from “features” to “user stories” Agile helps people focus on the value the product delivers to real people, rather than the technology used to deliver that value. By bringing people together to play the planning game, Agile makes it possible for developers to ask product managers “what do you mean by that?” and for product managers to ask “this seems easy, why will this take so long?”
  • Agile helps you fail quickly. A focus on working code helps Agile projects stay honest. Instead of working for months on something that may or may not work, there’s a focus on providing smaller parts that are available for feedback and refinement.
  • Agile is a more humane way to work. Iterative development helps development teams work at a sustainable pace, and stops the death march. Agile development recognizes the fact that human resources are finite, and you don’t get something for nothing. By considering the implications of a user story, developers and product managers can have a well-informed conversation about trade-offs.

Some aspects of Agile cause frustration

Agile’s roots are in the product development world, not the product creation world. A successful product is more than well-executed technology delivered on time. Most Agile techniques (e.g. peer programming, integrated testing, refactoring) are focused on effective development. Many Agile projects are staffed entirely with people who write code. At a company where everyone isn’t a coder, it can be challenging to fully integrate the contributions of business stakeholders, such as executives and product managers and other team members such as business analysts and interaction designers.

  • The Agile process does not provide tools to define key business or user experience objectives. A clear product mandate makes it easier for everyone on the project to share the same vision and contribute to a shared objective. Somewhere in the process, it’s necessary to define “What does this product do?” “Who is the customer and what does she value?“ and even “What should the experience of using this product feel like?” Many people assume that these things are determined before the Agile development effort starts, or can be figured out iteratively as development continues.
  • An Agile “customer” may not be the same as the “user.” An Agile customer is often the business stakeholder who paid for the project, not necessarily the “user” of the system. When an Agile team does have a chance to show work-in-progress to actual end-users, their feedback can be difficult to interpret or prioritize.
  • You can lose sight of the big picture. Developers need user stories to be small so they can be tested and built in a single iteration. Even when a team starts with some idea of the overall experience they want to create, once it’s broken into granular user stories, it can be difficult to identify useful interaction patterns and maintain a coherent product framework. Using Agile techniques, it’s possible to come up with solutions for every user story, and still fall short on making a product that’s a pleasure to use.
  • It’s hard to integrate visual interface design. Visual interface designers who produce static pixel-level screen mockups can find it hard to integrate their process with an Agile development team. When responding to the needs of the evolving product it can feel like they are always playing “catch up” and trying to rework visual and interaction design decisions that were made by developers as they built the product. Developers can feel that designs of this nature are “brittle” and that visual designers are not responsive to their needs.

Interaction design can help

These challenges seem to suggest areas where interaction design techniques can help. Interaction designers can partner with product managers and developers to evolve Agile from a development process to a product creation process. Although some people have the impression that interaction design is solely a “waterfall” method, in reality a highly iterative, sketch-based approach to interaction design can be quite nimble.

  • Interaction designers can partner with product managers and other business stakeholders to understand and balance business and user goals. Interaction designers can clarify and articulate the product mandate through stories and sketches that create conversation and consensus.
  • Interaction designers are experts in observing and understanding user behaviors and making this information available to the development team in the form of personas, mental models and scenarios. Depending on the timeline and project scope, this work can be done in a very compressed timeline, or successively as new insight is needed.
  • By thinking about the design problem at a higher level than user stories, (I’ve heard some Agile teams call this a “big story” or a “narrative”) interaction designers can help developers understand the underlying interface patterns and framework of the design and assist with the sequencing of user stories as they are implemented.
  • Interaction designers can facilitate design brainstorm sessions where everyone on the team can contribute ideas and jointly understand the implications of design decisions. Interaction designers can also take these varied inputs and create coherent design solutions that people can understand and use.
  • By working through interaction problems in low-fidelity sketches, interaction designers can quickly iterate on different design solutions, which helps developers save time and make good decisions.

Actually time sheets are bullshit:
* they demotivate developers
* 10-15% loss of productivity is the minimum
* developers have to fake the time to fill them out properly
* erroneous data is used for reporting and management makes bad decisions
* customers are deceived
* they have nothing to do with quality code production
* they focus the whole organization on phony data instead of production

Nevertheless, this is not enough for many managers to give up time sheets. Just like the waterfall process, there is a psychological dependency so strong, it is as if they are on drugs.

However, the situation is even worse. Most management has completely wrong information in their head and thus continually make bad decisions.

* there is no correlation between developer time and software production
* there is no correlation between time spent and quality of code
* there is no relationship between “quality people” and code production

The only correlation between developer time and quality production code is the quality story points measured as a deliverable for a specific team.

Research over many years provides some of the best data on this topic
* for a single project worst/best coding times are 1/10
* across many projects worst/best coding times are 1/25
* the ratios above are the same for the worst and best Yale students
* the quality of the code produced is completely independent of time spent

For some reason, many development managers makes decisions without any data at all on this issue and their assumptions are completely out of reality.

Trust me, you need to dump those lame time sheets and get focused on real software production before an Agile competitor puts you out of business!

May 14th, 2009Agile/Scrum & UI Design

I’ve been looking around trying to find some good advice on how to integrate user interface design into an agile/Scrum process, but I haven’t found a lot helpful, practical material.

From what I’ve seen, there are two primary options:

1. Design as-needed during a sprint.  This is definitely the more ‘agile’ approach, but it can create issues.  Either your going to have to come up with a way to do some very rapid design work (back-of-the-napkin / whiteboard kind of stuff) or you may find your developers waiting for a few days at the beginning of a sprint while your designer comes up with stuff.  This puts the designer under unfair pressure, and may result in your developers twiddling their thumbs.

2. Design one sprint ahead.  In this scenario, your designer will work on design concepts for the next sprint during the current sprint.  This is less agile, but gives your designer some breathing room.  This is helpful if you have designers who are uncomfortable with a very rapid design process.

My preference is option one, but we have found that that introduces too many constraints on the process.  Given that our project priorities aren’t changing rapidly, we can manage this level of pre-sprint work.

Designers fall into the same category as business and quality assurance analysts — no less important than the developers, but they do play a ’supporting’ role, and these roles aren’t expressely prescibed by Scrum.

Usually when you read articles about Scrum you find out how it helps team to focus, to develop code faster, and with less bugs. You ship production quality product every few weeks, actually, after each sprint. Well, what you need is only product owner, product backlog, scrum master, scrum team, and other Scrum artifacts. When you find out and understand all benefits of Scrum you are starting with it immediately. But usually then you face with the first problem. Customer agrees to go with Scrum but is unable to take care of product backlog, cannot provide real product owner and actually has no Scrum orientation. And I have a feeling that this situation repeats again and again.
From my point of view, reason for this is that customers very often do not want to educate them self about Scrum, follow strict corporate rules and number of articles describe benefits of Scrum only for software development teams, not for customers too.

If we take a look at mainly standard procedure within corporates, implementing project looks like this:

  • they setup board for project
  • board specifies requirements and creates budget
  • they find responsible person that make details from requirements
  • requirements are estimated and if they do not fit within budget, often project is not started
  • if requirements fit into budget, project is started and board expects software product in some time frame
  • after given time they receive product specified at the beginning. This product satisfies all requirements from specification, but the most often product is not what they expected, lot of functionality will never be used and after all, when they see product they can see that some requirements could be implemented much different (but they were implemented by specification)

Let us see how Scrum can help customers to avoid such situations. How would the same project run with the Scrum:

  • board for project is setup
  • board specifies project vision and setups initial budget
  • responsible person, let call her product owner, specifies the most important features of project and development can start
  • after very short time, 2-4 weeks, product owner is able to see first draft of application. She can review approach, notice some more important feature than planned sprint ago, change course of project if necessary.
  • after a few months, the first simple version can be already deployed
  • after this time, if board still things that project has future, additional budget can be assigned to the project. If they think that project has no future project can be canceled and not too much money is wasted
  • project can go this way as long as really useful features exists. What is the most important, project can be canceled at any moment but valuable product will still exist. Project is finished when board or product owner decides so.

Let us try compare these approaches. Let call first approach traditional approach (waterfall :)) and the second one Scrum approach.

Budget and specification
With traditional approach you have to estimate budget of the whole project. To be able to estimate budget you need to specify most of the requirements with enough details. This means, even before project is started you must know how final product will look like because without that budget estimation is not possible. Well this is tedious, error prone work that usually does not give expected results. As you have to estimate all the future features, probability of big discrepancies is big.

With Scrum approach you can assign some initial budget to the project. This can be budget that is enough for few sprints, so it means no more than a few weeks or months. Project vision is enough, because what you really need to estimate is only the most important features of application. Don’t tell me that all features of future application have the same importance :). As you have less feature to estimate, probability of big discrepancies is smaller.

I think that conclusion which approach is better is clear. At least, I would select Scrum approach.

Project development
So you have started your project with the traditional approach. In front of you is few months (or a years) of development, your team is struggling with requirements, ambiguous definitions, unclear descriptions, lack of support. No changes in specification are possible because it can influence budget, you have to stragle with hard change request process, you don’t have time for it. Actually who cares if you new request is actually excellent idea, you should remember it during proposal phase. If you are lucky your project will be delivered on time and within budget. If you are lucky final product will be somehow similar to one you expected. Generally speaking, those projects are more or less always failures.

So you have started your project with the Scrum approach. In front of view is one sprint that will last from 2-4 weeks. After sprint you can review shippable product developed with production quality. You process with further sprint. After a few sprints your most important features are implemented and if you want you can even start using it. Your budget is almost spent so you need another meeting with a board. You present project to the board and they almost immediately after project kick off can see what a product will look like. If they like it they approve budget for next few sprints. But then you got excellent idea. It is real breakthrough within product. Well, this is Scrum :), no problem. Include it into next sprint and you will have it soon implemented. Thats all about complicated change request. All the time you are implementing the most important features of product. After some time your product is finished and you have product exactly by your expectation because you was able to review it and correct directions after each 2-4 weeks.

Well, which approach would you select?

Conclusion
I tried to have a look at the Scrum from business point of view. It is clear that Scrum is valuable for developers. But what is the most important in these days is business.

Business wants to minimize risk and maximize profit with minimum investment. That was the reason why waterfall model was introduced within first place. But as it turns out, Scrum can minimize risk and investment but at the same time maximize profit.

We at Boulevart have been using the Agile Software Development with Scrum methodology since 3 years. Unfortunately not all our customers take the agile road, so we still have a mixture, although the agile approach is gaining.

After observing some good results, I went to a training workshop to receive my own ScrumMaster Certification, like all our project managers . I’ve brought an Agile Project Management Scrum Methodology to the Professional Services team - an attempt to deliver multiple projects with shifting deadlines and changing priorities. While not completely geared for client-side development work, Scrum has brought transparency of our developer’s day-to-day activities to the senior management team. These are the guys that always seem to think that projects are “easy,” “will be done very soon,” and that our overall work troubles aren’t a “big deal.”

We are pleased with the early returns that Scrum has provided. As soon as the team broke out each project into discrete chunks of work (aka “stories”), the rest of the company started to see just how much work we had to do. Now, if they want to horse-trade and shuffle priorities, they at least know, in excruciating detail, the trade-offs they are making with respect to all other client deliverables.

Turns out that development is a lot of fun after all . . . .

It is often said that agile projects are risk and business value driven - This means that if we take in a bunch of work with low risk - based on the priority by the business - we can focus on keeping and dealing with  the high risk issues in our product backlog. Eventually as the product is being developed more and more of the high risk issues will be scaled down to low risk issues. And why is that? Well, in the beginning of all projects there are alot of uncertainties attached to the individual project. The project team have good and clear goal for the next couple of sprints but after that it gets more and more diffuse.

So if we take a look at the economic risk of an agile project and a traditionel waterfall project, we can see 3 major factors that speaks for themselfs:

- In both types of projects there is a high level of economic risk involved at the beginning of the project.

- In the agile projects you have control as you go - through close contact, communikation and feedback with the customer - you adjust as you go along thereby reducing risk in the project every day.

- In traditionel projects were you deliver the product at the end of the project lifecycle you will not have the same kind of control of the risk, since the customer isnt as close to the product during development.

economic_risk_in_projects

And if we again look at the cost of changes it shouldn’t be much of a chock to everyone that the costs are very different when comparing the two projecttypes:

- In an agile project changes can be introduce in every sprint - since the customer is close to the project nothing should come as a surprise to them or the project team. So agile projects are all about fast and value creating changes.

- In the traditional project you will soon learn that any changes after the project start will eventually be more and more expensive as time on the project lifecycle passes by.

cost_of_change_in_projects1


© 2007 scrum.boulevart.be | iKon Wordpress Theme by TextNData | Powered by Wordpress | rakCha web directory