Conference Day 2
Wednesday, November 04, 2009
Keynote: Mary Poppendieck
9:00 a.m. – 10:00 a.m. Mary PoppendieckLean principles have been around for quite a while now, long enough for companies to try them out and see how well they work. So what does success look like? It turns out that successful lean development organizations have five traits in common: 1. Development teams are directly engaged in delivering superior customer outcomes. 2. Technical excellence is the foundation of consistent performance. 3. Relentless improvement permeates the atmosphere. 4. People are proud of their work. 5. Fast feedback rules. This talk will explore the impact of applying lean principles to software development, and give examples of what happens when teams become lean.
Agile Adoption Anti-Patterns
10:30 a.m. – 12:00 p.m. James LewisThis session focuses on the things that you shouldn't do when trying to introduce Agile practices to an organisation. Maybe you drank the Agile cool-aid and are struggling to introduce agile on your own or you are an Agile Coach trying to make some sense of the madness that is your current client. There are many more ways for agile adoption to fail than for it to succeed. Drawing on his experience introducing Agile principles and practices in large blue-chip organisations, the speaker will showcase a number of anti-patterns, technological to methodological that could put your agile rollout at risk. This talk is an exploration of some of the things that can go wrong when introducing agile to organisations presented as a series of anti-patterns and smells.
Lean/Agile Project Portfolio Management
10:30 a.m. – 12:00 p.m. Johanna RothmanAbout lean/agile project portfolio management (from Johanna's upcoming book): * Transparent decisions: managing the project portfolio * What's going on? Creating a project portfolio * Collaboration approaches for management decisions
The Last Mile
10:30 a.m. – 12:00 p.m. Joe Poon, Troy GouldOften the most painful, time-consuming and expensive part of building software is the integration and release process. This session explains how to implement the practices of continuous integration and release management and apply automation to create a rapid, repeatable and reliable build, deploy, test and release process. We'll start with an overview of the problems faced by software teams trying to get software released, and some of the anti-patterns behind these problems. We'll then walk through the practice of continuous integration, paying special emphasis to the supporting practices you need to make it really work and some tips and tricks. Then we'll move beyond "dev complete" and explore the problem of the last mile - getting software released. Build, test and deployment automation will be discussed in some detail in the context of a maturity model for release management. We'll introduce build pipelining as an overall structure to manage the build-deploy-test-release process, and go into detail on more advanced topics like branching, configuration management, database management, zero downtime deployments, and rollback planning. Finally we will cover implementing organizational change to enable continuous integration and release management.
Coaching in an Environment Where Trust Has Been Broken
1:00 p.m. – 2:00 p.m. Brent Barton, Monica YapTrust is a foundation for successfully implementing Agile. Without trust, there is no way to observe the feedback necessary to inspect and adapt, no way to have a useful retrospective, and transparency is the enemy of the many. Yet, the lack of trust often lurks quietly. Beware the wrath of broken trust! It can ignite a ferocious storm! In this difficult economy, the likelihood of finding environments with broken trust will be higher. In this session, we will share some techniques and tools to help restore trust to the organizations that need it most. This workshop is aimed at identify the early symptoms and investigate the tools and techniques available, then provide the attendees with insights on how to deal with these effectively through stories, discussion and some exercises. The room is set up as a fish bowl or as a set of tables, depending on size. The anticipatory set is a true story of an unexpected environment of broken trust that acted like a land mine even though it had nothing to do with Agile. Part I: Illustrate the symptoms of distrust, so we can resolve it before it becomes too late. Trust is "defined" (there are at least 20 dictionary definitions!) and some examples seed discussions and exercises. Information from discussions and group exercises is captured in formats for easily summarizing problem identification. Part II: Present the tools and techniques to help the ‘distrust’ challenge. Shared and captured with the group. A few situations are staged with audience participants to practice the new techniques of identification, decision to act, and application.
Strategic Design: Avoiding Traps Responsible People Tend to Walk Into
1:00 p.m. – 2:00 p.m. Eric EvansAs software development leaders, we need to think more strategically. Some design decisions affect the trajectory of the whole project or even the organization. These decisions arise in early chartering and throughout development, and they are about much more than architecture. This talk will examine these issues through the lens of the Strategic Design principles of domain-driven design, which systematize a few critical practices some successful teams do intuitively. It is common for skilled teams to deliver software they are not proud of, due to compromises with legacy designs. Others toil for years, producing a platform that is never used to good advantage. These are strategic failures. On the other hand, there are projects with a direct explanation of how the software contributes to business goals. There are projects where designers work with a realistic view of the context of their development within the larger system, allowing them to maintain design clarity and integrity. These are strategic successes. Winning strategy starts with the domain. Two domain-driven design principles, "Context Mapping" and "Distilling the Core Domain", help you see your strategic situation more clearly and approach strategic design decisions more systematically. These techniques require extensive interaction with domain experts as well as the leaders of the organization, in discussions broader than functional requirements. They sometimes lead to priorities quite different from our most comfortable notions.
How Being Agile Changed Our Human Resources Policies
2:00 p.m. – 3:00 p.m. James GoebelWhen we adopted agile we were not looking to reinvent our human resource policies, but our organization changed in fundamental ways that we did not predict. Peers routinely provide feedback to each other on performance. Team members schedule their own reviews. Everyone on the team has an opportunity to work with clients. Vacation schedules are submitted without regard to project delivery dates. We have programmers who job share, and mothers bring their infants to work. Come hear how adopting agile helped us become a three time winner of the Alfred P Sloan Award for Workforce Flexibility.
Just-in-Time Requirements Elaboration through Appropriate Product Backlog Grooming
2:00 p.m. – 3:00 p.m. Brent BartonAt a Product Owner class where we allow students to write their own stories for potential inclusion into the course, wrote: "As a Product Owner I would like to understand how to expand a story card into the materials developers need for a Sprint so my team can do this work more effectively." The course participants prioritized this story very high. This need is consistent with experience. Grooming is a many step cyclic function: discussion, acceptance criteria, def’n of done, estimating, re-prioritizing. This workshop session is a hands-on session that includes some information along with practice so the participants understand this difficult concept. I consider this successful when participants feel they can do (or help others do) a better job setting Agile teams up for success.
Performance Tuning: An Agile Approach
2:00 p.m. – 3:00 p.m. Mike StockdalePerformance tuning is often a critical issue in the development of enterprise applications. But are agile methods appropriate for this task? Traditionally, up-front analysis and design have tried to understand and meet performance requirements. The poor results from this approach have led many to leave performance issues until all functional requirements have been implemented. But then too often we are left in a last minute panic with limited options. This presentation describes how agile techniques have been successfully applied to meeting performance requirements. The principle of rapid feedback encourages us to put working software in customers’ hands early and often, to discover the real performance issues. We measure relentlessly to identify bottlenecks and choose among alternate strategies, always favouring hard evidence over performance folklore. We use refactoring techniques and clean code principles to encapsulate performance-sensitive algorithms and keep the code base supple. Automated regression tests help us measure and track key performance areas as the system evolves. System performance need not force us to abandon good development practices and search desperately for a performance super-hero to save the day at the last minute. By applying the same principles we’ve learned as agile developers, we can turn performance tuning from a nightmare into a competitive advantage.
Error-Proofing and Error Handling as First Class Considerations in Design
3:30 p.m. – 5:00 p.m. Michael FeathersWe all know that quality is important, and we know that there are concrete things that we can do to increase quality, but do we go far enough? Do we give errors the attention that they deserve? A survey of design literature shows that this is not the case. Error handling is often considered an peripheral concern, and in many real world systems it is an afterthought. People seldom arrive at the insight that if you design differently, you can make some errors impossible, and if you maintain awareness of potential faults early in the process of design, you are in a better position to make trade-offs among the many ways of handling errors and faults. In this talk, Michael will describe a conceptual framework for understanding styles of error proofing and error handling, and their appropriateness in various domains.
Practical Tips on Pair Testing
3:30 p.m. – 5:00 p.m. Simona HeraPair testing is not a new concept: rather an idea brought forward by many software quality assurance specialists since 2001. Pair testing is described as two specialists working together on a software testing task. The combination of specialists that has been emphasized so far is about a developer + a tester. This presentation sets the focus on the pairing of the product owner + a tester. In some companies, the product owner may be replaced by the business analyst or by an in-house customer representative. The important thing is that the pair is testing facing the business aspect of the product. From this presentation you will go back to your team and manager with practical tips and checklists on: * the benefits of why to perform pair testing * when pair testing is effective * how to efficiently execute pair testing Find out how can a once-a-week pair testing task save the company time and money down the road by: * setting up clear expectations * removing misunderstandings due to the lack of communication * avoiding un-necessary features implementations * improving the bugs prioritization
Working with GIT for Agility in the Enterprise
3:30 p.m. – 5:00 p.m. Adam DymitrukGIT has arrived on the scene from the Open Source community and it's power and adoption are a force to be reckoned with. Used for the full spectrum of projects from start-ups to enterprise systems, a detailed examination of the trend-setting tool is needed. Working with GIT for Agility in the Enterprise will explain the following concerns: - Reliability: How safe is your repository from corruption. - Simplicity: Why is the simplicity important when tracking complex solutions. - Performance: How to quantify the gains in efficiency that state-of-the-art tooling brings. - Power: What are the killer features that reduce friction in software development and version control. - A Disconnected Model: How to effectively leverage a system that does not require a constant connection. - Collaboration: Managing the complexities of multiple lines of effort from the development team through "branch per feature" and other strategies. - Integration: How does such a solution integrate with other Agile processes and tools such as Continuous Integration. This session will provide crucial information to allow a well informed decision about the versioning strategy and tooling in your organization.
5:00 p.m. – 6:30 p.m.