Kanban Development and the Paradigm of Flow

by alisson.vale 10/11/2009 3:25:00 PM

That was the title of my presentation last Thursday at Agiles 2009, 2nd Latin-American conference on Agile Development Methodologies. I have designed this presentation trying to summarize what the Kanban community is trying to spread recently as a new way to manage knowledge work. 

Download the slides here to follow this post about the presentation

By the way, knowledge work was the first topic of the presentation. The initial discussion was about how software development fits with knowledge work (slide #1) and how such activities can be associated with a huge quantity of variations in scenarios and contexts (slides #3 to #6). Understanding the nature of knowledge work is the key to not get trap in trying to translate manufacturing tools and techniques unappropriately.

Context Matters 

Don Reinertsen's quote about best practices and the importance of the right context to consider them as "best" warn us to be carefull when choosing best practices just because thay are supposed to be "the best" (slide #7). Context is relevant, so Kanban allows you to design processes that fit to the context, instead of manipulating the context to fit a specific process (slide #9). 

The word "process" generates fear on the agile community. In fact, there is a reason to put this word on the right side of the manifesto. But, there is no reason to think that no process is the goal. Kanban establishes a new balance on the relationship between people and processes, establishing a way to empower people to design their own processes. Hence, Kanban is a collaborative exercise for process design and offers thinking and action tools to empower people to evolve processes by themselves (slide #11). The process is owned by people, which can connect Lean with Agile in a incredible way.

And there is more... Kanban is also a Mindset

So many case studies around the world describe a kind of transformation process emerging once you absorb the "paradigm of flow". A Kanban implementation holds only four essential tools. But there is a whole new mindset out there. The WipLimitedSociety is agreggating people and content regarding something bigger than the four essential tools. A whole new body of knowledge is emerging right now. The "Yes We Kanban" logo is the symbol of this mindset (slide #13).

It's not so easy to structure this mindset in a way that people can understand. I give my try, anyway. So, my way to describe the Kanban Mindset is by showing patterns, tools and the type of thinking spread by the people who is talking about and applying such ideas.  The result was a pyramidal structure like the one that I introduce at slide #14: Thinking Tools, Process Design Patterns, Capability Measurements, Collaboration and Team Model Patterns and A Culture of Continuous Improvement. 

Thinking Tools

(#slides 16 a 20)

Thinking tools guide practitioners when they are applying Kanban. System Thinking help coaches and team members to understand why they are doing what they are doing. See your work environment as a system can make you conscious about causality and effects of actions. This type of thinking, despite of being very abstract, is very powerfull. A single intervention can cause a huge influence on the system as whole. 

Once System Thinking can be viewed as the starting point, Lean Thinking is the basis. Almost every operational concern is guided by the need to identify value appropriately and make it flows throught the system, improving the process continuously and eliminating waste progressively. 

Theory of Constraints is another element on this thinking process. Once you have flow in your process, you are going to start to see bottlenecks that make it slow in certain part of your system. The Theory of Constraints establishes that your system is so strong as its bigger bottleneck. By using knowledge of this theory you can dramatically leverage the throughtput of the system or, at least, you can get understanding about what are the right investments to do in your system to get higher or better results.

Queueing Theory is another key thinking tool in the Kanban mindset. What lies behind knowledge work is the unpredictable nature of arrival times and task durations (slide #19). Queues are always there and the understanding of its behaviour is in the toolbox of every Kanban thinker.

Finally, there is the Real Option theory that has been discussed lately. It establishes the basis for risk analysis by raising the importance of managing choices and defer commitments to generate options.

Process Design Tools and Patterns

The idea that processes can be designed using tools and patterns instead of procedures and documentation forms is mind blowing. In slide #21, I delineate four essential tools and some other patterns for process design using Kanban. This list is just an extract of what I have been listening as solutions to common problems used by practioners and discussed by the community. Here they are:

Essential Tools

Value Stream Mapping
Visual Management
Pull System & Single Piece Flow
Limited WIP

Patterns

Buffers & Queue Limits
Classes of Service
Leveling Work
Two tiered Systems (Expand/Collapse)
Swimlanes/Expediting
Triggers
Priority Filters
Perpetual Multivote 

Obviously, this is not the full list of patterns that people are applying to their Kanban implementation. What matters here is the idea that patterns can help a team to solve very specific problems when they are trying to design their processes. You can try to extract the basic meaning of each pattern by looking at the slides #21 to #40. You can also leave a comment on this post if you need more info about one or other.

I just want to leave a few words about the last two (Priority Filters and Perpetual Multivote). They were initially proposed by Corey Ladas as patterns for designing the process of select work to inject into the system. I think the perpetual multivote system can be particularly interesting to select work from a continuous improvement backlog queue.  

The description of those can be found here: 

Collaboration and Team Model Patterns

(slides #41 to #46)

It's difficult to realize how collaboration patterns emerge on Kanban projects without actually doing Kanban. The first thing to notice is about the ownership of process rules. The best Kanban teams are using all these tools to master the process. They, in fact, own the process usually helped by a coach with a System Thinking or Lean Thinking bias. 

What people call "swarming" is the most interesting pattern, in my opinion. Usually happens when people have to look at the process board and decide what to do next. The Kanban limits avoid people from inject more work into the system, so they have to find a way to help pushing the work in progress out. That's the moment when Collaboration patterns start to emerge. 

Teamlets, feature teams, and other collaboration structures start to be notice daily.

Capability Measurements

(slides #47 to #53)

I think this quote from John Seddon illustrate why we have to be carefull with measurement in our systems: "Managing with functional measures always causes suboptimization, because parts achieve their ends at the expense of the whole."

Kanban gives to the team the ability to measure capacity and use that measure to bargain or manage its commitments with customers and stakeholders. Capacity can be known using time measurements (lead/cycle time) or volume measurements (throughput). It's common for Kanban teams and coaches to use Cumulative Flow Diagrams to analyze throughput and find bottlenecks and other systemic issues on processes. 

A Continuous Improvement Culture

Finally the main goal of a Kanban implementation: establish a Kaizen culture. A culture of continuous evolution of the system. What Kanban team have been reporting so far is the constant appeareance of "kaizen events" as the time goes on. In slide #53, I mention three action tools to establish this culture: 

* doing Operations Reviews regularly; 
* enabling Continuous Improvement (CI) Actions by reserving capacity in the system to inject CI work items continuously;
* expanding oportunities for improvements removing bottlenecks, eliminating waste and reducing variability.

System Thinking at Agile Brazil 2009 Conference

by alisson.vale 6/29/2009 11:32:00 AM

Last saturday I was at Agile Brazil 2009 conference. It was a great one-day conference with a lot of influential brazilian Agile thought leaders and practitioners talking about Agile. 

Interesting how Rio de Janeiro offers an audience with high mature levels of knowledge to discuss and argue about software development. It's definitely a great place to host national and international conferences about Agile.

It's also interesting to watch Lean and Kanban become so controversial in the Agile world. I can classify the Agile Communitty impressions about the "Flow Paradigm" in four categories:

1) People that believe in this paradigm as the only alternative for their projects but still don't know how to start;

2) People that believe in this paradigm as a possible alternative for very specific projects (like the ones dealing with support, bugs and intense change request).

3) People that is looking very carefully and avoiding any oficial statement until fully understand and know how it works in practice (I've noticed several thought leaders in this situation)

4) People that believe we are moving backwards with this approach.

Anyway, in my opinion, everyone should look very carefully to this new approach. After I've started to use it, I really can't see myself using the timebox approach again, even for new product development. The leverage in subordinate the system to its demonstrated capacity is really meaningfull. But I have to admit this is very risky for teams with low maturity in Agile practices.

My presentation: System Leverage in Agile Projects

The whole point of my presentation was to describe how changing your way of thinking can create real opportunities to leverage Agile projects (or even any other type of project).

I've started describing the difference between System Thinking (the new way of thinking) and Analytical Thinking (the old way). The main message was about System Thinking as a model to get understanding of why things work the way they do, in opposition to the Analytical model that gets knowledge about how things work. Use System Thinking to solve problems changes dramatically the potential to create leverage in software projects.

Some of the points of leverage that I have described in the presentation were: 

- Focus on the purpose of the system;
- Demand Management is so important as Demand Planning;
- Forget functional measures and focus on measure the capability of the system (e.g,cycle time) or the conditions of the system (e.g, failure demand vs value demand).
- Establish flow end-to-end (from the customer to the customer)
- Limit WIP
- Leadership, Team Work and generalist people are elements that improve flow; 
- Every waste activity points to the design of your process or the design of your product;
- Refactor your process is so important as refactor your code is.

You can download the presentation here:

For portuguese readers

For english readers

Continuous Risk Mitigation and System Thinking

by alisson.vale 5/12/2009 4:58:00 PM

I always looked at risk management activities using the event-driven risk approach offered by the current project management traditions.Perhaps because of this, I've never paid so much attention on this topic before, as I am doing now. 

Flying back to Brazil from the conference in Miami, I had the opportunity to read the amazing piece of text that David Anderson wrote about Risk Management on the proceeding book of the conference. After that, I've started to think about risks in a different dimension. Now, I’m diving on this conclusion:

Mutual Trust Relationships can be sustained by intrinsic risk management mechanisms.

There is definitely something more in dealing with risks than just trying to create mitigation and contingency plans up-front.  

To be relevant, risk management has to be merged into the system to orchestrate his behavior.

I have this feeling today that any decision point in a process should be oriented by some risk analysis approach. I’m not talking about a plan for risk mitigation here; I’m talking about a process for continuous risk mitigation. Is that possible?

In David's article, he describes a technique that uses Classes of Service (CoS) as an instrument to make the system works oriented to risk decisions according Cost of Delay. So, before you inject new work into the system you are conditioned to think about risks, once you have to classify each work item by doing an analysis of the associated Cost of Delay. The type of risk is going to influence behavior by the application of different contextual policies. Pure System Thinking!

Labeling work items is a interesting mechanism to influence system behavior. If you use an e-mail system like Gmail you can see that in practice. When you decide to tag messages by some form of classification, you define a visual agreement mechanism that is able to influence your behavior. You are going to act differently when you see a message with a special tag type. 

What David is proposing is labeling work items by risk criteria, which is going to subordinate the system to be risk-oriented, a fundamental part of self-sustainable processes. So that's why David's article got my attention in the conference book. Explicit Risk Management is missing in our process. We have to figure it out how to apply this knowledge on it.

In our process, we have a different use for Classes of Services.

Instead of thinking about the risk, we are thinking about Value mapped to agreements that we need to respect as we interact with our customers. 

We talk to them in these terms:

“You (the customer) should trust us (the vendor) as we will try very hard to keep your business up and running by solving any problem (1) that you have or by helping you in any operation (2) that you need assistance from us; we also are going to sustain your processes by doing improvements and adaptations (3) as your business evolve and, while we do that, we are constantly trying to deliver new features and capabilities in our software to create new business opportunities (4) that generates value for you in your market share.” 

This “Agreement Statement” maps to our Classes of Services (CoS):

1 - Problem solving
2 - Support and Operations
3 - Improvements for sustainability
4 - New Value

The intention of our "Agreement Statement" is to create a Mutual Trust Relationship with them by being flexible with their needs and getting flexibility from them for our needs (which are mainly estimation, prioritization, error tolerance, and others). So, all units of work derived from this CoS have Value for the customer. But the lack of any of this agreement can make the long term relationship that we aim becomes unstable.

We need to create balance by delivering units of work observing the system against this "Agreement Statement". During this observation we have to consider each individual customer and the whole system to make right decisions.

We have an assumption here which is based on the fact that we have different entities of our system competing by the same (and limited) resource. So they have to trust us that we are going to take the best decision considering this "invisible" competition that is happening in background. This decision process is all about "risk analysis.” 

So, Risk Management is an important activity to create effectiveness on this decision process. An effective decision process creates trust, and high levels of efficiency on risk control leads to high levels of trust on this relationship.

Using CoS as David suggests seems to be a quite reasonable approach, once CoS is the primary way to classify units of work in Kanban Systems. But, I’ve realized an underlying model for managing risks here, which are leading us to the definition of a new orthogonal ax in our system for risk-oriented work items classification and also for risk-oriented policies. Merging risk analysis into our system to influence its behaviors is going to be my next challenge for now.

 

Inside the Lean & Kanban Conference

by alisson.vale 5/10/2009 8:40:00 AM

Last week I was in Miami attending the Lean and Kanban conference. This post contains my personal view about the conference and about some hot topics that gain my attention while I was there. 

 

 

Between Sessions on the 2nd day 

Structuring the community  

The announcement of the new Lean Software and Systems Consortium makes me think about how important is to take this community to a next level in terms of organization. I have this perception that the Lean community is fragmented today in a couple of different trends. It would be cool if this Consortium could be a real representation of the whole Lean community. But I really don´t know if it is going to be possible considering how we are structured today. Anyway, I'm an enthusiastic about this idea and I'm ready to contribute somehow to make this happen.

People

Amazing how this community is surrounded by brilliant people that really knows about what they are talking. I am still impressed with the quality of the attendees. Many of them were there to teach, not only learn. I really don't know what was better: the talks or the conversation between them. The residual learning generated by the conference came from a flat transference of knowledge, not a top-down (speakers->audience) one. The presentations were open to conversation, people asked questions during the talks, not only after them. Many times, people asked for the microphone to clarify positions and thoughts, not just for questions. The open space at the end just make this more evident.

 

 

Preparing board for the Open Space 

 

Enlightening People

David Anderson brought powerfull ideas on his talks. David has this ability to makes me have shining and sudden ideas when he talks or writes. It's not about trying to teach how to walk the path, it's more about direct you to a possible path and let you decide how to walk it. His recipe for success is becoming more powerfull as the community is getting more experience with Lean and its principles. WIP reduction, quality focus, demand versus throughput and prioritazation are already "a spread message" as we saw in most of the study cases. However, the new "reduce variability" message is still out of the people focus. Maybe we are going to see progress on this issue in study cases at the next conference.

An important message that I've got from David was to avoid the temptation to establish any type of "Lean Framework". Let's try to not copy the way that how other industries are applying Lean and focus on principles. If the message is strong (as it is in Lean), people are going to be able to find the right way to make it work in their own situations.

Jean Tabaka was another key personality of this conference. In her presentation, she was able to transform all the materialism that surrounds Lean with numbers, curves, graphs, and other technical stuff in something organic, system oriented. I like pretty much of the continous learning approach suggested by her. Actually, I have written about this on my article for the proceedings book. Profound knowledge about your own system, mostly formed by the business, the organization culture and the people is the most powerfull way to get leverage for growing. Jean has also an incredible leadership nature. She is always leading all conversations or activities that she is envolved. She also gives to the audience a real bonus by showing us how to facilitate an Open Space and how to conduce a wonderfull retrospective. Amazing the way that she works.

Corey Ladas was a big surprise for me. Definetely one of the most open-minded and intellectualized members of the community nowadays. You can watch him talk for hours without getting bored. I've got a copy of his Scrumban book and I have to say that the title can distract potential readers to buy it. This book is an amazing description about Lean applied to software development. A really practical view that is pretty rare to find in other Lean publications in the software area. The Scrumban technique is there, but is just a small part of a whole rich content about Lean.

Study-Case Talks

Several presentations described different ways that Kanban and Lean were introduced in a lot of scenarios. It's interesting to see how powerfull solutions are built when you don't prescribe the how ("practices and methods"), but provide the why ("values and principles"). This community is empowering people around the world to discover the best way to design processes and to influence culture organization with simple instructions like create limits to WIP and make value flows. I really like the way that Eric Willeke and Chris Shinkle prepare their material. Eric told us his story in a very unusual and interesting way. How Scrum has failed in absorb the company scenario and how kanban embraced this scenario and empowered people to make the work done. Chris Shinkle got my attention by the creative approach comparing his kanban adoption to the Dreyfus Model of Skill Acquisition. This insight is awesome not just for Kanban and Lean implementations, but for whatever initiative that intents to spread knowledge for people in organizations.    

 

New Room Layout just before the Open Space session 

 

My Presentation 

I presented at the second day just before lunch. The main challenge for me was try to describe our model, which has its own peculiar details, with the limitations of my english-as-second-language issue. But the massive feedback that I've collected after the presentation makes me believe that this was not an issue at all.

I have started my presentation describing our model which is based on a mutual trust relationship with our customers. This relationship emerges from the observance of four aggreements defined as "quick problem solving", "support for operations", "improvements for sustainability" and "new value". Actually, they are all perceptions of value by the customer (it needs and pays for all of them), but for us, three of them are perceptions of waste ("new value" is not). So they are conflicting perceptions of Value. In fact, it is difficult to establish priority between the Value generated by this activities. It's totally contextual. So we try to create balance between them. Giving to the customer nothing more than they need, at the time they need.

Classes of Services for us are the representation of this aggreements in our process. Units of work are derived from these classes of services. The Units of work are represented by cards that flows between different stages in an eletronic board that holds a set of stages distributed in 3 big areas: Demand Management, WIP Management and Delivery Management.

So, I have talked a little about each area describing some interesting issues like a prioritization filter for Demand Management, the collaboration model in WIP Management and Release per Feature and Traceability in Delivery Management.

The presentation has finished with a demo of this eletronic board and other open source tools that compose an integrated environment for technical operations.

You can download my slides here

You can read people tweeting during my presentation here

You can read reviews of each presentation here

[Update] David Anderson wrote some nice words about my presentation here

[Update] Some discussion in Agile Executive about my presentation here

Retrospective results at the end. 

 

So, finally, I would like to say thank you for everyone that was there and that I have a chance to talk with. I see you guys on the next conference. 

What else from Lean & Kanban 2009?

by alisson.vale 3/11/2009 8:33:00 PM

Less than two months left to the Lean and Kanban Conference in Miami and some exciting news have just happened last days.

The price is lower now and there are options for choosing between a "Full Lean Day", a "Full Kanban Day" or both. Look at the final version of the promotional flyer and open the conference web site to read more:

 

Using David Anderson's words: "the greatest ever assembled group of experts in Lean software development will be convening in Miami in May to explore the frontiers of agile and lean in software development". He is talking about: Alan Shalloway, Dean Leffingwell, Peter Middleton, James Sutton, Corey Ladas, Karl Scotland, Amit Rathore, Sterling Mortensen, Aaron Sanders, Rob Hathaway, Max Keeler, Linda Cook, Eric Landes, Eric Willeke, Chris Shinkle and David Laribee. He also starts to talk about them in his blog here and here.

I'll be there too. My company has been using the Kanban approach for more than a year and we learned a lot during this time. Since then, we've been building an eletronic kanban board to support the process and the way we use this board to manage our process will be the focus of my presentation.

Now we are working to detach the board from the rules of our process. We are creating features to allow process customization. The idea is customize the definition of workcells, stages, limits, classes of services, flow rules and others Kanban concepts. Depending on the acceptance of the tool and feedback from the community, we can go to the Open Source model, giving back to the community all the support that we receive to improve our processes with these ideas. That's speculative yet, but quite possible.

I see you there! 

Kanban: When Signalization Matters

by alisson.vale 2/22/2009 11:11:00 AM

 
One of the central elements of Kanban is the ability that you acquire in redesigning continuously your process as you understand how things work in your scenario. In fact, understanding what we do was the first benefit that we got after starting to work with this approach about a year ago. Insofar as we have got this comprehension, we realize that there was something special about how we have been signalizing the elements of our process. As these signals become more meaningful, more stable and predictable becomes our process.

Figure 1 shows what we call "The System View". That is the main view of the process and it is the most frequently used view by all team members.   

(Click to Expand) View of the System as a Whole
Figure 1: View of the System as a Whole (Click to Expand) 

As you can see in Figure 1, there is a lot of signalization on our Kanban board. The signs help us to quickly answer some specific questions that we have to deal with on a daily basis, like "What am I supposed to do now?","What and How much has been delivered week after week?" or "What are in the system right now?". Besides, it helps us to make work go downstream more smoothly, sometimes by point us to flow decisions based on our politics and preferences, sometimes by showing up bottlenecks that happen from time to time. 
 
The System itself is the first Signalization

Our Kanban board is organized in three main areas that suggest a systemic view of the process: Input, In Progress, Output. Our system was intentionally drawn using a systemic perspective. Like every other work system, we have a lot to do (Input), we are doing some work now (In Progress) and we had already delivered some work to our customers (Output). When you are looking to the Demand Area (Input), actually you are trying to look at the future. The WIP area represents the present and the delivered area the past. Look at this picture as a whole help us to make decisions when we see ourselves in front of hard situations involving priorization, capacity, overloading, flow, value and waste reduction. It is a key point of this approach the ability to evaluate specific situations having the whole picture in mind.
 
Every decision results in the movement of a physical token that moves around the board following physical constraints and rules (like in a chessboard). The tokens are moved from the left to the right. I just can move a token to an empty space, for example. If there's no empty space, I have to create this space by moving other tokens to other areas. Then a trigger is fired to re-analyze the system in concern to priorization, schedule negotiation and resource availability.  In other words, when you (as a Team Member) are operating the system, you are using the signals to guide yourself. Just like in a chess game. 
 

Figure 2: Signalization guides the Flow and Team Decisions
 
Our board today can be seen with different eyes, or different views. We look at our system like we look at a map, and there are areas in this map that can be zoomed in to increase the details about what is happening in there. Figure 3 shows the three main areas in zoom. We need to look with more details to manage different areas of the system. Demand management, for example, is done by increasing the details of the Input Area. So when we have to organize the demand, some tools and visualization fit better with the nature of operations inherent to this area of the system: bigger cards, priorization filters, drag and drop of the cards between areas and slots, grouping by customer importance, and a basket thrash to put away old demands that expire as the time goes on.
 
Click to Expand
Figure 3: Expanding the Input Area with the Front View
 
Another area where it is very important to take a closer look frequently is the WIP area (Figure 4). When we look at this area, we want to know how the things are going on now, in the present. Here we are monitoring other aspects of the process, for example:
 
 Click to Expand
Figure 4: WIP View 
 
  • how the demand is distributed in terms of classification (see "Value and Demand" later on this article). To do that, we have a graphic signalization that shows the percentage of every class of service that we are working on in a moment. It allows us to influence the system in a way that more work of certain type can be injected to balance the output results. For example, we can prioritize more "value" work, when we see that the percentage of "non-value" work is too high. 
  • how the demand is distributed for each team member. Sometimes the flow in the system is threatened by work accumulated in the buffers of team members. We can see that simply analyzing the amount of cards by work-state (See Figure 5). It also shows important information about team overloading and multi-tasking levels.
 
 
Figure 5: Amount of cards by work-state in WIP  
  • don't loose the focus in cards that are "Waiting for Customer". This queue holds cards that are waiting for information or for deliberations from the customers. As more time they stay in this queue, worst will be for the flow of the system in a general way. 
  • Parking Lots keep our eyes on the progress of deliverables that need several other minor deliveries to getting done. It could be a MMF (Minimum Marketable Feature) for example, when you need to group Value as a set of features or user stories to deliver at a once. They can also represent any other Business Activity that has to be done by the synchronized execution of several other cards, whatever class of service they are.
The Delivery Area is what we see when the Output part of the system is zoomed in (Figure 6). This area represents the past, and is the source of our "Yesterday Weather" analysis for planning. Cycle time and other information are used to give us the necessary understanding about what we are capable of (in terms of delivering per class of service).
 
 Click to expand
Figure 6: Delivery View
 
Value and Demand

Another important topic that worth mentioning is how the work can be classified, sized and organized in the system. And the signalization comes again to help. We represent each unit of work in our system as a "Kanban Card" and we use different types of signalization to draw and organize them on the board (Figure 7):
  
Figure 7: Signalization of our unit of work (Kanban cards)
 
  • Each card is labelled with a unique number which help us to track it and to get a better communication when the team needs to talk about it. Bigger cards are used to represent the work before they enter in WIP (Work In Process), smaller ones after. The reason is because we can show the description of the work when they are bigger. It help us to analyze several of them at the same time when doing priorization. 
  • Colors are used to classify the work by classes of service:
  1. [Green] for Value demand: features that generates new business opportunities for customers;
  2. [Yellow] for Improvements to Sustaining: features that customers are missing when trying to use the product to sustain their business;
  3. [Orange] for Support Operations: Activities to support the use of the product by customers;
  4. [Red] for Problem Solving: When a customer can not use the product appropriately for any reason;

    In Lean terms the Green cards are value, and all the others are pure waste.
  • Two types of borders indicate if the card is a unit of work for a customer (solid border) or for the own team tooling and process improvement (dashed border).  
  • A sign in the top right area of the card indicates the estimated size of the work. We work with just three types of size: Small (it is our reference and it takes between 1 or 2 days of work to be done), Medium (3 times more complex than the reference) and Large (5 times more complex than the reference).
  • The same colors are used to signalize how much of each class of service is in the three areas of the system. It can be a good measurement for tracking waste levels, or to help in controlling how much work of each type could enter in it.
The interesting thing about this kind of signalization is to create opportunities to see the whole using the Lean perspective of Value. We can monitor how much effort of our system is consumed to generate value in a certain period of time for each class of service, and that is the main metric that we use to evaluate our process: how much money we are spending generating new value or dealing with waste?

Stages, Queues and Limits

Once we have our value and demand classified appropriately, it is important to see how this demand flows when it enters in the system. Our visual board contains areas representing each stage of the process. Most of this stages has limits to prevent new cards from entering in it. The limits cause some interesting systemic behaviours: they avoid the perpetual accumulation of work in stages where the rate of incoming is higher than the outgoing rate; they highlight the need for sequentialization inside the stage and constant priorization of the work; and they help in making a downstream operation to be the one that establishes the rhythm of the flow. Our stages and their signalization are shortly explained on Table 1. 
   

The Front Queue  All the collected demand that are not qualified yet to get in the system regarding business criterias. The items of this queue are not important for who is looking at the System View. Just for those who are managing demand. But it is important to monitor the number of items in this situation for each project.   
Waiting For LRM Queue  With a limit of 14. Items on this queue require more constant observation. They are just waiting a moviment in LRM Queue. This will create an empty space triggering another priorization action. So the work item is pulled from this Queue to the LRM Queue. When this happens, an empty space shows up in this one, which forces another priorization action. This time pulling another card from the Front Queue. That is the point in a Pull System. The next stage on the pipeline pulls the work as needed.  
LRM Queue LRM is an acronym "Last Responsible Moment" and indicates that the best time to work on an item has coming. The first item of this queue is the one that will be pulled from the Team to start working on it. We have two LRM queues, one for each work cell (development and support operations). Look at the empty space on the first slot in the queue beside. That is the sign from the system that more work can be pulled from the front area.   
Team Members WIP Queues Each Team Member (including the Leaders) organizes his demand using the work state of the item. Ideally, a team member would be holding just one card, and that one should stay on "In Progress" Area. But, in the real world we have to be able to deal with other cards in different state contexts. The Feedback area holds cards that come back from downstream, for quality reasons, for improvements or even for failing in following standard compliance policies. The Inspection area is filled by automatic distribution. The numbers in this area represent the order that which each team member will receive the next item for doing inspection. It means when someone moves a card indicating that it is "Done", this card is automatically associated to an another Team Member that has the number #1 in his slot. Then everyone else gets a new number (for example, the number #2 becomes the new number #1 and so on). This mechanism was created to randomize the allocation process for inspections and allows all team members to inspect the work of all the others members. This is an interesting way to influence the flow of the system using signalization. 
Release Ready Queue When the work is done and inspected, the next stage indicates that the item is just ready for release. It means that the customer can already be notified about that job. Here we have different actions depending on the type of work or deploy issues. The notification can be just a link to download a new release of the product, or some instructions to configure the product or even just an information that some situation has been addressed and the product is ready to use.  
Waiting For Customer Eventually, the work can't be done because some information or consideration from the customer. So this is a kind of "hospital" area, where the work stays stationary until we get the information and can proceed in WIP.  
Released Queue That is the real output of the system. After we send the notification, we move the card to the release area, and the stop button of the cycle time clock is pressed.   
Table 1: Stages of our Kanban System 
 
"Stop the Line" Signalization

One of the problems in visualizing a process as just a sequence of linear steps is underestimate those 20% of the situations that causes 80% of the problems. The linearity occurs just when you are observing in a high level view. On a daily basis, a lot of situations are happening and we have to be conscious about the complexity in handling multiple demands with different people and with different customer expectations at the same time. Implementing Autonomation can be powerful to avoid work without quality to move on through the process. A big source of quality problems generated by complex trade-offs when the work is in progress can be avoided. Just put your tools to send you some signs when possible anomalies are in place.     

As an example, we have a sign that appears on our board when we get suspicious about the quality of a build generated by some modification in the product. This is quite different than the Continuous Integration sign (that we also use to check several aspects of the code base). A new release of the product will be only inspected after a successful CI build. If some quality issue is found during the inspection process, the kanban card will be moved to the feedback area of the team member who first implemented the modification. Meanwhile, if we have any new build (even from a different team member) that has just been moved to the release ready area, sharing the same code branch of the suspicious one, the board will signalize the problem as you can see in figures that show the release ready queue.

The lesson here is that any process is rich in opportunities to fail. The idea is just get these signs and just "stop the line" until the team becomes confident again to continue the flow.

Signalizing Kanban Movements

When you have a system where the kanban movements are quite frequent, with a lot of movements on the board daily, the ability to follow this movements becomes very important. It is also common that two or three team members are somehow collaborating to deliver the same unit of work. So a mechanism to let the Team know about the life cycle of the card as it is flowing through the system is necessary. 

The mechanism that we have been using to keep the team up-to-date is a system task bar notification tool (see Figure 8). Clicking on the notification window will send you directly to the details of the kanban card (Figure 9). 
 

Figure 8: Signalization of a Kanban card movement 

Signs of Collaboration

One of the ways to see if your team is collaborating to get the things done is observing how they communicate with each other. Is the communication rich? Is it happens all the time or just when they meet each other on the stand-up meetings? Is there a way to look for signs of collaboration as the time goes on? 

We get these signs from our kanban system as well. We did that transforming our kanban cards in free spaces for open conversation. Everyone is stimulated to write short notes of anything related to that work on the card (see Figure 9). 
 
 Click to expand
Figure 9: Kanban card detail 

Every time someone attaches a note to a kanban card, the team receives the signalization with another task bar notification:
 
 
Figure 10: Signalization of a new note added to a kanban card 
 
So we use the kanban as a key element to connect the process of management to the process of communication. That became a huge element of leverage in our collaboration model.

Signs can point you to Technical Artifacts

In software development, management and technical activities are closely related. It is not simple to get traceability from management to code. But when you got it, your process become more reliable and a lot of facilities comes to help. In the output area of the System View you can notice that some kanban cards have a build number near it. It means that we had to generate a new build for the application to deliver the associated demand.   This kind of sign combined with the type of demand show us how many changes we are doing in the software to solve bugs or to create features for sustaining without creating new value. It is just another sign that brings the waste to the surface, making the team conscious about the pain of technical debt. 

To do that, our build server was configured to update the kanban card with the build number when a new build pass by the Continuous Integration process. That kind of automation is just possible because we enforce a commit policy on our subversion repository where the developer has to inform what kanban card is associated with the changes in the code base. With this kind of policy we can go from the demand to any other important technical artifact, including how the code base was changed to attend it (see Figure 11).
 
Click to expand
Figure 11: Traceability from the customer demand to technical artifacts 

Final Words about Signs
    
Signs are good mechanism of compensation when you are trying to influence a system. To correct something that is not working appropriately, you first have to see a sign of it. Usually signs of deviations from the expected behaviour come very late. The kanban management technique is great to make these signs visible all the time. We are still looking for good ways to find these signs and improve our process.

 

Twitter for Improving Team Communication

by alisson.vale 2/21/2009 7:58:00 AM

Have you ever thought about using twitter to improve communication with your team?

I have been tweeting since early this month and definetely couldn't stop anymore.

You can follow me here: http://twitter.com/alissonvale

When I realized the great concept behind the tool (quick, open and uncomprimising communication), I decided to put our team to try it.

The results after some weeks was awesome. Now we use the tool intesively all day long.

The ability to broadcast information througth the team is powerful. You can use to simple messages like "The server x was updated.",  to give advices for co-workers like "be carefull with Visual Studio when you do this", announcements, or to talk about a new solution to some daily operation that you wish to automate somehow.

I really recommend for other teams to improve communication. 

Demand Management versus Demand Planning

by alisson.vale 2/8/2009 1:43:00 PM
 
"What strategies, principles, and methods can be leveraged to optimally match supply and demand over time?" 

That's a question that I've found in the MIT Center for Transportation and Logistic web site to describe the main objective of this research group when they're  looking for innovation in the area of industry forecasting using Demand Management ideas. 
 
The practices of Demand Management includes: 

1) "Setting customer service expectations in the long run by segmenting the customer base to offer tailored programs and differentiated services. These services might include differentiated order cycle times, Vendor Managed Inventory (VMI), and Collaborative Planning [...]

2) "Promising a customer order fulfillment date which involves gauging all current and future supply that might be used to satisfy a customer's order, in the context of anticipated demand from other customers.[...]

3) "Using decision support information to optimally enable the above processes. This information includes Activity-Based Costing, Cost-to-Serve, and Customer/Product Profitability reports

4) "Integrating the above processes so that they act in concert with each other to optimally match supply and demand over time"
 
Additionaly, I've found some interesting studies about Demand Management in Aberdeen Group, the last conclusions are: 

"the companies need to refocus their attention towards order-to-delivery excellence as a driver for demand management rather than just concentrating on demand planning (statistical forecasting). Aspects that companies should focus on include external collaboration, customer level forecasting, and integration with order management."
 
They differ Demand Management from Demand Planning as follow: 

Demand forecasting is essentially a linear process of translating input assumptions into a forecast of expected sales; demand management, by contrast, is a highly iterative process that involves driving to a revenue and profit target through prioritization of customers, channels, products, geographies and the demand stimulation programs available to the enterprise.” 
 
Finnaly, I've also found a IBM commercial paper from 2006 talking about consulting services on this matter: Demand Management: The next generation of forecasting

And a pretty interesting article focusing in IT services: A New Model for IT Demand Management


Kanban planning is all about matching supply and demand over time. So, I think that we definetely can adapt these ideas to software development and IT services operations. It seems to be a very hot topic to research when thinking in planning strategies in the kanban approach. Actually, it's kind of directly related to the differential aspects between the kanban planning process versus other methods approaches, including other agile methods.
 

Lean & Kanban Interview on InfoQ

by alisson.vale 1/24/2009 11:38:00 AM

This week an interview where I answer some question about Kanban and Lean was published on InfoQ Portal.

Check it out here:  http://www.infoq.com/br/news/2009/01/brasil-representacao-conferencia

Congratulations to Manoel Pimentel (Chief Editor of Brazilian InfoQ website) who has this iniciative to spread this work that we are trying to bring to Brazil.

There are a lot of space today to apply Lean ideas in software development, including in niches where is still difficult to stick the new Agile paradigm. Reading the interview maybe you can realize how to apply this model to common scenarios in our area.

Good reading and any feedback will be welcome.

 

Tags: ,

Linking Lean & Agile

by alisson.vale 1/16/2009 11:06:00 PM

Lean has a lot to teach for Agile practicioners. And Agile has a lot to contribute for who wants to apply Lean.

Look at this enlightening post which makes this relation more clear:

http://dnicolet1.tripod.com/agile/index.blog?entry_id=1874091

 

Lean & Kanban Conference in 2009

by alisson.vale 1/9/2009 5:26:00 PM

The first Kanban Conference for software development is already being announced for May 2009 in Miami: http://leankanbanconference.com

David Anderson is working hard to make it possible, putting together an amazing team of people that have been working with this new approach and getting excellent results.

The conference is gonna have an exclusive track for Lean presentations with very important presenters like Alan Shalloway, Dean Leffingwell and Donal Reinertsen. 

In addition, I have the great honor to be invited to present in the conference, showing our adoption case in Phidelis, our tools and practices that we are using to create a sustainable approach for software development.

Follows the title and abstract (still not official) of my presentation. It's announced but not 100% confirmed, because we need a minimum of registration to make my participation viable. 

Practical Experiences and Tools Applied to a Kanban Sustaining Engineering System

Abstract

The Kanban ideas have been changed not only the way we sustain and evolve our products, but also the way we operate our business. They've changed our working system at the level of paradigm, generating a tremendous potential of leverage by continuously transforming our way to manage and execute our technical operations.  This presentation will show you how we applied these ideas at Phidelis Technologies, a software development company in Brazil dedicated to create software solutions for the educational segment, mainly the one formed by big universities and medium-size schools. 

At Phidelis, we are using a whole set of open-source tools that help us to delivery features and services, while an electronic Kanban board give us full visualization and control of the working in progress. This board became our central source of information about the process and a great visual representation of what is going on a daily basis. It allow us to get instantaneous indicators about the healthy of the process and the state of the system. Average cycle times, use of resource, inventory levels, multi-tasking overheads, and others indicators are intensively used to manage the process. The talk will focus on the demonstration of tools and techniques that we used to create our pull-system and to optimize all the value chain, including services and support operations.

In this session participants will also know about: 

  • how we are doing to organize scope (what) and priorities (why) in function of time (when);
  • the strategies that we have been using to reduce variability and smooth the flow in our process;
  • experiences in trying to create mutual trust relationships with customers while they are competing by your project resources and how do we are trying to apply Kanban and Lean concepts to address this problem;
  • the engineering practices and release management issues and how they deeply influence our process.  
  • how Kanban has been important in helping us to get a better understanding of what-we-do, why-we-do and how-we-are-doing.

All topics will be discussed in the context of the tooling set that we are using to implement Kanban. There will be a quick demo of these tools at the end. 

 

 

Tags:

O Dilema Ágil

by alisson.vale 11/15/2008 11:25:00 AM

Hoje vive-se o dilema de encontrar o limite adequado entre o craft e o lean. Quanto do processo de software deve ser "criação" e quanto deve ser "produção". O quanto ele deve ter de "artesanal" ou de "industrial". Hoje há dois extremos em agile. E é difícil saber onde se posicionar entre eles.

Talvez seja isso que torne o paradigma tão forte conceitualmente. Software precisa de qualidade e excelência (craft), mas também precisa de gestão, números e tendências (lean)... quanto é necessário de cada um para compor um bom projeto de software? Como nivelá-los de acordo com a situação e com o cenário em que se atua?

Por outro lado, há um outro fenômeno interessante. Muitos querem usar Agile, e não é fácil em muitos cenários. Enquanto uma parte das pessoas tenta proteger o novo paradigma de conceitos atrelados ao velho, outros tentam adaptá-lo a esses conceitos para que possam entrar no circuito ou expandir sua influência na indústria como um todo. Algumas vezes para dar respostas a nichos de mercado que não querem assumir o risco ou não tem certeza sobre os efeitos gerados por uma mudança tão brusca. É por isso que quando, por exemplo, a palavra CMM se junta à palavra Ágil em algum momento, a internet recebe uma enxurrada de e-mails, posts, etc com opiniões contra e a favor. O interessante que tanto quem é contra quanto quem é a favor clama por defender ou se beneficiar dos mesmos princípios. Mais uma vez, o que é certo? o que é errado? Talvez não se ter certeza sobre o que é certo e o que é errado seja a nossa principal qualidade como comunidade.

O que se vê nesse momento é que o fato de Agile ter sido criado em cima de valores e princípios, e o fato de ele ser representado principalmente por comunidades virtuais, o torna mais poderoso do que se pensa. Hoje não há ninguém que controle Agile. Nenhum dos autores do manifesto, ou mesmo um pequeno grupo deles, pode, isoladamente, controlá-lo. É um movimento de vida própria. E ele vem conseguindo oferecer as peças que precisamos para o quebra-cabeças que é desenvolver software. E o que o mantém assim é o equilíbrio gerado pela existência de diferentes abordagens e soluções para um número ilimitado de realidades e cenários de negócio que temos por aí.

O Movimento Ágil é hoje um Sistema Adaptativo Complexo, como descrito pelo Highsmith. Ele começa a atuar sob regras que o fazem assumir "Comportamentos Complexos", onde "Complex Behaviour = Simple Rules + Rich Relationships". Em outras palavras, a comunidade hoje funciona assumindo os mesmos comportamentos esperados em projetos Ágeis de software: emergência, adaptabilidade e colaboração, tudo isso sob a proteção de quatro regras simples.

Em resumo, o que faz Agile hoje ser tão poderoso são as polêmicas, as discordâncias. Elas mantém o paradigma atrelado ao bom senso. Nenhum dos lados deixa o modelo estável. Há dois extremos, e é a experiência e o estudo de cada um de nós que nos ajudará a localizar o ponto ideal entre eles. Nesse momento, a única certeza que se tem é que nenhum dos dois extremos é o melhor lugar para se posicionar.


A História de um Sistema Kanban

by alisson.vale 8/26/2008 7:47:00 PM

Um dos aspectos mais interessantes dos métodos ágeis é sua estruturação conceitual.
Oficialmente são quatro declarações de valor que nos inspiram, um pequeno conjunto de princípios que nos guiam e uma grande quantidade de métodos que nos ajudam a estabelecer "como" as coisas devem ser feitas. Cada método estabelece seu próprio conjunto de pressupostos e práticas. E é comum equipes de projeto adotarem práticas de diferentes métodos enquanto os adaptam às suas realidades.

Depois de quase cinco anos trabalhando com desenvolvimento ágil, nosso dia-a-dia de trabalho nos levou além das fronteiras estabelecidas pelos diversos métodos. Algumas práticas se consolidaram e hoje estão imersas no nosso cotidiano de tal maneira que sem elas, tudo pára. Outras foram vencidas pelo nosso processo de adaptação e acabaram em desuso.

Em janeiro desse ano, nosso processo adaptativo cruzou o caminho de uma nova abordagem hoje especialmente defendida e divulgada por David Anderson e Corey Ladas. Essa abordagem usa um kanban como elemento central para fazer fluir todo o trabalho necessário para tirar uma demanda da lista de desejos do cliente, transformando-o em software funcional. O foco do modelo é a entrega de software just-in-time. Isso significa essencialmente entregar o software certo na hora certa e fazer isso repetidamente com o objetivo de diminuir ao máximo o tempo entre a demanda e a entrega, por meio da detecção e eliminação das perdas que ocorrem nesse intervalo. Na prática, essa abordagem abre todas as portas para uma boa implementação Lean e pode ser uma boa opção em determinados tipos de projetos.

O kanban é o instrumento utilizado para amortecer as demandas e permitir o estabelecimento do "fluxo" e do "pull system" tão necessários em ambientes que querem se beneficiar do modelo de produção enxuta (Lean). Até aqui não há nada novo. Projetos ágeis de modo geral já se beneficiam do uso de kanbans já a bastante tempo. No entanto, esse modelo extrapola o tradicional quadro de 3 colunas (Pendente, Em andamento e concluído) para um sistema que sinaliza e restringe o trabalho de tal maneira que qualquer "hands-off" é amortecido pelo kanban e "puxado" (ao invés de alocado). O objetivo é estabelecer o fluxo unitário, um fluxo de valor que começa na demanda e finaliza com a entrega efetiva para o cliente.  Assim, o desenvolvedor puxa do backlog de demandas, quem inspeciona puxa do backlog de inspeção, quem faz deploy puxa do quadro de itens resolvidos e por aí vai. O trabalho é primeiro sinalizado e só depois é puxado por quem irá executá-lo, e este só puxa depois que sinaliza o trabalho que acabou de fazer de forma que a próxima etapa do processo possa puxá-lo novamente até que ela chegue ao cliente. Ou seja, quem termina sempre sinaliza o item n e então puxa o n+1.

Nesse modelo, não há iterações. Há um fluxo contínuo de entregas e a previsibilidade dessas entregas se dá com base no SLA (Service Level Agreement) conquistado pela equipe. Para chegar nesse ponto, a equipe precisa medir e controlar seu Lead Time e esse será o principal parâmetro de controle da sua produção. Como não há iterações, o backlog pode ser alterado o tempo todo, cartões podem ser removidos, inseridos ou reordenados a qualquer momento.

Já o esquema de priorização se adapta bem a um cenário onde há competição pelo recurso, ou seja, um determinado número de clientes compete pelos mesmos recursos do projeto. Nesse cenário, a tarefa de priorizar não pode ser dos clientes, mas de um elemento intermediador capaz de utilizar diferentes critérios para o estabelecimento da ordem pela qual as entregas devem sair. A priorização será o resultado de uma análise que leva em conta uma série de aspectos circunstanciais que envolvem questões técnicas, comerciais e de negócio, mas o aspecto mais relevante é o chamado Cost of Delay, ou o custo decorrente de se fazer ou não uma entrega hoje, amanhã ou na próxima segunda-feira.
 
No que diz respeito a estimativas, a orientação é não estimar. As demandas são categorizadas para composição do SLA, não estimadas. E essa categorização é feita com base no feeling e na experiência da equipe. As expectativas dos clientes devem ser adaptadas à capacidade de produção da equipe.

Hoje tenho visto a utilização dos termos Kanban Development ou Sustaining Enginnering para identificar esse modelo. Mas independentemente do modo como ele é chamado, aqui na empresa ele tem sido uma grande fonte de inspiração para avançarmos na organização do nosso modelo de trabalho.

No meu entendimento, essa abordagem não deve substituir os métodos ágeis mais utilizados atualmente, mas é uma boa alternativa para projetos que não conseguem atender a alguns de seus pressupostos. Ele se adaptará bem a projetos que:

1) Já mantém o(s) seu(s) produtos em uso em ambiente de produção;
2) Demandam re-organização constante do backlog;
3) Há forte competição pelo recurso (o tempo investido nas features atende a diferentes interessados)
4) É viável a utilização de SLA (Service Level Agreement) como instrumento de negociação, planejamento e prestação de contas junto aos clientes;

A seguir eu descrevo um pouco da nossa implementação dessa abordagem.

O elemento centralizador desse modelo é o quadro kanban de acompanhamento do trabalho. Ele identifica a parte mais relevante do backlog e também o chamado Work in Process. Nosso quadro Kanban foi evoluindo na parede até chegar ao modelo apresentado na Figura 1.


Figura 1: Modelo kanban utilizado na parede.

O kanban era composto por cartões semelhantes ao apresentado na Figura 2. Mandamos confeccionar esses cartões de forma a apresentarem informações relevantes que não só nos dessem um mapa visual do trabalho que precisava ou que estava sendo executado, mas também que permitisse o registro de dados que tínhamos a intenção de monitorar (como o tempo que o cartão passava em cada estágio do nosso fluxo de trabalho).


Figura 2: Modelo de cartão utilizado no kanban

Criamos três categorias de cartões utilizando como critério o benefício que aquele tipo de trabalho gerava para a equipe:

  • Cartões Verdes (Investimento): Agregam valor ao produto (novas features)
  • Cartões Vermelhos (Custo): Implementação necessária para manter o produto ou o cliente em pleno funcionamento operacional (defeitos, extração de dados, análises de cenários complexos, infra-estrutura, etc). Normalmente cartões vermelhos representam o que eu costumo chamar de aqueles-originados-devido-a-débito-técnico-aparente ou coisas-que-nos-distraem-de-agregar-valor-ao-produto, por isso essa cor gritante.
  • Cartões Amarelos (Improvement): Agregam valor ao modelo de execução ou ao ambiente de trabalho (Auto-improvement);


Cada cartão recebe uma sinalização que indica a sua expectativa de tamanho, o que é conhecido como T-Shirt Sizing. No nosso caso cada cor representa um dos 3 tamanhos possíveis (Small, Medium ou Large) ou simplesmente P,M e G.

Nosso objetivo é então medir quanto tempo cada tipo de cartão leva para percorrer todo o fluxo de trabalho, saindo do backlog até o status de entrega. Essa métrica é bastante conhecida no modelo Lean como "Lead Time" e é um dos principais elementos para monitoramento da eficiência do sistema de trabalho, além de ser útil para a obtenção de estimativas de datas para entrega junto aos clientes.

Na nossa implementação, o backlog do kanban é dividido em duas áreas na parte esquerda inferior do quadro. A primeira contém os 7 cartões de mais alta prioridade e contém aquelas entregas que atingiram o estágio que chamamos de LRM (Last Responsible Moment). Ou seja, cartões nesse estado requerem a atenção imediata da equipe, não por uma questão de urgência, mas porque ao compor o momento atual com o Lead Time da equipe, percebe-se que estamos no momento certo para implementá-los. A segunda área contém os cartões que "provavelmente" serão trabalhados nos próximos trinta dias. Os outros cartões do backlog ficam guardados para não poluir o quadro.

Quando um desenvolvedor fica disponível ele simplesmente "puxa" o cartão que está no topo da área LRM (cartão circulado em vermelho no topo dessa área) para a área associada ao seu nome. A implementação envolve análise, documentação, codificação e testes e está associada a prática de "Done Definition". Ao finalizar essa fase de implementação, o cartão é colocado na área de inspeção para que um outro membro da equipe possa "puxar" o cartão para realização da inspeção.

Após essa inspeção, o cartão deixa o kanban da equipe de desenvolvimento e segue para um novo kanban, dessa vez da equipe de atendimento ao cliente. Essa equipe puxa novamente o cartão para fazer o processo de deploy da demanda, explicando, notificando, instalando, tirando dúvidas ou executando qualquer operação que precise ser realizada no ambiente do cliente. Veja Figura 3:

 

Figura 3: Kanban na área de atendimento

Alguns pontos que achamos interessantes nessa abordagem:

- O foco é completamente desviado para o controle e a otimização da eficiência do sistema de trabalho por meio do monitoramento do seu rendimento (Throughput);
- Métricas simples (como Lead Time) mantém a equipe focada no objetivo global (rendimento do sistema);
- Controle do WIP (Work In Process). O Kanban limita o trabalho em execução, impedindo a sobrecarga do sistema e forçando-o a trabalhar com sua capacidade real; Um novo cartão só entra em WIP se um outro sair primeiro;
- A demanda deve se ajustar à capacidade de produção do sistema (e não o contrário). Se a demanda não pode se adaptar ao fluxo, deve haver investimento no sistema para que ele aumente o seu rendimento.
- Exposição imediata dos problemas: Os problemas são revelados e resolvidos no momento em que eles surgem. Isso acontece porque o modelo depende do fluxo. Se um problema interrompe o fluxo, o trabalho de todos é afetado, o que faz com que ele seja resolvido mais rapidamente;
- O esforço para estimar é progressivamente reduzido até um nível mínimo;
- Estimula o uso de práticas ágeis de engenharia e acompanhamento (controle visual, daily meetings, pair programming, tdd, refactor, CI, etc) na medida em que a qualidade não pode mais depender de inspeções que só iriam acontecer muito tempo depois do desenvolvimento;
- Todo o trabalho da equipe é convertido e mapeado em itens entregáveis que tem valor real ou para o nosso produto (cartões verdes) ou para nossos clientes (cartões vermelhos);
- Todo o trabalho da equipe está fisicamente visível, nada fica oculto;
- Todos os entregáveis passam um-a-um pelos mesmos estágios permitindo a implementação do fluxo unitário adotado no modelo Lean;
- Algumas ferramentas Lean são mais facilmente aplicáveis. Veja Figura 4.

Figura 4: Value Stream Map (Clique para expandir)
 
Quando você consegue trabalhar em termos de fluxo, uma coisa realmente interessante acontece: você começa a perceber as perdas. A redução de perdas é um dos elementos mais importantes da abordagem enxuta e é realmente difícil enxergá-las sem um fluxo estabelecido. Depois de meses trabalhando dessa forma, as perdas apareciam para nós como painéis de neon piscando na nossa frente.

O que mais nos incomodou por muito tempo foi a redundância do controle visual que tínhamos no nosso quadro na parede, com o necessário controle eletrônico que mantínhamos por meio de um sistema de tickets (o Mantis) e pela necessidade de registrar os tempos para mudança de estágio nos cartões para medição do Lead Time em planilhas eletrônicas. O quadro ficava desatualizado com mais freqüencia que gostaríamos e a movimentação dos cartões dependia da presença física das pessoas no escritório. Em tempos de internet banda larga e remote desktop, o recurso de trabalhar em casa era cada vez mais usado. Resumindo, qualquer cartão fora de posição nos incomodava demais.

A solução veio por meio de um esforço conjunto da própria equipe, onde alguns membros trabalharam voluntariamente fora do seu horário de trabalho para passar o kanban para o meio eletrônico. Em menos de uma semana, conseguimos aposentar o quadro da parede e começar a usar o que chamamos de kanban eletrônico. Ele apenas lia os dados do sistema de tickets e os apresentava exatamente da mesma forma que estávamos acostumados a ver no quadro da parede. Veja Figura 5 (Clique para expandir).

Figura 5: O kanban em sua forma eletrônica (Clique para expandir)

No modelo eletrônico, a área "Entregue" só é descarregada quando vira o mês. Essa abordagem ficou bem melhor do que no quadro físico, onde os cartões entregues não permaneciam nem um dia sequer, pois eram imediatamente retirados para alimentação da planilha eletrônica para cálculo do Lead Time. O acúmulo de cartões na área de entregas dá uma sensação de produtividade para a equipe, já que ela consegue visualizar o resultado de todo o seu trabalho no mês.

Com o tempo, o kanban começou a nos mostrar também as métricas calculadas instantaneamente (eu precisava de várias horas só para calcular manualmente o nosso lead time e só ficávamos sabendo do número no fim do mês). Hoje utilizamos duas métricas principais:

a) Lead Time por categoria: revela o tempo médio necessário para fazermos nossas entregas por categoria;
b) Nível de Investimento no Produto: revela nossos níveis de "débito-técnico-aparente";


Figura 6: Nível de investimento no produto

O kanban também passou a agregar ferramentas de colaboração, como a exibição de posts publicados pela equipe no nosso blog interno. A idéia é extrapolarmos também para outras fontes rss como o nosso wiki de documentação, os e-mails da nossa lista interna de discussão e futuramente do twitter da equipe.

Figura 7: Team blog exibido no kanban

Por fim, ao passar o kanban da parede para a tela do computador, há o grande problema em se perder o benefício do controle visual que o kanban oferece. Mas nada que uma boa TV não possa resolver...

 Para saber mais sobre Kanban Development:

Lista de discussão no Yahoo Groups
Agile Management - David Anderson
Corey Ladas

Pressupostos

by alisson.vale 6/21/2008 12:35:00 PM

Pressupostos são hipóteses que precisamos admitir antecipamente para que possamos aceitar ou compreender as teorias que delas decorrem. Eles são o ponto de partida para justificar as abordagens adotadas. Para optar entre uma ou outra linha de pensamento é necessário antes de mais nada estabelecer concordância com eles.

Quando comparamos o modelo Ágil com o Waterfall eu acredito em quatro pressupostos básicos sobre a qual precisamos nos posicionar antes de partir para uma ou outra abordagem.

São eles:

  Waterfall Agile
Sobre a natureza das atividades de desenvolvimento de software
Produção taylorista
Criação colaborativa
Sobre o modelo de qualidade Seguir especificações Satisfazer usuários e clientes
Sobre a forma de organizar as pessoas Grupos de Trabalho Times de Projeto
Sobre o modelo de gestão Gestão de escopo fixo Gestão de escopo variável

Afinal, software deve ser produzido de modo fabril ou criado colaborativamente? Para ter qualidade ele deverá seguir rigidamente especificações pré-acordadas ou ser capaz de satisfazer os anseios e necessidades de usuários e clientes? Como devemos organizar as pessoas? Por meio de um grupo de trabalho com tarefas pré-definidas em um processo controlado? ou criando times de projeto com liberdade para definir e otimizar o seu próprio modelo de trabalho?

Talvez a pior escolha, nesse caso, seja não fazer uma escolha. O modelo teórico que vai embasar as suas práticas de trabalho será decorrente dessa escolha. Há uma conexão direta entre esses pressupostos, os princípios que lhe endereçam, e aquilo que precisamos praticar no dia-a-dia para implantá-los. Quando não há rigidez na escolha do conjunto adequado de pressupostos, o modelo teórico adotado se enfraquece, as práticas anulam-se umas às outras e os riscos de insucesso aumentam.

Cenários para Testes Automatizados com db4o

by alisson.vale 6/17/2008 9:43:00 PM

Recentemente chegou às bancas a edição de número 09 da revista MundoDotNet. Essa edição conta com um artigo onde descrevo uma técnica interessante para administração de cenários de testes implementada com sucesso pelo meu colega Paulo Cesar Fernandes aqui na empresa. 

A técnica consiste em interceptar a execução de métodos de forma a armazenar objetos construídos durante a execução da aplicação em um banco de dados orientado a objetos. Assim, esses objetos podem ser carregados na memória no momento em que são necessários para o SetUp de testes unitários.

Na verdade, o artigo foi um pouco além de descrever a técnica. Grande parte do texto é dedicada a explicar as raízes e as várias formas em que técnicas de teste podem ser utilizadas para aumentar a qualidade do software no contexto de um projeto ágil.

Alguns tópicos e trechos do artigo

Uma nova visão para as atividades de teste de software:  A relação das atividades de teste com qualidade. Algumas das idéias de Deming que podem ser utilizadas em desenvolvimento de software. A relação de Deming com o estilo de administração japonês que levou ao Movimento Ágil e as técnicas que este movimento trouxe de forma a permitir a redução de inpeções no software.

Testes como oportunidades para aumentar a qualidade: Em projetos ágeis, testar significa criar oportunidades para que o produto absorva elementos de qualidade de forma permanente. "Um teste automatizado injeta qualidade dentro do software".

Quando testes automatizados podem aumentar a qualidade do processo:  Testes de aceitação automatizados criam as condições para melhoria do processo de desenvolvimento na medida em que estabelecem um instrumento de colaboração e de comunicação entre clientes e desenvolvedores. "o propósito de um teste de aceitação é aumentar a qualidade do processo de comunicação necessário para as atividades de análise e levantamento de requisitos, por meio de especificações executáveis".

Quando testes automatizados podem aumentar a qualidade do produto: Aqui a defesa é que o uso de TDD aumenta a qualidade interna do produto na medida em que cria as condições para a evolução sustentável do software. "o propósito do teste unitário é influenciar o design da aplicação, permitindo que ele evolua sem sofrer os danos causados pelo seu processo de degradação".

O artigo também oferece um rápido exemplo de como uma ferramenta como o Fitnesse pode criar especificações executáveis fáceis de ler e de produzir. Conforme imagem a seguir:

 




A abordagem Ágil oferece uma nova perspectiva para endereçar qualidade de software.
Acho que esse artigo dará ao leitor uma boa idéia do que isso quer dizer.

About the Autor

Alisson Vale Alisson Vale
Project Leader at Phidelis Tecnologia.


E-mail me Send mail
      Sign in

Recent posts

Recent comments

Termo de Responsabilidade

Disclaimer: The content of this site represents merely personal opinions.