Tag Archives: scrum

Devoxx 08: Scrum in practice

Yesterday we gave an overview of Xtreme Prgramming. Today we’ll dive into the SCRUM Agile methodology.

Scrum roles

Scrum defines three different roles: the Product Owner, the Team and the Scrum master.

Product owner

The product owner, who’s responsible for the project, has the following tasks:

  • he defines the product vision and features
  • he plans releases (release dates & contents of a release)
  • he prioritizes the needed features in a release according to business/market value
  • he’s able to change features and priority of the tasks before the start of every iteration (not during the iteration)
  • at the end of a release he accepts or rejects the work results
  • he’s responsible for the return on investment of the product.

Team

The team is responsible for the success of every iteration done in a release. Ideally the team consists out of 5 to 9 members. Different profiles are needed: developers, testers, QA guys, infrastructure guys, …

What does the team needs todo?

  • they need to select the iteration goal and specify work results
  • they have the right to do everything within the boundaries of the project guidelines to reach the iteration goal
  • they organize themselves and their work
  • they demo the work results to the product owner and stakeholders

Scrum master

The scrum master makes sure that the SCRUM process is followed and understood.
Besides that he also:

  • helps the dev team to improve its productivity by facilitating creativety and empowerment
  • helps the team improve engineering practices & tools so each increment of functionality is potentially shippable
  • helps the customer directly drive the functionality developped
  • enables close cooperation between all roles

Scrum process

The full scope of the project is put into a Product Backlog; the list of features to be implemented. This product backlog is input for the Sprint planning meeting.

The sprint backlog defines the scope of one iteration and is derived from the product backlog. It’s defined during the Sprint planning meeting. In this meeting the product owner presents to the team a prioritized product backlog. The team gives estimates of the stories selected for this sprint.

Stories are compared to each other and relative points are given based on the complexity of the stories. (higher points => more complexity). The Product owner and Team negotiate the Sprint goal and the team commits to develop a set of features. Based on these stories the team plans out smaller subtasks.

During the sprint the scope is fixed. It’s the task of the scrum master to protect the team from scope changes. (only the team itself is allowed to change the scope of the sprint!)

Generally a sprint takes 2 to 4 weeks. During the sprint, there is a daily scrum meeting; a short standup meeting where every team member will talk about what he’s busy until next meeting, what he did yesterday and any problems he encountered.

The sprint produces an increment of potentially shippable functionality containing analysis, design, coding, testing and docs.

During the Sprint a burndown chart is created: it displays the amount of work done & work remaining across time. (start with max. number of story points at day 1; then substract story points when a story is fully finished during the sprint time). This allows you to see the progress rate and estimated completion date. One can also see if the team is faster/slower then the “steady pace”. (purple line)

Burn down chart
Burn down chart

When the Sprint is finished; there is a sprint review meeting (a demo to the stakeholders) and a sprint retrospective meeting (a lessons learned meeting)

During the Sprint review meeting the team gives a demo to the product owner with the output of the iteration. Ideally this should be done in a pre-prod or production environment.

Present only what is “really” done (clean, refactored, unit-tsted, built, acceptance-tested); otherwise you’ll give a false impression that more is done then what’s reality.

A Sprint retrospective is a kind of Lessons learned meeting: continous improvement by collecting what went well & what went wrong during the Sprint.

You can also revise the development process to make it more effective & enjoable for the next sprint. (eg. processes, practices, communication, environment, artefacts, tools,…)

A release consists of one or more sprints. The contents of a release are based on the continuously updated product backlog. It’s the product owners responsibality to fill in the release, taking into account the actual team velocity. (eg. this team can do 25 points per sprint).

Release planning can be done Time driven (if your release should be ready on a fixed deadline) or feature driven. (select the highest priority items first).

Scrum from theory to practice

You may have difficulty going from theory to practice due to any of the following reasons:

  • transitioning to an agile culture
  • finding a product owner
  • lack of communication between people
  • cross organizational boundaries

Scrum doesn’t pretend to solve those issues in your organization, but will make them visible a lot earlier in the project.

An ideal product owner should be able to:

  • coordinate the various user requirements
  • articulate the vision of the project
  • make scope decisions
  • be a project sponsor: negotiates & manages the budget
  • define priorities and releases
  • allocate time for collaboration with the team

For cross department communication, try to get domain/technical experts assigned on the project full-time (can also be part-time if full time is not possible).

Devoxx 08: Xtreme Programming

This university session given by Yves Hanoulle and Jef Cumps was covering two main topics: an introduction to Xtreme Programming and an overview of the very popular SCRUM agile methodology. In this post we delve deeper into Xtreme Programming. A detailed Scrum post will come soon.

Xtreme Programming

Three loops were described where an XP team loops through endlessly: the organisational loop, the team loop and the code loop. Below we give a short introduction of the 3 loops.

Organisational loop

The outer loop is the release loop, which interacts with the outer world, and which will let a predefined amount of requirements come in and working quality software pop out of the team regularly.

The organisational loop consists of 2 main values: close collaboration with the customer and small releases.

An XP project generally has an onsite customer who’s able to take business decisions. The technical decisions are taken by the developers.

Small releases are iterations of 2-to-4 weeks of coding work which consist of a number of finished user stories. Stories describe the requirements (high level – as the cards are not big enough to tell it all. But they enable communication with the business.) Besides that the stories are also ordered by the team in function of complexity, while the onsite customer will assign a business value. Together they’ll form the priority of taks to execute.

The fast releases allow for fast feedback cycles, allowing the customer to change direction faster if needed.

Team loop

The middle loop is the team loop, which handles day to day team activities.

The idea is that the developers work in a sustainable pace and as a team.

A daily standup meeting is organized. Because it’s standing the meeting doesn’t last too long (should be max 15 minutes). Here the team talks about 3 things:

  • what you’ve done the previous day
  • what do you commit to do today (it is a small line between what you’ll do and what you’ll commit to finish today, but it is a very important one)
  • tell others: “I need help with …”

It’s very important todo it every day, for it to work well.

Code loop

The inner loop is the coding loop, where two programmers, sitting side by side, produce a unit of tested code.

Pair programming, programming with two together, in the long term costs less then not doing it. Switching keyboards every 10-15minutes work best. (should not be longer then 30 minutes). One of the positive effects of pair programming is that you get instant code review and generally the code will look a lot different (read better) then if the two would have implemented the task alone.

Unit tests, are a safety net as you’ll know what is working / what’s not working. It’ll also make refactorings easier, less dangerous because of the safety net. They assure the quality of your code.

Test driven design, means writing your unit tests first. It’l make you think about the problem and how you’re going to implement the solution. As a result the design of your code will be better.
Continuous integration, is also very important for an XP project. Fast and automatic integration means that you’re project doesn’t stay stuck at 90% finished and just some integration work to finish (which you have no idea how long it’ll take). Automating everything can be a huge investment, but generally pays off in the longer term.

Collective code ownership, means anybody can change anyone’s code as long as the rules are followed. Those rules are defined by the team itself and could eg. be “tests not failing”, “no findbugs errors”, … Sometimes collective code ownership is hard but this generally indicates an underlying problem of Trust.
Acceptance tests, are defined by the proxy customer. It defines when are we done? => When all acceptance tests pass. The customer should write it just-in-time. (eg. for the next iteration when the developers are currently working on the current iteration).

That ends our little overview of Xtreme Programming. Retrospectives and Velocity we’ll leave for our coming Scrum article!

You can find the slides from this Xtreme Programming talk at Yves Hanoulle’s blog

Devoxx 2008: my session picks for University day 1

I’ll be again present on Europe’s largest Java conference Javapolis Devoxx.

Here is a list of what sessions I’ll be following.

If you want to meet me let me know via my Twitter.

Scrum in Practice

The agile Scrum process will be explained: its roles, its artefacts and the challenges in implementing it in an organization.

Servlet 3.0 & JSF 2.0

I’m especially interested in the new features in JSF2.0 and the modularization support for web applications in Servlets 3.0

JFreeChart

Having used JFreeChart v0.9.x a few years ago, I’m looking forward to seeing the enhancements/new features in the current version.

Agile Testing of Java Rich Clients

Traditionally a difficult area to automate tests for, I’m wondering how Fit, FEST and TestNG will fare.

Bringing Designers and Developers Together with JavaFX and Project Nile

As a Flex developer, I’m wondering how JavaFX and Flex compare to each other.