|
Tutorials are a great way for attendees of introductory or intermediate experience levels to learn from the experts. We ventured into topics of interest with a well-known guide to navigate the trail. Offerings included: techniques for software design, requirements, programming, prototyping, testing, UI design, team handling and project steering. In addition, tutorials on specific agile methods and important tools to implement them such as configuration management, distance communication and project coordination were featured.
Scheduled Tutorial Sessions
Tutorial Abstracts
| Wednesday, June 23 |
| TU1 |
Interaction Design Meets Agility
Jeff Patton, Tomax Corporation |
|
Focal to most agile development approaches is the notion that development work done is described in terms of its understandable value to the users of the software. Yet there's little written in documented agile methods on exactly how to discover and understand these "users". Our once well understood systems architecture has taken a backseat to these often poorly understood "users" and the features they need to generate business value. Interaction Design methodologies such as Constantine & Lockwood's Usage-Centered Design offer valuable approaches for finding, classifying, and prioritzing the people who have goals your software can help fulfill.
This tutorial will acquaint participants with U-CD and its place in an agile development approach. As a participant, you'll be working hands-on in a collaborative design team to produce a user role model using 3x5 cards, poster paper, discussion, and creativity. You'll learn how the role model helps build context around software features that help determine priority and make trade-off decisions throughout a development project. You'll use this understanding, and more 3x5 cards, to develop an iterative release plan that takes into account newly understood user roles. In addition, you'll learn collaborative card-sorting and modeling techniques you can apply to other tasks throughout your project.
|
| TU2 |
Scrum and Agile Process 101
Ken Schwaber, Agile Alliance |
|
We can read about agile processes in books and articles. This tutorial provides an overview of agile processes and describes them by difficulty of implementation - the skeleton, the sashimi, and the heart. How Scrum fleshes out each of these aspects of agile processes is then described. Since it is easy to think one knows what agile processes are like without understanding what they really feel like, two case studies are used. The class is divided into small teams that have to plan a facility for trading excess Major League Baseball tickets, and then to respond to a major project change just 30 days prior to implementation. In both exercises, the teams will have the opportunity to work directly with the customer, Mr. Bud Selig, the commissioner of MLB. Having experienced the feel of agile and Scrum, advanced topics such as how to scale the Scrum process, how to use Scrum with Extreme Programming, and the relationship between Scrum and CMM are covered. |
| TU3 |
Top-Down TDD using Mock Objects and Inversion of Control
Manish Shah, ThoughtWorks & Damian Guy, ThoughtWorks |
|
This tutorial will provide a hands-on introduction to key techniques that have emerged from the practice of Test-Driven Design (TDD). Using Mock Objects in conjunction with Inversion of Control (IOC) pattern, we will show how to use TDD to construct well-designed, object-oriented software.
Dynamic Mock objects provide a technique for driving out the responsibilities of an object and its interactions with its collaborators through unit tests. A unit test for a class isolates the object it is testing and replaces its collaborators with mock implementations.
IOC is an OO design pattern addressing the issue of resolving component dependencies. When this technique is applied, an object’s dependencies are supplied to it (in this case, through its constructor), rather than it locating or instantiating dependencies itself.
Using these techniques in conjunction with a top-down design approach yields a cleanly-designed system, consisting of small, testable, loosely-coupled objects with clearly defined responsibilities.
Please note that to get the most out of the hands-on exercise in this session you should bring a laptop. If not you may be able to pair program with someone who does. The session will cater for Java and .NET platforms. For Java you will need to install JUnit, jmock (http://www.jmock.org) and picocontainer (http://www.picocontainer.org). For those who prefer .NET you will need NMock and NUnit.
|
| TU4 |
The Agile/XP Team Primer: Exploring Self-Organizing Teams
Diana Larsen,Industrial Logic |
|
What does it mean when the gurus say Agile/XP development teams are self-organizing? If a team is truly self-organizing, can we layoff all the managers? How do the roles of team members and managers change when teams are Agile? What can teams and leaders of teams expect when working with Agile/XP teams on the way to self-organization?
We all have worked on development teams where the behavior of other team members was incomprehensible, the path to effective Agile/XP self-organized teams seemed blocked or vague, or any one of a number of other problems made us feel as though being a part of the team was not worthwhile. Sometimes we conclude the best answer might be to disband the team and start over. In this session managers, team leaders, coaches and team members learn how to track a team’s progress toward self-organization, to recognize the signs that their team might be stuck and to choose strategies to move the Agile/XP team from the impasse into higher productivity, satisfaction and success.
This tutorial is hands-on and based on real world stories. Join in an exploration of the path to successful team dynamics and leadership.
|
| Thursday, June 24 |
| TU5 |
Effective User Stories for Agile Software Development
Mike Cohn, Fast401k |
|
The technique of capturing requirements as user stories is one of the most broadly applicable techniques introduced by Extreme Programming. User stories can be used effectively on any agile project or by any group looking to become more agile. In this tutorial you will learn how to identify and write user stories, how they differ from other approaches, how to estimate them, how to use them for release and iteration planning, and their role in the ongoing management of the project. Special emphasis will be placed on looking at specific attributes and examples of good user stories. Specific recommendations based on the presenter’s experience and research into using stories in XP and Scrum will be given. |
| TU6 |
Large-Scale Agile Software Development
Ron Crocker, Motorola |
|
All of this XP and Agile Methods hype is wonderful, but how can people who work on large-scale projects (where large-scale means projects are those with more than 100 people and are longer than 1 year duration) take advantage of the benefits in quality, efficiency, and time promised by the hype?
That question is answered in this tutorial. We will discuss a proven approach enabling agile collaboration among teams on large projects. This tutorial covers:
- Why large projects ARE indeed different
- Why existing agile methods (XP, Scrum, ...) are insufficient to deal with large projects
- A set of agile practices enabling agile multi-team collaboration
- My experiences using the practices
At the end of the session, you will leave the room either shaking your head saying "I wish I could do that" or with definite plans to try these practices when you get back to work.
The ideal attendee is a practitioner, a software or process engineer in development leadership role or with influence on such a person. You should be familiar with developing large systems and the attendant difficulties.
|
| TU7 |
Exploratory Testing for Agile Projects
Elisabeth Hendrickson, Quality Tree Software, Inc & Brian Marick,Testing Foundations |
|
Agile projects are driven by conversation. They crave an on-site customer to guide programmers. Increasingly, they augment conversation with predefined tests. The tests give people something to point at while talking, they serve as a measure of progress, and they help clarify intent.
But agile projects also thrive on feedback. Ideally, new releases could be pushed to users every iteration. The users would be available to make comments like "I don't like this", or "When I type that, something bizarre happens", or "Oh! my life would be so much better if only you added such and so."
But too often, such feedback is slow or missing. In this hands-on tutorial, we will demonstrate a way to partly fill the gap. We propose that the whole team end an iteration with a bout of communal exploratory testing. In it, the team gets together in a large room, forms into pairs, exercises the product manually - using a variety of inspiration-generating techniques - and thereby gets candidate ideas for the product backlog. Some of those ideas will be bugs to be fixed; others will be features to be added.
|
| TU8 |
Implementing Lean Software Development
Mary Poppendieck & Tom Poppendieck, Poppendieck LLC |
|
The measure of the maturity of an organization is the speed with which it can reliably and repeatedly execute its key processes. Software development maturity is measured by the speed with which customer needs are reliably and repeatedly translated into deployed code. Make no mistake about it, rapid delivery of customer value requires a high degree of discipline and collaboration. Reliable, repeatable speed is difficult to achieve, but organizations which attain it have created a sustainable competitive advantage.
This tutorial covers methods for improving the Lean Maturity of a software development organization. First we investigate the most fundamental principle of Lean Thinking: Eliminate Waste, and discuss tools for Learning to See Waste. Next we examine how organizations might tailor the Lean Maturity Measure to fit their circumstances. Then we delve into the details of three Lean Assessment Tools: Value Stream Map, Decision Diagram, Discipline Audit, and Collaboration Review. Finally we explore a modification of the classic Kaizen Event, generating a blueprint for an effective software development improvement process.
|
| TU9 |
Domain-Driven Design
Eric Evans, Domain Language |
|
Large information systems need a domain model. Development teams know this, yet they often end up with little more than data schemas. This tutorial delves into how a team, developers and domain experts together, can engage in progressively deeper exploration of their problem domain while making that understanding tangible as a practical software design.
This model is not just a diagram or an analysis artifact. It provides the very foundation of the design, the driving force of analysis, even the basis of the language spoken on the project.
The tutorial will focus on three topics:
- The conscious use of language on the project to refine and communicate models and strengthen the connection with the implementation.
- A subtly different style of refactoring aimed at deepening model insight, in addition to making technical improvements to the code.
- A brief look at strategic design, which is crucial to larger projects. These are the decisions where design and politics often intersect.
The tutorial will include group reading and discussion of selected patterns from the book "Domain-Driven Design," Addison-Wesley 2003, and reenactments of domain modeling scenarios.
|
| Friday, June 25 |
| TU10 |
Skills for the Agile Designer
Rebecca Wirfs-Brock, Wirfs-Brock Associates |
|
Don’t be complacent with just refactoring your code towards an adequate solution. Agile designers need to be skilled problem solvers and communicators (and no, that doesn’t mean just writing clean code or producing barely enough UML). Increase your agility by adopting new techniques for seeing and articulating problems, shaping solutions, and explaining your designs. This tutorial will present strategies for finding and characterizing objects and their behavior, designing application control centers, adapting patterns, characterizing the essence of a problem, and telling good design stories. Key techniques will be reinforced with brief exercises.
Recognizing and adapting to different design rhythms is an often overlooked key to agility. When things don’t exactly go according to plan, agile designers react, readjust their thinking, and try again. Even so, unanticipated problems crop upwicked problems that can’t be solved by sheer effort alone. They require a blend of skills: creative problem solving, negotiation, the ability to craft-try-rethink-and-propose solutions that combine simpler ideas or possibly take a leap in a totally new direction. This tutorial concludes with practical advice on how to sort design problems into the core, the revealing, and the rest, so you can give each kind of problem the attention it deserves.
|
| TU11 |
Inside Feature Driven Development
Jeff De Luca, Nebulon Pty. Ltd |
|
Feature Driven Development (FDD) is a proven-in-practice process for producing software applications. Only five processes of one to two pages each - and they tell you what to do. This tutorial teaches you the thinking and practices behind FDD and the five FDD processes in detail - explaining the how and the why for each of them.
You will learn how to apply the most relevant practices from Feature Driven Development and how to avoid common mistakes. You will learn what a client-valued feature is and how to express a project as a categorized list of client-valued features. You will learn how the first three FDD processes form a project startup phase that reduces risk, and learn about predictive metrics from the startup phase to help you size and cost the subsequent construction phase. You will learn about feature milestones and how they are used for amazingly accurate tracking and reporting that is meaningful to clients and keeps your project team better focused.
You will learn how FDD scales to very large projects, plus where the accountability for estimating really lies, and throughout the tutorial you will learn key lessons from over 20 years experience in the industry.
|
| TU12 |
Collaboration Works! Facilitation Skills for Agile Teams
Ellen Gottesdiener, EBG Consulting, Inc |
|
Collaboration happens when all members of a group or team share a common purpose, mutual trust and use agreed-upon approaches for their work. A well-tuned team operates like a jazz ensemblemultiple voices playing inventively, generously and skillfully while sharing a single theme. This doesn’t just happen. Teams don’t just form and jell automatically. How, then, can you encourage real collaboration?
Facilitation skills are crucial for agile teams, which must experience healthy team dynamics in order to continually learn and adapt. In mature teams, effective facilitation skills can emerge spontaneously and become shared amongst team member. How is this accomplished? What specific techniques can you use to promote collaboration?
This experience-based tutorial will share a set of effective facilitation skills and collaboration patterns that will help you and your team to truly collaborate better. You will be provided with a rich set of handouts containing specific techniques you can use to promote real team collaboration. In this tutorial, be prepared to enjoy recognizing, celebrating and appreciating collaborationbecause collaboration works!
|
| TU13 |
Project Simulation Game
Ron Jeffries, XProgramming.com Inc. & Chet Hendrickson, Independent Consultant |
|
This tutorial uses a card-based and computer screen-based simulation game to explore the events that happen on a software development project, and to examine the effects of various Extreme Programming and Agile Software Development practices.
Participants break into small groups, and plan and execute a simulated software development project using cards and gaming tokens. The tutorial instructors act as Game Masters. Some game events are controlled randomly, by the throw of dice, and some events are injected intentionally by the instructors or by the tutorial participants. As events occur, participantsmay adjust the practices that they use, to examine the effect of those practices on the project outcomes.
This game picks up where the instructors' popular "Small Card Planning Game" leaves off, addressing the day to day, week to week, and month to month impact of agile practices on project outcomes.
|
| TU18 |
Test-Driven Development with Visual Studio 2005 Team System
Jim Newkirk |
|
Overview coming soon. |
| Saturday, June 26 |
| TU14 |
Speed Boats & Jacuzzis: What Do Your Customers Really Want?
Luke Hohmann, Hohmann Consulting |
|
The first step to creating truly successful products is understanding what customers really want. This can be harder than it sounds. Believe it or not, customers are people. Which means they’re just like you and somewhat like me. Which means that they don’t always know what they want. Because they don’t know, they can’t tell you. So, asking them to rank requirements or write stories isn’t very effective at helping you understand what they really want.
What works for me and my customers, and, I suspect, will work for you and your customers is talking, listening, and working with them to uncover what they really want. This hands on, “learning by doing” tutorial describes 12 proven techniques for working with customers, and in the process understanding what your customers really want. They’re fun, and they work.
|
| TU15 |
The Crystal Methods, or How to Make a Methodology Fit
Alistair Cockburn, Humans and Technology |
|
Just as projects vary in size, criticality and priorities, and so should your methodology. The strengths and weaknesses of the organization, the specific people, even the office layout affects how the team best works, and should influence the methodology. Crystal is a family of highly tolerant, lightweight methodologies built from core principles, techniques for tuning them to your specific situation, and specific examples to copy from. Inside the rule set for a Crystal methodology may be any topic or convention the team agrees to, including level of document detail and formality, reviews used, office seating and even quasi-unofficial parties. The Crystal methodology family aspires to be the most tolerant, habitable and yet effective methodology for any particular project team.
This tutorial describes the principles and techniques for shaping a methodology to the project-team combination, introduces the colors in the Crystal family, compares different examples of the Crystal family to each other relative to the principles, and shows the differences between Crystal Clear and XP. Expect to learn the methodology tuning principles, and experience how easy and fruitful a methodology-tuning session can be.
|
| TU16 |
Advanced Fit Lab
Rick Mugridge, Rimu Software/University of Auckland |
|
Fit is a powerful framework for automated testing. Tables are used to write tests and for reporting the results of automatically running those tests. Fit is very general purpose and open-ended, easy to extend for expressing different sorts of test tables. Fit tables are for communicating what is needed from a system as well as for automatically checking that the system performs as expected.
This tutorial covers more advanced use of Fit, including sequences of tables, testing workflow, new fixtures, table design and smells, managing test suites, hard tests and testing legacy systems. It assumes some experience with using Fit and the three standard types of Fit tables.
Participants are asked to bring a laptop pre-loaded with Fit and/or Fitnesse code suitable for use with their language of choice. These can be downloaded from http://fit.c2.com and http://www.fitness.org.
|
| TU17 |
Agile Project Management--Reliable Innovation
Jim Highsmith, Cutter Consortium |
|
Symyx boasts that their process enables scientists to discover new materials at 100 times the speed and 1% of the cost of traditional research. Drug companies rapidly generate millions of compounds and then test them using ultra-speedy mass spectrometers. Alias Sketchbook Pro a graphics software package was completely planned and developed in two-week iterations.
From materials to drugs to software, companies are relentlessly driving the cost of change out of their product development processes in order to foster innovation. These projects are the realm of Agile Project Management (APM) which operates under a philosophy of Envision and Explore rather than Plan and Do.
APM focuses on quick starts, iterative exploration, delivering customer value, low-cost change, frequent feedback, and intense collaboration. APM excels on projects in which: new, risky technologies are incorporated; requirements are volatile and evolve; time-to-market is critical; and high quality must be maintained.
APM includes core agile principles, a project management framework, and specific practices. The framework phases are: Envision determining the product vision and project scope; Speculate developing a feature-based release, milestone, and iteration plan; Explore delivering tested features; Adapt reviewing the delivered results and adapting; Close concluding the project. Sign up for this tutorial and explore the ideas and practices of APM.
|
Tutorial Selection Committee
- Rachel Davies, Independent consultant (Chair)
- Jennita Andrea, ClearStream Consulting
- Tracy Bialik, Pentad
- Mike Cohn, Fast401k
- Andrew Craddock, Radtac
- Lisa Crispin, Agile Tester
- Peter McBreen, Software Craftsmanship
- Jim Newkirk, Microsoft
- William Wake, Independent consultant
|