Why is hardware being forgotten by development companies?

This week I met someone while on a personal trip who is in the software business.  His company writes software for a very specialized vertical and from everything he said to me, they are an innovative company and do all the right things including empowering their teams to self-organize, regular training for the staff and generally a great working atmosphere.

The company has still been struggling with getting their product to be “deeper” (his word) for their client base.

I was again reminded of a post of mine from a while ago encouraging or providing cross-training or at least some knowledge to bridge the barriers between the software group and the hardware group (link at the bottom of this post).  In my environment, I’ve been fortunate to have a network admin sitting with our team.  It has prevented many potential problems.

Having been involved in the infrastructure part of IT as well as development, I knew of at least a few products almost immediately that could make his product more compelling to his customers.

To my surprise, I found out his company was only looking at software improvements to their application.  He told me how they are continually developing new features but are not considering running on any new platforms.

I mentioned a few technology (hardware) improvements he could consider and I know that by the time he gets home this weekend, he will have taken a look and passed the information on to his team.  These improvements could immediately add significant customer retention and usability to his product.

From our discussion, it was also evident that his team would enjoy the challenge of some new platforms to keep encouraged about the future. I’m sure that by the time he reads this, he’ll have some of these technologies in hand :->

As Agile practitioners, it seems, we are so focused on improving our software development cycle, our specific development tasks, our daily or hourly builds, our programming skills, and how we create story points, sometimes we seem to lose track of the big picture… What is the customer going to use it on?  This should be fundamental to every developer’s thought processes.

Think to yourself,  ”HEY, should we be seeing if our software could run on some of the new technologies out there such as Microsoft Surface, some of the new Wireless Devices, or even benefit somehow from new 3D technologies coming out”?

I like to think that developers who are empowered with information about hardware can think of all kinds of ways to use it.

If you’re on an Agile Team or managing one, ask to learn something about the hardware in your environments.  Consider some “slack” in your Sprint or some work breaks in your Cycle to allow team members to learn something about new Infrastructure or Hardware products.

Think for a moment if your company is writing software for the Web, the power of a deep understanding of how a load balancer actually works, or my personal favorite, the .NET Cache.

Let it be the teams’ choice of which products though. That will give the best motivation and most likely will be the most enjoyment for everyone.

It will broaden your horizons and perhaps give your team ideas you never knew could even be possible.

If we always just wait for a Marketing Person or Product Owner to come up with interesting ideas, where’s the fun in that?

References :

My previous post – Infrastructure Knowledge for Developers
3D example – Sony 360Degree viewer prototype
Microsoft Surface – Microsoft Surface Web Site
Slack – A good article about slack in XP by James Shore
Sprint – Scrum Alliance
Cycle – Open Agile

Agile Jobs in Beautiful Saskatoon!

From time to time I am happy to list positions that are available in organizations that are becoming agile or already are agile. For what it’s worth, this position was described verbally to me as being much like a Scrum Product Owner. Here is the position information:

Project Manager at zu
Closing date: Monday, May 30, 2011

Our new Agile PM will manage full life cycle website/application development projects using the Agile methodology, work closely with our strategists, designers and development team and other stakeholders to manage requirements, scope, milestones, timelines and budget.

As an Agile Project Manager at zu, you enjoy working with other talented people and succeed when we deliver a project worthy of being called “zu-made” to a client. You live to under promise and over deliver.

You have a passion for Agile Software Development. You are eager to work with and share your experiences with a team transitioning to Agile. The thought of finding new ways to adapt Agile to an existing team excites you.

As a team leader, you inject enthusiasm into the combined zu-client team, adding transparency and candidness to communication in all directions. Using your natural ability to develop rapport with all types of people, you liaise regularly with the client and team, keeping progress on track and delivering on expectations.

You are excited by the idea of creating things that have never existed before, that learning and teaching are everyday occurrences, you don’t mind dressing funny from time to time, or bringing a dish to the potluck.

If you have the required experience, pride yourself on being extremely well organized, have a magnetic personality, sense of humor and are eager to be a part of an evolving company, then what are you waiting for? Drop us a line!

Background

Post secondary education in business or technical field
Minimum three years related work experience
Knowledge and experience with Agile software development, processes and methodology
Ability to work effectively on concurrent, multiple tasks and projects
Ability to effectively manage priorities in an ever-changing environment
Outstanding leadership and teamwork skills
Clear and concise documentation skills; you can write mean user story
Strong verbal and written communication skills

Responsibilities

Document, learn and support all aspects of projects: scope, risk, schedule, budget, quality and communication
Manage client expectations and co-ordinate and deliver progress updates to ensure the successful delivery of projects on time and on budget
Manage all project related requests with the client
Ability to guide and direct production teams to keep them on budget and schedule while continually inspiring them to innovate and provide the best solutions for our clients
Work with development teams on a daily basis to clarify requirements and to provide feedback
Facilitate developing user stories based on requirements
Prioritize and prepare product backlog and facilitate estimation meetings for strategists, designers and developers
Communicate project status with stakeholders and gather feedback for review and implementation

For more information about zu, head to our website: www.zu.com/live/careers.

Paul @ Scrum Gathering Seattle – Day 1 Recap

I have now just returned from Day 1 of the Scrum Gathering in Seattle. This is my first Scrum Gathering and it is turning out to be great!

Participants at the Scrum Gathering in Seattle

Participants at the Scrum Gathering in Seattle

This is what I did throughout the day and some take-aways and learnings that I have gathered:

The Business Case for Agile: What Every Executive Needs to Know with speaker John Rudd
- there are now fewer constraints, with more variables in our world
- example of horse races, move bets to the horses in front
- use examples of failures in your organization to encourage the change
- benefits and ROI model
- waterfall: 15%
- agile: 30%
- agile with reduced scope: 50%
- People that I met in the session:
- Bill Rosner from Capital Group who is on a Scrum team in California
- James Kauffman who is the ScrumMaster near Seattle

Do We Have a Good Coach or a Bad Coach? with speaker Alan Atlas
- all about learning: good or bad
- results for a coach: direct (eg. launching a Scrum team), indirect (eg. less bugs produced)
- the SKERT framework: Skills, Knowledge, Environment, Results, Type of coach
- get feedback on coach throughout the year

the SKERT framework by Alan Atlas

the SKERT framework by Alan Atlas

30 Minute Chat with Alan Atlas
The Scrum Alliance set up this great thing: Scrum To Go. A participant can sign up for a private session with an experience Scrum coach, I believe that all of them were Certified Scrum Coaches (CSC). So I signed up to speak with Alan Atlas. He was very kind and knowledgeable. I asked him about becoming a Certified Scrum Trainer (CST) and many questions about helping teams to use Agile and Scrum. He offered three things to help when team members are not buying-in or becoming empowered on the Scrum team. (1) Team members to convince themselves of its usefulness and validity. (2) Peer pressure from other team members to become active participants. (3) Cheap coaching tricks such as putting those against Scrum in charge (you are now the ScrumMaster) or getting those team members to research something and share it with the team. He said that we don’t like to do bad work, so they will try to get the task done.

Scrum To Go: coaching sessions

Scrum To Go: coaching sessions

Met Other Great People
Talked with Roger Brown (a CST) about the Certified Scrum Coach (CSC) process and how it has evolved. I also asked him about co-training with him for me to become a Certified Scrum Trainer (CST). I also met Vernon Stinebaker (a CST) who lives in China and was trained by Mishkin Berteig, my colleague, many years back. I had the honour of meeting Lyssa Adkins (a CST) in person for the first time. I spoke with Lyssa, emailed back and forth, and I was part of her Agile Coaching Circle which took place over conference calls and emails. She is a wonderful person who is extremely motivated to work with coaches who, in her words, are the change catalysts in organizations. She introduced me to Carlton Nettleton (a CST) who I spoke with about co-training with him to become a Certified Scrum Trainer (CST).

Overall it was a great day. I look forward to learning more and meeting more great people. My take away for the day: Scrum people just like helping!

Warm regards,
Paul Heidema

Paul @ Scrum Gathering Seattle – Airport 2

Now I am in Vancouver only one step away from Seattle, which is the location for the Scrum Gathering. I will go tonight to the hotel and register. I am excited to see the layout and look into the sessions.

I just read that the 3rd day of this 3 day conference has many sessions called “un-conference” open sessions. I like that this is a creative way to hold sessions which are normally setup with a speaker and a bunch of learners.

I hope that we will experience what we train. An environment where individuals interact to learn things, instead of a bunch people that have cups needed to filled up by an expert.

More to come!

Warm regards,
Paul Heidema

Paul @ Scrum Gathering Seattle – airport

I, Paul Heidema, am currently waiting at the Toronto airport for my flight to Vancouver and then to Seattle where I will be attending the Scrum Gathering. This will be my first Scrum Gathering, so I am excited, curious and a little nervous. What will it be like? Will I enjoy myself? What talks should I attend? Will I feel lonely? What is expected of me? These are just a few questions that I have rolling around in my mind.

Usually when I attend a conference, Agile or not I am with others that are familiar with the movement of the event. Not this time. However, my wife Laila is coming for the trip which makes it that much more enjoyable even though she is not attending the conference.

I hope to meet many trainers, consultants, people new to Scrum and all kinds of unique and wonderful people.

I am also in the process of applying to become a Certified Scrum Trainer (CST). I hope to meet other CSTs and learn from there experience.

I will post more throughout the event.

Warm regards,
Paul Heidema

All you need is a bit of patience. Just be consistent in your message.

As many who have tried know, an Agile Transformation in a company is not always an easy process.  Although most people at first are keen to participate in the idea of “changing” the company culture and working environment to “something better”, many do not realize how much work it can actually be.

For some of you, you will be fortunate enough to be in an “Agile” environment already.

Perhaps you are using OpenAgile, or Scrum. You may be using a unique variation such as the Pomodoro technique.

For those of you that are new to the idea of Agile Processes, no matter what your flavor of framework or tool, there is something you will not be able to avoid.  Politics.

There is no getting around this.  Agile transformations are about change in an organization and not just change in one small section of the company.

Although many Agile teams start as “pilot projects”, even in such small situations, the effect on the departments or culture at the “edges” of even the smallest teams can start to cause ripple effects in an organization.

The first secret is to acknowledge and accept that this is going to happen.  Life will be easier for you this way. The job of any one assisting with an Agile implementation is to provide honest information and advice to help those who will be directly or indirectly impacted.

Don’t think you will be able to just hide in development and not be noticed.  Be prepared with slides, web site links, and open to talking about your processes and ideas with anyone who wants to know.  You must be transparent and open about what you are trying to accomplish.

OpenAgile for instance is defined as a “Learning System” because it deals with the realities that no one can work in a bubble and that more than just the “development team” needs to be involved in Agile practices for them to work.  The entire organization will be learning with you.

Scrum has a well defined set of guidelines to follow in regards to the development process and is ideal for new software development projects.

Lean is a more gentle approach to changing an organization in small, progressive steps.

Don’t kid yourself.  No matter how small the changes will be, there will be resistance from someone, somewhere, from where you least expected it.

The important thing to remember is what your goals are. The goal of the framework is an open and honest discussion between all those involved in your organization and general culture shift to a blameless, team based shift in thinking.

However, what is the real goal here? Happy customers, happy employees, and therefore, a profitable, progressive organization.  You must remember the purpose is not to make teams, but to make a good product for the customer. Sometimes, you may find it hard to remember.

I recently read The Wisdom of Teams: Creating the High-Performance Organization (Collins Business Essentials) by Jon R. Katzenbach and Douglas K. Smith. It clearly explains, with examples, how an organization with the courage to change their culture can really benefit from an overall culture shift towards Consultatative Decision-Making and team work based approaches.

Consistently, companies who simply “say” they have teams under-perform those that actually “just have teams”.  One type of company has them by edict or decree, and the other just has them because the culture is that way.  The ones with the naturally team based cultures do much better financially. Hmm..interesting.

Change is usually started by some kind of need to change because things aren’t working out “the old way”.

Buggy software, unhappy customers, late releases…Whatever the pain, the results are always a “desire to change”.

Those who have the courage to admit they need to change, should be applauded.  If you are new to Agile and reading this, please pat yourselves on the back for having the courage to learn more.

Now, it should be “easy” to stay on the path if you keep at it.  The act of Starting is the first big step. Congratulations!

One thing you will find as you proceed is a continual list of “it won’t work because of this”, “it won’t work because of that”.  But, hey, you’re not selling snake oil here.  You’re talking about people in an organization taking control of their work and working together for the best solution possible for the company and it’s customers.  Keep it simple.

Agile processes are just that … Processes..  They are not there to replace common sense. Agile is not a silver bullet to cure a company’s culture.  That part of things is still a human thing and will take time.  Please don’t think of Agile as a cure for a bad culture.  It is simply a way to help the culture to change.

To me at least, what is important is a consistent message.  I believe this is the key to helping an organization to be an Agile one.

Let’s take the Daily Scrum (for Scrum teams).   I worked with a company where the Daily Scrum was considered a waste of time and a nuisance for those involved (at first).

The daily scrum is a quick recap of where everyone on the team is.  For more information about the Daily Scrum, just do a quick search.  There is an abundance of information about it.  Try the Scrum Alliance for definitive information.

At this company, the owners and senior managers considered the scrum to be a nuisance. The senior developer of the team found it to be a hassle.  Then, after a few weeks of doing daily scrums, any team member could be asked by someone passing in the hall what was going on and that person could easily tell them what the status of the project was.  There are many other advantages to the scrum, but that’s not what this article is about. Maybe another time.

When I first started at this company, there was a weekly “developer meeting” which at first was the only way to exchange information.  It was generally 2 hours/week.  The team was now doing daily scrums and having small “mini-chats” (for lack of a better word) occasionally when needed.  Team members knew from the Scrums what was going on and who needed help with what and then self-organized to solve their problems and arranged “mini-chats” as needed to help each other out.

The “weekly 2 hour developer meeting” just became a thing of the past.  The team just stopped having them.

Waiting until the end of the week was far too cumbersome for something they could get from a 10 minute scrum and occasional ”mini-chats”.  The team had unknowingly switched into a mode where they practiced regular consultative decision-making and regular re-assessment of their situation.

Then a remarkable thing happened.

One day, I was in a meeting, and the senior developer who at first was reluctant, banged on the window of the board room I was sitting in for me to come to the 10:00 AM Scrum which was 2 minutes away. I excused myself from the meeting and returned approx. 13 minutes later. The owner of the company said “Why do you do those daily meetings.  They are such a waste of time.  You have that big Developer Meeting every Friday”.

My response was “I’m sorry, but we don’t need to waste our time with that big 2 hour meeting every Friday anymore… We haven’t needed them for a few cycles now”.

What a remarkable experience!  In one quick step, and after considerable pain, not only was it evident that the senior developer embraced the Agile Scrum Meeting, but also the owner who was previously unsure suddenly came to realize that the team was far more effective than he knew and he hadn’t even noticed the shift.

The developer culture had changed to a more team based one without his knowing. All team members knew what was happening and Expected to be kept in the loop from now on.

The key is, keep doing it ! Be consistent.  If you’ve implemented a standard Agile practice, stick with it.

Be realistic though. There will be people who consider it to be “stupid” and there will be people who don’t want to participate.  As a new implementor, NEVER humiliate anyone in the process.  Simply encourage open discussion and ask everyone to contribute.  At first, people will be shy or nervous about this.  Over time, it will be the norm to participate.

The point is that as time passes, people and things change. The new processes will become Common Place and not so foreign and people will start to appreciate the fact their opinions are important and they have an impact on the bottom line of the company and the customer.  This is what drives people to be happy and succeed.

Then, with a bit of luck and perseverance, someone in a different department will say “Hey, I think that seems like a good idea. Tell me more”. “Do you think this Agile stuff might work in sales?” might be the kind of question you suddenly receive.  Do yourself a favor and be prepared for this with some links to a few Agile Methodologies at-hand!

This is your opportunity to introduce the new “culture” into a different part of the company.

With a bit of patience, others will come on board.  It will be a great experience for you once you have others helping out.

The day will come when someone will try and remove an Agile process somewhere in the organization and team members will lobby for their cause.  This is the day you will know…  I have succeeded with step 1… Getting started !

From here forward, it’s just a matter of consistently trying to improve things one cycle or iteration at a time, and watching things get better for the customers, employees, and of course, the stakeholders.

If I can give one last bit of advice.  Please do a bit of research before implementing something.  Ideally, you want the teams to come up with how to do their daily work, not yourself.  Let any process be the team’s process, not yours. Of course, if you have a new team to Agile, you will need to help them get started.

Consider your job as one of just guidance and coaching. That will work the best.

Review your environment carefully before deciding about methodology and do some reading or contact a coach about the differences. Should you be using Scrum, OpenAgile, XP, Lean, etc? Think about it carefully.  They have different levels of organizational change and are for different applications.  Use Wisely. :->

If you’re courageous enough and have an experienced Agile team, why not ask the team which Agile Methodology will work best for them?  I personally enjoy learning something new all the time. :->

Mike Caspar, CSM, OpenAgile Certificate Holder, ATPL
http://mike-caspar.blogspot.com

References :

The Agile Planning Onion is Wrong

The concept is simple: there are six levels of planning in an organization, often represented as layers of a metaphorical onion. In the agile planning onion, strategy is the outermost layer. This is meant to indicate that it is the driver of all the planning in the inner layers, which have shorter time horizons, down to the daily planning that occurs in the Daily Scrum or the Daily Standup of the agile teams.

Culture is Missing

The agile planning onion is a reasonable metaphor, but it has a serious limit: culture is missing. Many of you will have heard the quote “Culture eats strategy for lunch [or breakfast]” (attributed to quite a number of different people – I’m not going to sort out who was the original). How do we represent culture on the onion? Is it a seventh layer on the outside? Maybe, but for most organizations, culture is not planned.

Single Loop Learning

The main problem with the planning onion is that it gives no indication that the planning cycles deal with anything but the product / business side of the work. This implication of single-minded focus gives us permission to limit ourselves to improving our products. This is learning, but it is limited. It is sometimes referred to as “single loop learning”. We make improvements, but never question our underlying beliefs, habits or goals. All improvement (and planning) is within the narrow guard rails of a product mentality.

Double Loop Learning

Culture both surrounds the planning onion, and cuts right through it (nice way to extend the metaphor!) The problem with a visual metaphor that does not include culture is it means that culture remains unconscious. As individuals we might, from time-to-time, find that the organization’s culture clashes with our own expectations, habits or beliefs. But other than this occasional dissonance, we are like onions in dirt – completely unaware of the dirt, yet completely utterly dependent upon it for growth (couldn’t use “fish in water” because that would have introduced a different metaphor – I’m trying for consistency).

In the best agile transformations, individuals, teams and organizations become aware of their culture and consciously work to change it. This is usually due to a strong clash between their current culture, and the behaviors, norms and attitudes of a embryonic agile culture. In Scrum, we find impediments and remove them. In OpenAgile we look for learning about product, process and people. This is, again, roughly speaking, double loop learning… it is learning about learning and applying this to our belief systems, our habits and our attitudes.

Transformation vs. Adoption

Those who share the agile planning onion model, probably don’t realize its limits. I would like to strongly encourage those who use this model to consider re-framing it in terms of culture and organizational learning, rather than planning. I’m terrible at diagrams – I hope someone out there will consider creating a new compelling Agile Learning Onion diagram to show that agile is about Transformation, not merely adoption of planning practices.

Five Tips for Distributed Agile Teams

Actually, this is six tips because my first tip is really about deciding to use distributed teams…

Some in-house studies that I have been privy to have shown 2-1 or 3-1 productivity difference between good co-located teams and “good” virtual teams. Creating a true, high-performance virtual team is incredibly hard emotionally, incredibly time-consuming, and costs a lot in terms of tools and travel. If this is being done for convenience of the team members or for cost savings, it’s a bad idea. The only good reason to have distributed teams is if there is a compelling strategic reason that trumps the hit you will take financially and morale-wise. (That was tip “zero”.)

That said, it is worth trying is to create an environment as close as possible to what you would get with a co-located team. To do this, here are some things to try:

1. Set core hours (at least 3 contiguous) every day when everyone on the team, regardless of time zone, will be at work simultaneously. If you have a globally distributed team, this will mean that some team members will have to make an ongoing personal sacrifice to be available. This sacrifice should be compensated financially. Avoid rotating the core hours in the mis-guided idea that it is better that everyone is uncomfortable some of the time vs. some being uncomfortable all of the time. It is much easier for a team member to get used to a consistent schedule and although initially there will be discomfort for some team members, they will (relatively speaking) get used to the new schedule.

2. During core hours, use a good video conferencing tool (e.g. Office Communicator), in an always-on state for all team members – be in the same space at the same time. Cameras should be set up so that it is possible to see an individual’s facial expressions, yet also to allow that person to move around and still be in-view. The video conferencing tool should have good full-duplex audio so that no one ever gets cut off because someone else is louder.

3. During core hours, all team members agree to forego the use of headphones or anything else that would prevent them from instantly being aware of something happening with any of the other team members. Again, for some people this might be quite a sacrifice. The idea is that communication is paramount for agile teams and anything that isolates one team member from another will hinder communication.

4. Have a live update task tracking tool that all team members use. (Most agile team management tools that I am aware of do not work because you have to refresh to see updates. Cardmeeting.com is a decent virtual wall that has live updates.) Any task-switching should be visible on this tool either through a color change, an audible cue, or a movement. So if I complete a task and start on a new one, everyone else should notice this immediately even if I do not actually say anything. The team members should get in the habit of using this tool even outside core hours.

5. Have a second (or third) monitor for every team member that is dedicated to the always-on communication tools (video conferencing, task tracking). These always-on tools should _never_ be covered by anything else. All the real-time communication tools are useless if they are not constantly visible. If your team members currently have two monitors, then get them a third for these tools. There should never be any excuse for a team member to hide these tools.

Basically, these suggestions are designed to maximize the quality, bandwidth and minimize the latency of communication among the team members. If you have a distributed team, and you try these things, please let me know how it works for you!

Assessing an Organization for an Agile Transformation Plan

Myself, Paul Heidema and a few other people we work with have now participated in several assessments of organizations who are either looking at adopting agile methods or improving existing use of agile methods. We have developed several tools for running these assessments. The following things are critical to the assessment process and the results we get:

Culture

The success of an agile transformation is primarily driven by connection that transformation makes with the existing culture of the organization. We know that doing an agile transformation includes cultural changes. The critical piece is understanding the culture so that you can determine what in the culture supports agility and what in the culture is going to hinder agility. A culture that focuses on individual accomplishment and freedom will not support agility well, while a culture that supports doing the best possible thing for customers will support agility. Of course, any given organization will have a mix of cultural aspects that both support and hinder agility. There are a number of methods for examining culture including an excellent corporate culture workshop described in the book “The Corporate Culture Survival Guide” by Edgar Schein.

Value Stream Mapping

A high level value stream map is an excellent tool for identifying both an overall need for improvement by making the current state of affairs visible, as well as pinpointing where big improvements can be made quickly. More often than not, when we do an assessment for an organization, we are finding that the efficiency of their process is at about 20-30%… in other words, 70-80% of all effort is expended on wasteful activities. This level of waste is often surprising for stakeholders. And of course, making that level of waste visible is a large motivator for the kind of continuous improvement that agile methods such as OpenAgile and Scrum make possible.

Agile Practices

Of course, even if an organization is not doing agile officially, there are often existing practices that can be considered part of the overall umbrella of agile. A comprehensive assessment that rates a team’s or an organization’s level of use of agile practices gives a good picture at a very practical level of what things you can build upon. For change to be successful, a significant factor is to tie new practices to existing practices. This is a great way to do this. There are lots of lists available of agile practices. We publish one fairly comprehensive list of agile practices on the Berteig Consulting site (it’s near the bottom of the linked page).

There are of course many other things that are done during an assessment, but these three form an effective foundation for any agile transformation plan.

Toronto and Ottawa Courses have Spots Available

Our agile methods seminar with Certified ScrumMaster, OpenAgile Team Member and Kanban next week in Toronto and our Certified ScrumMaster seminar the following week in Ottawa both have spots available. Just a reminder that these seminars are a great choice if you are thinking about getting training, need PDUs for the PMI, or if your organization is struggling with using agile effectively.

Hope to see you at one of these!

Calculating a Budget for an Agile Project in Six Easy Steps

A former student of mine called the other day.  He asked a good question: how do you calculate the budget for a project if you are using an agile approach to delivery.  Here is the overview of the six steps to do this.  I will follow the overview with some detailed comments.

  1. Prepare and estimate the project requirements using Planning Poker
  2. Determine the team’s Velocity
  3. Using the team’s burn rate and velocity calculate the budget for the Iterations
  4. Add any capital costs
  5. Using the definition of “done” add pre- and post- Iteration budgets
  6. Apply a drag or fudge or risk factor to the overall estimate

Prepare and estimate the project requirements using Planning Poker

The project requirements have to be listed out in some order and then estimated.  If you are using Scrum as your agile approach, you will be creating a Product Backlog.  Extreme Programming and you will be creating user stories.  OpenAgile and you will be creating Value Drivers.  Kanban and you will have a backlog of work in progress.  Regardless of the agile approach you are using, in a project context you can estimate the work using the Planning Poker game.  Once you have your list, you need to get the team of people who will be working on the list to do the estimation.  Estimation for agile methods cannot be done by someone not on the team – this is considered invalid.  It’s like asking your work buddy to estimate how much time it will take to clean your own house and then telling your kids that they have to do it in that amount of time.  In other words, it’s unfair.  Planning Poker results in scores being assigned to each item of your list.  Those scores are not yet attached to time – they simply represent the relative effort of each of the items.  To connect the scores to time, we move to the next step…

Determine the team’s Velocity

The team needs to select its cycle (sprint, iteration) length.  For software projects, this is usually one or two weeks, and more rarely three or four weeks.  In other industries it may be substantially different.  I have seen cycles as short as 12 hours (24/7 mining environment) and as long as 3 months (volunteer community organization).  Once the duration of the cycle is determined, the team can use a simple method to estimate how much work they will accomplish in a cycle.  Looking at the list of work to be done, the team starts at the top item and gradually working their way down, decide what can fit (cumulatively) into their very first cycle.  Verbally, the conversation will go something like this:

“Can we all agree that we can fit the first item into our first cycle?”

- everyone responds “Yes”

“Let’s look at the second item.  Can we do the first item AND the second item in our first cycle?”

- a little discussion about what it might take to do the second item, and then everyone responds “Yes”

“Okay.  What about adding the third item?”

- more discussion, some initial concern, and finally everyone agrees that it too can fit

“How about adding the fourth item?”

- much more concern, with one individually clearly stating “I don’t think we can add it.”

“Okay.  Let’s stop with just the first three.”

Those items chosen in this way represent a certain number of points (you add up the scores from the Planning Poker game).  The number of points that the team thinks it can do in a cycle is referred to as its “Planning Velocity” or just “Velocity”.  With the velocity, we can then do one of the most important calculations in doing a budget…

Using the team’s burn rate and velocity calculate the budget for the Iterations

The team’s velocity is a proxy for how much work the team will get done in a cycle.  However, in order to understand a budget for the overall project, we need to take that estimate of the team’s output and divide it into the total amount of work.  Our list has scores on all the items.  Sum up the scores, then divide by the velocity to give you the number of cycles of work the team will need to complete the list.  For example, if after doing Planning Poker, the sum total of all the scores on all the items is 1000, and the team’s velocity is 50, then 1000 ÷ 50 = 20… This is the time budget for the team’s work to deliver these items.    To do dollar budgeting, you also need to know the team’s burn rate: how much does it cost to run the team for a cycle.  This is usually calculated based on the fully-loaded cost of a full-time-employee and you can often get this number from someone in finance or from a manager (sometimes you can figure it out from publicly available financial data).  In general, for knowledge workers, the fully-loaded cost of a full time employee is in the range of $100000/yr to $150000/yr.  Convert that to a per-cycle, per-person cost (e.g. $120000/yr ÷ 52 weeks/year x 2 weeks/cycle = $4615/person/cycle) and then multiply by the number of people on the team (e.g. $4615 x 7 people = $32305/cycle).  Finally, multiply the per-cycle cost by the number of cycles (e.g. $32305 x 20 cycles = $646100).

This is the budget for the part of the project done in the cycles by the agile team.   But of course, there are also other costs to be accounted.

Add any capital costs

Not many projects are solely labor costs.  Equipment purchases, supplies, tools, or larger items such as infrastructure, land or vehicles may all be required for your project.  Most agile methods do not provide specific guidance on how to account for these items since agile methods stem from software development where these costs tend to be minimal relative to labor costs.  However, as a Project Manager making a budget estimate, you need to check with the team (after the Planning Poker game) to determine if they know of any large purchases required for the completion of the project.  Be clear to them what you mean by “large” – in an agile environment, this is anything that has a cost similar to or more than the labor cost of a cycle (remember: agile projects should last at least several cycles so this is a relatively small percentage of the labor costs).  In the previous example calculation, the cost per cycle was $32305 so  you might ask them about any purchases that will be $30k or larger.  Add these to the project budget.

Using the definition of “done” add pre- and post- Iteration budgets

Every agile team is supposed to be “cross-functional” but in reality, there are limits to this.  For example, in most software project environments, teams do not include full-time lawyers.  This limited cross-functionality determines what the team is capable of delivering in each cycle – anything outside the team’s expertise is usually done as either pre-work or after the iterations (cycles) are finished.  Sometimes, this work can be done concurrently with the team.  In order to understand this work, it is often valuable to draw an organization-wide value stream map for project delivery.  This map will show you the proportion of time spent for each type of work in the project.  Subtract out all the work that will be done inside the agile team (their definition of “done”) and you are left with a proportion of work that must be done outside the agile team.  Based on the proportions found in the value stream map, add an appropriate amount of budget based on the project’s cycle labor costs.

Apply a drag or fudge or risk factor to the overall estimate

And of course, to come up with a final estimate, add some amount based on risk or uncertainty (never subtract!)  Generally speaking, before this step, your project budget is going to be +/- 20%-50% depending on how much you have used this approach in the past.  If you are familiar with it and have used it on a few projects, your team will be much better at understanding their initial velocity which is the foundation for much of the remaining budget estimates.  On the other hand, if you are using this method for the first time, there is a high degree of anxiety and uncertainty around the estimation process.  Please feel free to add a buffer that you feel is appropriate.  But again, never, ever, ever remove time or money from the budget at this last step.

Please let me know if you have any comments on how you have done this – tips, tricks or techniques are always welcome in the comments.

Thanks, Mishkin.

The BIG Difference Between Agile Teams and Project Teams

Last week I ran an Agile Coach Training session in-house for a large Canadian organization. It was just myself and five other participants. We were discussing possible things to do if there is a person on an agile team who is not able to work effectively in that sort of environment. One “intervention” we discussed was to “Assign Work”…

Pause

Now hopefully everyone who just read that phrase “Assign Work” had all sorts of alarm bells go off in their head!!!!

As an Agile coach, I would only do this under extreme circumstances. And I would always be fully aware of the consequence of assigning work. I would be removing that person from the team by Assigning Work. A person is not in an Agile (self-organizing) team if they need to be assigned work.

Guess what?!? THAT is the BIG difference between Agile Teams and Project (or Functional) Teams.

On a project, the Project Manager gets someone onto the team by assigning them work!!!!

On an Agile Team, a person is removed from the team by assigning them work.

Have you seen this happen? How did the assignee feel?

Comparison of OpenAgile with Scrum

OpenAgile is similar to Scrum in many respects. Both are systems for delivering value to stakeholders. Both are agile methods. Both are frameworks that deliberately avoid giving all the answers. So why would we choose OpenAgile over Scrum?

The most important difference is in applicability: Scrum is designed to help organizations optimize new software product development, whereas OpenAgile is designed to help anyone learn to deliver value effectively.

OpenAgile is an improvement over Scrum in the following ways:

  1. More effective teamwork and team practices, in particular the Consultative Method of Decision Making, and
    applicability over a larger range of team sizes from a single individual on up.

  2. Recognition of the individual capacities required for effective learning, namely Truthfulness, Detachment,
    Search, Love and Courage. Scrum acknowledges a separate set of qualities, but does not show how they systematically connect with the requirements of a Scrum environment.

  3. Systematic handling of more types of work beyond just “new artifacts” and “obstacles”. In particular, OpenAgile includes calendar items, repetitive items and quality items and acknowledges their unique qualities in a work
    environment. OpenAgile also provides a framework to include additional types of work beyond these five.

  4. Improved role definitions based on extensive experience.

    1. There is only one role defined in OpenAgile (Team Member) vs. three defined in Scrum (Team Member, ScrumMaster, Product Owner).

    2. There are multiple paths of service that allow Team Members and Stakeholders to engage with an OpenAgile team or community in different ways. There are five paths of service: Process Facilitation, Growth Facilitation, Tutoring, Mentoring, and Catalyst.

    3. The Process Facilitator path of service is similar to the ScrumMaster role with the following major differences:

      • is not responsible for team development
      • is not necessarily a single person, nor is it a required role
    4. The Growth Facilitator path of service is similar to the Product Owner role with the following major differences:

      • is responsible for all aspects of growth including value (like the Product Owner), and individual and team capacity building.
      • is not necessarily a single person, nor is it a required role
  5. Integration of principles and practices from other methods. Two examples suffice:

    1. From Crystal: creating a safe work/learning environment.

    2. From Lean: build quality in, value stream mapping, root cause analysis, standard work.

  6. OpenAgile allows interruptions during the Cycle. Scrum has the concept of Sprint Safety. This makes Scrum
    unsuitable for operational work and general management.

  7. The distinction between Commitment Velocity and other uses of the term “velocity” used in Scrum. Commitment Velocity is the historical minimum slope of a team’s Cycle burndown charts and determines how much work a team plans in its Engagement Meeting.

  8. Flexibility in the length a Cycle. Scrum requires that Sprints (Cycles) be one month in duration or less.
    OpenAgile allows a Cycle to be longer than that and instead provides a guideline that there should be a minimum number of Cycles planned in the time expected to reach the overall goal.

  9. The Progress Meeting in OpenAgile does not require people to take turns or directly answer specific questions.

  10. Avoiding conflict-oriented models of staff and management (Chickens and Pigs in Scrum).

  11. Terminology changes to be more clear in meaning and applicable beyond software. A comparative glossary is
    included below.

Another major difference between OpenAgile and Scrum is how the community operates. OpenAgile is an open-source
method that has a specific structure for community involvement that allows for continuous improvement of the system. Scrum is closed. It is closely managed by it’s founders and this has led to challenges with the method becoming dogmatic. OpenAgile is meant to constantly evolve and grow.

Comparative Glossary between OpenAgile and Scrum

OpenAgile Scrum
Cycle Sprint
Cycle Planning Sprint Planning and Sprint Review
Team Member Team Member or “Pigs”
Process Facilitator ScrumMaster
Growth Facilitator Product Owner
Work Queue Product Backlog
Work Queue Item Product Backlog Item
Cycle Plan Sprint Backlog
Task Task
Work Period Day
Progress Meeting Daily Scrum
Learning Circle w/ steps Inspect and Adapt”
Delivered Value Potentially Shippable Software
Stakeholders Chickens”
Five Types of Work:

New, Repetitive, Obstacles, Calendar,
Quality

- no equivalents -

User Stories, N/A, Impediments, N/A, N/A

Consultative Decision Making - no equivalents -
Sector / Community - no equivalents -

References on OpenAgile:

http://www.openagile.com/

http://wiki.openagile.org/

References on Scrum:

http://www.scrumalliance.org/

http://www.scrum.org/

“Agile Software Development with Scrum” - Schwaber and Beedle

“Agile Project Management with Scrum” - Schwaber

“Scrum and the Enterprise” – Schwaber