Practical Agile Blog

Practical Agile Blog
BostonAgileTraining.com
Showing posts with label Kanban. Show all posts
Showing posts with label Kanban. Show all posts

Tuesday, August 19, 2014

Are you implementing Scrum but realize you are better suited for Kanban?


I have found that very few organizations are starting out with Kanban as their first choice for their Agile implementation. Almost every organization that I have been exposed to through training and coaching began their Agile implementation with Scrum. Unfortunately, many companies have significant organizational impediments to being a true Scrum shop. 

Before I go any further, I want to say that I am a Scrum believer. If there is a way to implement “pure” Scrum, I believe you will have the most productive and happy development teams. That being said, I have found that many organizations trying to implement Scrum have significant  “Scrum-buts and their implementations would be better served by stepping back and considering a simple Kanban approach.

There are many different approaches to Kanban for software development, and some are even proprietary. Since everyone else is attempting to trademark their own Agile approach, from this day forward, I am trademarking, “Simple Kanban™.” Just kidding… Anyway, the benefit of Simple Kanban is that it assumes you already understand Scrum and User Stories and can apply what you have learned in Scrum to Kanban. When I train on Kanban, I train one day of Scrum and User Stories and one day of how to apply those practices to a Kanban approach.

I can’t say that I am an expert in Kanban for software development, but early in my career, I 
did have some great exposure to Kanban in manufacturing. In college, I majored in Industrial Engineering, and my first “real” job was working as a sales engineer for an environmental controls manufacturer. They used the Kanban pull system for inventory control, and as part of my onboarding training, I spent three weeks on the shop floor. It was an experience that left a deep impression on me.

While I worked there, they won the Shingo Prize for world-class manufacturing and excellence in productivity and process improvement; quality enhancement; and customer satisfaction. This award is considered one of the “Triple Crown” industrial excellence awards, along with the Baldrige National Quality Award and the Deming Prize.

Kanban was originally a lean manufacturing approach, and it was developed in alignment with these 5 lean principles:
  1. Specify what creates value from the customers perspective
  2. Identify all the steps along the process chain
  3. Make those processes flow
  4. Make only what is pulled by the customer
  5.  Strive for perfection by continually removing wastes

These lean principles I saw applied to manufacturing always stayed with me as my career shifted to software development project management. I was never a thought leader advancing my ideas beyond the needs of my immediate project, but I was able to be “agile” before I even heard the term. I was applying both lean principles and common sense to keep the development teams productive and my customers happy.

Now that I am an Agile Coach, I have formalized my common sense approach so the process is repeatable and so I can train Agile teams. Here is how I implement Simple Kanban:

1       Keep existing functional teams: Most organizations are struggling with eliminating roles, especially QA. One major reason that this won’t change is because separation of duties is required for many IT shops with annual security auditing requirements.

·        Business Analysts perform role of Product Owner and write User Stories. They prioritize these Stories in the Product Backlog for the development team which becomes the work queue for the team to pull from. Ultimately, given the lightweight nature of User Stories, there will be fewer Analysts needed.
·        Software engineers perform high-level design, and identify the development tasks. For complex systems, it may require that an architect or senior software engineer is on the team for this activity.
·        Software engineers continue to develop, write unit tests, and advance Agile engineering practices such as continuous integration. This is the same role they have been playing, but in a “pull” environment they will be much more empowered.
·        Lastly, retain quality assurance team members to perform functional testing. I still suggest that the Business Analysts and/or a true Product Owner role exist to perform ongoing acceptance testing.

2       Utilize User Stories: Kanban typically uses cycle time to size requirements. It may be heretical for me to propose this, but User Stories can accomplish the same thing, especially if the team members have already been trained on User Stories.

3       To manage WIP use functional velocity: Each functional team estimates the story points for their work on a story. As with Scrum, over time, each team will know their velocity and can commit to their work in progress (WIP) limits. They can then work towards a stable time-based velocity which can provide the same transparency as cycle time.

4       Team Size is managed by Story Points: The number of business analysts, software engineers and quality assurance team members is determined by the number of story points in the functional queue and ultimately the release schedule. As with Scrum, multiple small Kanban teams work better than one big one.
5       Self-Organizing is the same as a Kanban pull system: When a team member is done with a story, they go get more work from the queue.

6       Keep open spaces: This is just a good idea. Regardless of your Agile approach, one of the keys to success is having everyone in the same room.

It may sound complicated, but as with Scrum, after a few cycles the team begins to work out the kinks. I agree that over time, cycle time is a better approach for Kanban, but if you are moving from a Scrum model, it may be an easier transition to retain the use of Story Points, and I have seen teams be successful with this approach long-term.

Bottom line – keep it simple

.

About the author, Dan Tousignant, PMP, PMI-ACP, PSM I, CSP

Dan is a lifelong project manager and trainer with extensive experience in managing software development projects. Based upon his experience, he has adopted both Agile as the primary method for developing and implementing software. He is passionate about the leadership emerging from self-organizing teams.

Dan has over 20 years of experience providing world class project management for strategic projects, direct P& L experience managing up to 50 million dollar software development project budgets, experience managing multi-million dollar outsourced software development efforts and strong, demonstrated, results-driven leadership skills including ability to communicate a clear vision, build strong teams, and drive necessary change within organizations.

Dan holds a Bachelor of Science majoring in Industrial Engineering from the University of Massachusetts, Amherst and is a Certified Project Management Professional, Professional Scrum Master, PMI Agile Certified Practitioner and Certified Scrum Professional and is the owner of Cape Project Management, Inc.

Cape Project Management, Inc.
Boston, MA 02129, USA


Contact: Dan@CapeProjectManagement.com



Monday, April 7, 2014

Why Scrum “Master”? What about Scrum Apprentice? Maybe we need a Scrum Jedi?

I learned the term Scrum Master back at the turn of the century (I like how that sounds). When I first heard it, it was from Ken Schwaber himself. I was a true and tried project manager that had recently earned his PMP. I was a self-taught project manager, and looking back, my instincts and style were better suited for Agile, but I happened to go down the formal PM path first. By this point in my career, I had come to the conclusion that project management was a “craft”.  I believed it then and I believe it even more now, which is why I struggle with the term “Master.”
What does it take to be a "Master" of Scrum?

I was a carpenter before I was a project manager. I was the only honors student taking wood-working classes in high school and I worked as a carpenter’s apprentice during the summer while I was in college. I had tremendous respect and even awe for the master craftsmen I worked with. In carpentry, the term Master is reserved for the likes of Norm Abram. Also, to be a union carpenter, you have to go through apprentice and journeyman programs that are rigorous.

In history, you had to earn the term “Master” to be seen as the top of your craft. Wikipedia has a good definition:

“An aspiring master would have to pass through the career chain from apprentice to journeyman before he could be elected to become a master craftsman. He would then have to produce a sum of money and a masterpiece before he could actually join the guild. If the masterpiece was not accepted by the masters, he was not allowed to join the guild, possibly remaining a journeyman for the rest of his life.”

I think the intent with the term Scrum Master is that the title should be reserved for those that have earned the title of Master, but that is obviously not the case. There is no job requirement or career path to become a Scrum Master.  Most of us have had some type of career path as we developed our skills; e.g. in software engineering, there was a typical path of analyst, developer, designer, architect or in project management: project coordinator, project manager, senior project manager, program manager.


So, how does someone earn the designation of Scrum Master? Until recently, it was just take a 2-day class. Now, at least there are exams to test your knowledge of Scrum. It is surprising how we have come to a place where the term Master can be designated without any true effort or experience. Most of us have had to show both experience and knowledge to get the certifications we have. PMI, for example, requires the PMI-ACP designation to be based both on experience and knowledge.


I am not sure there is a way to backpedal, so maybe we need a new term for a Scrum Master that actually has proven themselves. How about Scrum Jedi? Just a thought… All I ask is that I get credit for the term when it goes viral…

Wednesday, March 26, 2014

The Agile Success Algorithm

al·go·rithm
ˈalgəˌriT͟Həm/
noun
  1. 1.
    a process or set of rules to be followed in calculations or other problem-solving operations, esp. 

Those of you reading this are more than familiar that Agile is all the rage. Executives like to say that their organization is going "Agile". They throw out terms like Scrum and Kanban without truly understanding what they are getting involved in.

In order for Agile to be implemented successfully, I have created the following simple algorithm. Embrace Change + Learn from Mistakes = Agile Implementation Success.
Agile Success Algorithm

Input 1 = Embrace Change

The primary risk with implementing Agile involves the ability your organization to embrace change. You need to answer the following questions about your organization's culture and your leadership team before you can successfully implement Agile:

How does you organization respond to change?


When was the last time your organization underwent any major changes? Have they been through major layoffs? Have they introduced new leadership? How long have they been in business? Have there been major new product introductions? Have they been acquired or merged? 

How did these changes go? In this case, past performance often dictates future performance. If your company struggles with change, then they will have trouble introducing Agile. Agile introduces change in so many ways:
  • Changes in roles, title and responsibilities. Just look at the roles in Scrum, since it is currently the most popular Agile method being implemented. How easy is it for your organization to adopt these roles?
    • The Scrum Master??? How many managers or project managers do you know who truly understand the concept of servant leadership? How many organizations allow for management positions that do not have direct reports? To truly be successful with Scrum, a Scrum Master role has to be created from scratch, not just assigned to an existing function.
    • Product Owner? Organizations that have a mature product manager function can transition easily to this, but many organization manage product related decisions by committee with a team of business analysts. The role of a truly empowered Product Owner is difficult for many companies to swallow.
    • The Scrum Team????? A self-organizing team is the foundation of Scrum and of Agile in general. How many organization actually foster this? How many middle manager's jobs would be eliminated if an organization becomes successful with this? How many under performers would be exposed in this model? This is the most difficult, yet most critical change required. 
  • Changes to process.
    • No analysis or  business requirements phase? No Gantt charts? No 12 month project plan? Traditional project management was just formalized at many organization in the last decade. Formal PMOs have been rolled out, massive enterprise tracking tools implemented and teams of project managers hired to create and maintain documentation. Can your organization tolerate getting rid of all the process you just implemented?

Input 2 = Learn from Mistakes

Only a company or leadership team that has experienced project failures can truly appreciate and support an Agile implementation. These failures may have come in many different ways:
  • The project came in too late to meet the market opportunity.
  • The budget changes were so excessive that the project was either terminated to deemed a total failure.
  • The customer rejected the product because it was "not what they were expecting."
The list goes on and on....The Agile Manifesto was not crafted by grad students developing a thesis. It was developed by people who were clear that the way we were working wasn't working. Many people, like myself, have become Agile evangelists only after suffering through one or more project failures. One of the major downsides with introducing Agile to the "younger" workforce is that they don't truly appreciate how much more fun and enjoyable it is to work on an Agile project. Give them one month of using project time-sheets and hourly tracking in an ERP tool and they will start to see the light. 

Result = Agile Implementation Success!

The benefits of Agile are self-evident for those who have lived through traditional project failures and are willing to change. There are hundreds of successful case studies and stories of successful Agile implementation, but implementation failures are becoming more and more common. Becoming "Agile" is not just using the term "Agile", it is a transformation that will effect your entire organization.