59. Self-Organization " Simple, clear purpose and principles give rise to complex and intelligent behavior. Complex rules and regulations give rise to simple and stupid behavior.” Dee Hock, Founder and Former CEO of Visa International
Talk a bit about traditional Project Management and its fundamental mission Understand its limitations and make a case that agile methodologies can help fill in some gaps. Make a case that agile does not replace what you know about project management but gives you a new set of tools to manage uncertainty Help you understand the principles behind agile project management and talk about how they fit in with the PMI framework Explore how we can use terminology that the business understands to introduce agile principles I am not here to be an agile purists, and agilista. I am here to take a pragmatic look at the agile movement, how we can draw some practical tools that help us in our current projects, and how to get us on the road to delivering more reliable project performance.
Do the whole agile elevator speech thing. Main point is to lay the foundation for agile discussion. Provide a point of context to make the link between agile dev practices, project management, and leadership. Not one specific methodology, but a family. We can pick and choose between components. 1/8/2008
Provide a common baseline for what is the core activity of project management. This is a setup to show that agile addresses these things too.
Transition slide. Want to explicitly state we are talking now about traditional project management. Again, we are laying a framework to contrast agile methodologies and highlight the problems it solves.
Talk to the triple constraints, focus on the dynamic relationship between the three project variables. Don’t hit yet on the whole locking the three yet, that will come later.
Now we are going to hit each of the three in detail. First we start with scope. This is the starting point for a traditionally managed projects. I can take about how the business decides they want something and they have some idea of when they want it and how much they want to spend.
We begin the process of figuring out what how much capital expenditure, contractor dollars, and employee effort it will take to deliver the project.
Typical Waterfall 1/8/2008
The answer is that we are almost always asked to do it in less time and for less money. This involves doing one of three things: De-scope the project or deliver in phases Fast track it by doing work in parallel
1/8/2008
Phasing gets product to market faster Reduces 1/8/2008
1/8/2008
Main point is that we now have a schedule and we want to lock the triple constraints. Reinforce that we are putting a lot of faith in our planning. Early in software projects we know the least about what we want to build. Highly uncertain projects we know it is going to change.
The answer is that we are almost always asked to do it in less time and for less money. This involves doing one of three things: De-scope the project or deliver in phases Fast track it by doing work in parallel
Now we need to indentify those things that lead to change. What are the things that could negatively impact or delivery date? Our project budget? Our project scope? Talk about risk ranking, prioritization, and mitigation strategy.
Traditional project management starts with scope as the primary constraint Sure… if the project scope proves to be too big for the organization to deliver, we may descope. But we have done analysis and some design to determine it was too big. This is wasted effort build into the process What this negotiation really tells us, is that in many software projects, scope wasn’t the primary constraint after all. Time and cost were the primary project drivers. What agile is going to do is elevate time and cost as the primary constraints and get real about what we are able to build
The planning model assumes we have a good ability to predict what it is we are going to build It assumes we have stable teams It assumes that any other projects we are working on are on scheduel Sure we talk about risk management, and all these things are risks What is our mitigation strategy?
The answer is that we are almost always asked to do it in less time and for less money. This involves doing one of three things: De-scope the project or deliver in phases Fast track it by doing work in parallel
1/8/2008
Remember, we talked about agile being a project management methodology and a leadership frame work… So… from a project management perspective… let’s look at agile planning
This next step is an evolution of our project planning model but does not solve any more of our fundamental scheduling problems. It does allow us more focus on delivery and learn from the process of delivering working software. The thinking goes, if shorter phases are better, and overlapping phases make work go faster, then let's put this approach on steroids. This approach is where I came to know iterative and incremental development. Early in my time as a software project manager, I understood iterative and incremental delivery as a series of shorter, overlapping waterfall projects. As a project manager on these projects, one of my main jobs was to manage that overlap and make sure that people understood what we were working on and when they needed to be available. Even with this level of sophistication in our project planning, even with the resource utilization and timeline gains we have realized, our projects are still going to suffer when requirements change and schedules do not go according to plan. We have solved some of our resource and prioritization issues, but in the process have created a web of interdependencies that only serve to decrease our ability to effectively deal with change. In some ways, our project schedules become even more brittle than they were before. 1/8/2008
Iterative and incremental development is not supposed to be a series of overlapping waterfalls. The purpose of iterations is to have all skillsets on deck working toward a common iteration objective. Each iteration has a goal and a set of functionality that it is supposed to deliver. By having everyone focused on the same set of deliverables, we are able to deal with changes within the iteration itself... no one has moved onto other work... no one has to backtrack. Dependencies are contained and cascading impacts can be kept to a minimum. The iterative timeboxes are fixed and do not overlap. The team develops the set of functionality planned for that iteration and reviews the outcome of the iteration as a team. There is opportunity to learn from our progress and take any corrective actions before the next iteration begins. If change is introduced into the project, it gets planned for in the next iteration, and the impact of that change cascades down the project. Most teams that are adopting agile find themselves at this level of project maturity. They have introduced iterative and incremental development but have not embraced some of the other organizational changes that are necessary to make it work. At this point, we still have not solved the problem of people being pulled away from our projects. We are at risk of being impacted by competing priorities... we are not able to function as a cohesive team. Also... there is nothing particularly agile about this approach. We might still be doing a big up front design, traditional change management, and predictive project control. We can acknowledge it is a step in the right direction, but it is not agile. 1/8/2008
Moving from iterative and incremental, to something that begins to look agile, you need to shorten even further your delivery cycles and create cross functional teams that are allocated to your projects 100%. By shortening delivery cycles, the project manager can focus less on how product gets delivered and more on what is getting delivered and how fast. The team becomes accountable for meeting delivery objectives, and has more ability to decide what gets done and when. The team can make decision on how to best use their time to meet the goals of the iteration. The project manager gets real empirical data about how the project is progressing in the form of working software. By keeping people 100% allocated to our projects, project managers need to focus less on activity sequencing, this can be delegated to the team. Giving this responsibility to the team allows them to be more creative solving problems. They stop being accountable for doing tasks, they become accountable for delivering value and meeting objectives. Project managers become more focused on tracking the flow of value, removing obstacles that could get in the way, and communicating and collaborating with the rest of the organization. At this level of maturity, project managers are often still thinking with a predictive mindset. They are still trying to predict the flow of value and schedule all the iterations in advance, but have moved to a value focused planning model rather than an activity based planning model. 1/8/2008
The agile project schedule is really just the sequence of project releases and iterations. It is the basic cadence of delivery the team has decided to organize around to deliver product. Features are kept in a sequenced backlog and scheduled iteration by iteration based on what we have learned about the evolving product. Project managers measure the flow of feature delivery, iteration by iteration, to communicate to the organization how the team is making progress. If a change needs to be introduced to the project, it can be added to the backlog just like any other feature. The team collaborates with the business to frequently reprioritize. Because we focus on delivering working software on incredibly short cycles, the business gets to decide exactly when it wants to take product to market. 1/8/2008
1/8/2008
1/8/2008
1/8/2008
1/8/2008
1/8/2008
Minimize dependencies so sequencing is not as much of an issue Prioritization rules Resource estimating using more abstract techniques like story points Activity duration estimating. All features are less than two weeks Schedule based on time to market, not task duration Schedule control through fixed timeboxes with clearly defined deliverables. 1/8/2008
Cost is generally fixed, based on the size of the team. If you have hard costs, fixed capital budgets, that is fine. No constraint from Agile. Costs are inherently controlled through fixed team size and timeboxing 1/8/2008
Time and Cost are fixed. Scope is going to vary. Get’s negotiated every sprint. Need to commit to release objectives at a higher level. ROI with less than 100% is necessary Give the team room to negotiate within the defined boundaries. Commit at the right level of Abstraction. DSDM and MoSCoW 80%, 20%, 20% Contract Implications, pull Cockburn’s work 1/8/2008
Risk management is inherent in the process Make reference to test first, continuous integration, and automation Show risk curves in Waterfall vs. Agile Deliver highest risk and highest value first. Discuss traditional risk lists. Deal with real risks on the project. 1/8/2008
Quality gets built in by the nature of the process Backlog items are 100% complete and tested at the end of the sprint Approved by the customer Test first and automated testing necessary Continuous builds Definition of done sufficient to ensure quality 1/8/2008
Keep it light Let the tools automatically generate the data, naturally out of the processes of managing the work Information radiators, PM knows what’s going on all the time Status reports, sure. Better… the team room, stuff on the walls Focus less on managing stakeholders through static communication, build relationships, get people what they need. Light touch. 1/8/2008
No conflict with Charter, Scope Statement, Project Management Plan, and Closing the Project Replace Direct and Manage Project Execution with facilitate and guide, measure, hold people accountable Replace Monitor and Control with Monitor and Adapt as necessary Replace Integrated Change control with collaboration If you are changing things not related to software development, integrated change management might be appropriate. Things that come to mind are capital expenditures, consulting dollars, etc. Feel free to have a process in place based on the requirements of your organization and your initial project approvals. Agile is going to call for little to no change management, up to the product owner. 1/8/2008
Not generally addressed by agile. Problems arise when having to buy hardware. Lead time etc. Agile assumes software architecture and physical architecture On real projects this is not always the case Encourage tighter collaboration with infrastructure guys Part of the team, building out the physical, prototyping, load testing Build scalable infrastructures. Low initial investment. Proof of concept on lab equipment, loaner boxes. If all else fails, design up front but you are accepting risk. 1/8/2008
Efficiency of Agile, light documentation, fast delivery cycles hinges on the quality of the team. Yes, the individuals, but the team too, Quality individuals are an integral part of an agile team Pay attention to team selection ID project roles: self organizing generalists Responsibilites: more fluid Reporting relationships: Scrums, scrum of scrums, self-organizing Staffing management plan: sure, why not. Focused on procedures for taking people on or off the team Retrospectives as a way to enhance team member interactions Less focus on tracking individual performance, more on overall team performance 1/8/2008