The 7 Sins of Software Development


waste_elimination
Waste elimination is one of the Lean principles and one of the most effective ways to increase quality and reduce cost. While products and services differ between industries, waste or muda – everything that does not add value from the perspective of the customer, or any material/resource beyond what the customer requires and is willing to pay for – can be found in any type of business, such as in the software development.

Mary and Tom Poppendieck – two of the leaders in describing how to implement Lean to software development – have translated the well-known “Seven Wastes of Manufacturing” into “The seven Wastes of Software Development”.

1. Partially done work (in Mfg.: Inventory): refers to any partially done software (Work In Process) that is not checked-in, integrated, tested, or deployed. Until that partially done software is integrated with the rest of the software development and then released into production, you don’t really know if it will eventually work or solve the business problem defined weeks/months ago; maybe at the time of release it is already obsolete resulting in a huge financial problem. In addition, partially done software gets in the way of other developments, so any work that is not finished triggers, for example, huge delays in the development (Waste #6).

2. Extra features (in Mfg.: Over-Production): refers to any feature added to the final product that the customer doesn’t need, want or even ask for. Any extra feature increases an unnecessary complexity, adds a potential failure point, and maybe it will become obsolete before is used. Not forgetting that as any feature, it has to be tracked, compiled, integrated, tested, and lifetime maintained.

3. Relearning (in Mfg.: Extra Processing): the first approach for this waste was Extra-process that focused on extra activities done that do not add value like excessive documentation or customer’s signoffs. After more understanding of this waste, it has been modified with the name of Relearning,referring to repeating a value adding activity spending time relearning things we have already learned. e.g.: undocumented code force to a new developer to “relearn” what was already learn for the previews programmer; a solution of an undocumented problem solved have to be relearn when the problem reappear.

4. Handoffs (in Mfg.: Transportation): refers to knowledge lost every time you hand a deliverable off to any team member (analyst, designer, programmer, tester, etc.). It’s estimated that approximately 50% of tacit knowledge – know-how possessed only by an individual and difficult to communicate to others via words and symbols – remains with the creator of the document and never get handed off to the receiver.

5. Task switching (in Mfg.: Motion): refers to time wasted when the same resource is assigning to multiple software projects. A person who have to switch from project A to project B needs a lot of time preparing himself – fiscally and mentally – and setting the environment to start working on project B. If that time is not considered in the project estimation, it will be difficult to finish both projects on stated dates. Thus, the Lean principle “Delivery as fast as possible” will not be accomplished.

6. Delay (in Mfg.: Waiting): refers to waiting for things to happen. That introduces discontinuity, triggers the appearance of all the other wastes, and keeps the customer from realizing value as quickly as possible. E.g.: delay in get the team conformed, waiting for approvals, delays due to excessive requirements documentation.

7. Defects (in Mfg.: Defects): refers to any error, bug, failure that produces an unexpected result. The formula the Poppendiecks use to quantify the amount of waste caused by a defect is: WASTE = Defect Impact * Time defect goes undetected. They said that a critical defect that is detected in 3 minutes is not a big source of waste as a minor defect discovered weeks later.

CONCLUSION
Out there are tons of tools we can use to eliminate wastes, but first of all we have to learn to see waste, a non-easy activity. Of course, there is no “silver bullet” to solve waste problems, but regardless of the methodology you use in your software company – CMMI, Agile, PMI, or a hybrid of all of them – Lean principle ‘Eliminating waste’ has huge value to get better quality, reduced cost, and faster delivery.

The more you learn about Lean, the more you will realize how much value has it when applying to software development projects. Let’s do a quick test: pick one of the wastes and see if you can identify activities in your job that do not add value and can fit perfectly under that waste umbrella. 

What it would be the best way for you to get rid of those activities? Share your thoughts!

REFERENCES
– Lean Software Development: An Agile Toolkit by Mary and Tom Poppendieck – 2003
– Implementing Lean Software Development: From Concept to Cash by Mary and Tom Poppendieck – 2006

NOTE
Originally, I wrote this article for Christian Paulsen ’s Lean Leadership blog.
Image provided by: digitalart – FreeDigitalPhotos.net

Lean Software Development Principles


lean
Lean Software Development (LSD) is a term originated from a popular book by the same name, written by Mary and Tom Poppendieck. In such book, they presented the first translation of Lean principles to software development, plus 22 thinking tools to help translate those principles into agilepractices. Having its roots in the well-known Toyota Production System, LSD focuses on helping software development companies to optimize their process, solving problems that old methodologies like waterfall have, and delivering software with better quality, reduced cost, and faster delivery.
Let’s do a review of the 7 LSD principles:
1. Eliminate Waste: take out all activities that do not add value from the perspective of the customer; in other words eliminate any material/resource beyond what the customer requires and is willing to pay for. The 7 Sins of LSDare:  Partially done work, Extra features, Relearning, Handoffs, Task switching, Delay and Defects.
2. Build Quality In: Mistake-proof your code from the beginning to prevent appearance of defects late at the end of the process.  One tool used to do that is test-driven-development where developers write unit and acceptance tests before they write the associated code. Coding and testing the system as often as possible working with short iterations, helps to reduce the appearance of defects late in the process. You can consider your development process defective if you assume that verification process is the only time when you could find defects, queue them (partially done work, waste#1) and then perform almost endless test-and-fix cycles.

3. Create Knowledge (aka Learn constantly or Amplify learning): “Planning is useful. Learning is essential”. Software development is a knowledge-creating process; recording the team’s knowledge is an efficient way to reduce waste of relearning and make the tacit knowledge more explicit and available for everyone. Also, software development is unpredictable so we shouldn’t base our development process on a plan considering it as a fact (can we predict the future?); we should take it as a forecast and work with short cycles, change-tolerant codes, and iterations with refactoring – improving the design as the system develops- so we can generate knowledge, have quickly feedback, and prevent of making early-irreversible decisions. In that way, you will have a development process that encourages systematic learning throughout the development cycle, so we can respond quickly and correctly to events as they occurred, delivering more predictable outcomes.

4. Defer Commitment (aka Decide as late as possible): the more information you have, the better decisions you make. Developing a robust, change-tolerant design and schedule irreversible decisions for the last moment until uncertainty is reduced and before it is too late, is the best option to not being locked in a critical design decision made in the incorrect time. A software system doesn’t need complete flexibility, but it does need to maintain options at the points where change is likely to occur.
5. Deliver Fast: it refers to companies can deliver faster than customers can change their minds. To achieve that you should focus on 2 main practices:
– develop your product driving down cycle time (short iterations), with small batches of requirements and fewer things-in-process, so at the end of each iteration, you can have a rapidly feedback from your customers and decide how to continue;
– have a fast-moving self-directed development team with excellent reflexes and a disciplined, stop-the-line culture.
You can’t sustain high speed, unless you build quality in.
6. Respect People (aka Engage Everyone or Empower the team): Respect means that instead of telling people what to do and how to do it, teams are given general plans and reasonable goals, and are trusted to self-organize to meet the goals (semi-autonomous teams). Engaged, motivated, thinking people with proper training, coaching and assistance, are the basis of competitive advantage in today’s economy.
7. Improve the System (aka See/Optimize the whole): it refers to improve and control your entire value stream – from customer request to deployed software – instead of just optimize part of it (sub-optimization). One commonly practice used to optimize your system is the use of metrics, but the same concept applies: when a measurement system has too many metrics the real goal of the effort gets lost. The solution is to “Measure UP” – find a higher-level measurement that will drive the right results for the lower level metrics and establish a basis for making trade-offs.
CONCLUSION
These principles are universal guiding ideas, the application of them into a software development company requires analysis, interpretation, and an exhaustive work to translate them into appropriate practices that can be apply to a particular environment.
The more you learn about Lean, the more you will realize how much value it has when applying to software development projects. And always remember these: rapid delivery, high quality, and low cost are fully compatible; learn from experiences and never stop getting better!

REFERENCES
– Lean Software Development: An Agile Toolkit by Mary and Tom Poppendieck – 2003
– Implementing Lean Software Development: From Concept to Cash by Mary and Tom Poppendieck – 2006

NOTE
Originally, I wrote this article for Tim McMahon’s A Lean Journey blog.
Image provided by: Stuart Miles – FreeDigitalPhotos.net

Quality Culture and Feelings – Interview

quality_interview

Culture can be defined in many ways, it is:
– a set of shared beliefs, attitudes, values, goals, and practices that characterizes an organization;
– the way employees actually behave, think and believe – “the way we do things around here”;
– the personality of an organization;
– a “walk the talk”.

A Quality Culture is a culture throughout the organization that continually views quality as a primary goal. It is the pattern—the emotional scenery—of human habits, beliefs, commitments, awareness, and behavior concerning quality. (Juran)

That ‘emotional scenery‘ is the new topic ASQ CEO Paul Borawski proposed to discuss this month in his blog. He asked: When you’re in a culture of quality, how does it feel? How do you feel?

In order to answer those questions and more, I thought it would be really interesting doing an interview to one person who has more than 20 years of experience working in different cultures; he is Christian Paulsen, a Senior Lean Six Sigma Consultant who helps companies optimize performance.and adds value to organizations by driving continuous process improvements and bottom line cost savings. He authors Lean Leadership and is a regular contributor to the Consumer Goods blog.

INTERVIEW

Q1: Organization name and position. 

CPaulsenA1: Incito Consulting Group, Senior Lean Six Sigma Consultant. I worked in several food manufacturing plants in a variety of leadership roles for over 20 years before moving into consulting.

Q2: Is the organization you work for working on a Quality Culture? If yes, how does the organization build a Quality Culture? 

A2: Yes, Quality is critical for any company that wants to be world class and even to stay competitive in today’s competitive business environment. Lean Manufacturing is known for reducing waste and saving companies money. Unfortunately, companies that focus on short-term savings often do more harm than good. This damage will hurt the bottom line and the company culture including the Quality Culture. The best Lean Six Sigma companies look at all aspects of the business. They improve Safety and Quality and other Key Performance Indicators through sustainable process improvements while eliminating waste and improving the bottom line. Companies that build the systems to sustain these improvements are also building a Quality Culture.

Q3: What do you do to maintain, strengthen and keep improving the Quality Culture? 

A3: That’s an interesting question because Quality Cultures and our business environment demand continuous improvement. The Dow Chemical Company Quality Policy states in part that “Quality Performance is a commitment to excellence by each Dow employee. It is achieved by teamwork and a process of continuous improvement.” 
You need to come to work every day asking how you can improve the process. You cannot afford to accept that status quo if you want to have a Quality Culture. Look at what is important to the customer and the consumer. Be relentless about eliminating waste and defects from their perspective. Use the Deming (PDCA) or DMAIC Cycle and build systems so your improvements are sustainable.

Q4: What attitudes support the success of a culture of quality? 

A4: Leadership must convey their relentless pursuit of excellence. There must be a commitment to excellence that is evident in leadership decisions on a consistent basis. An attitude that a short-term sacrifice to do what is right over the long haul will show others that leadership is serious about their Quality Culture.

Q5. What are the feelings you associate with a culture of quality? How do you feel working in a Quality Culture? 

A5: One can and should have a feeling of a job well done when delivering a Quality product to their customer. Quality Cultures can instill confidence as well. One should feel confident when they do the right things for the right reasons and are getting positive reinforcement for doing the right things. It’s a lot better than looking over your shoulder.

Q6: Creating a positive culture is an important factor in building loyalty and retaining key personnel. What does the organization you work for do to keep their employees committed to the company, and to the quality culture?
A6: A key principle of Lean is to treat people with respect. You need everyone’s commitment and support to create and sustain a Quality Culture. You need them to improve the process. You need them to do the right things because they believe it. You need them to make a difference. This won’t happen without that 3rd Shift Operator that makes a critical Quality decision while you are home in bed. I have never met anyone who truly felt respected, thought they made a difference at work, and believed they were working in a Quality Culture that was not loyal. You can guess what happens to someone’s loyalty if they feel disrespected, don’t believe they can make a difference, or don’t believe they work in a Quality Culture. There may still be some loyalty but they are hanging on for other reasons and there may not be as much as you would like.

Q7: If you need to hire personal, what are the attributes do you look for in the people you hire in order to figure it out if those applicants will fit perfectly into your organization and contribute to the quality culture goals?
A7: I like to look for people who can demonstrate their dedication producing Quality products in their past experience. 

Q8: Do you use any metric to measure your quality culture, like complaint rates? If yes, what impact does it have on the organizations Quality Culture? 

A8: Food manufacturing plants should use metrics like Right-the-First-Time rates, Consumer Complaint Rates, Cost-of-Quality, and audit results. These metrics can and should help you move the needle in the right direction. They will need to be part of everyone’s top goals year after year.

Q9: Pros and cons, if exists, of working in a quality culture. Final words- thoughts.
A9: We have already discussed a lot of the positives. I think that most people agree that a Quality Culture is best for the long-term health of their business. Have you even met anyone who wanted less for his or her money? The down side is that it isn’t easy. Everyone would be doing it if it were. The hard part is sticking with it for the long haul. Do the right things for the right reasons over the long haul and you will have a Quality Culture.

CONCLUSION
No organization is without culture. No one perfect culture exists. But having a quality culture focused on exceed customer expectations, with role model leaders committed to quality and empowered employees, you can achieve the “right” culture for your organization. But, do not forget that the key point to stay in business is to keep improving!
St. Jerome said: “Good, better, best. Never let it rest. ‘Til your good is better and your better is best.”

Are you working on a Quality Culture? Share your “feelings” with us!

Many thanks to Christian Paulsen for taking your time answering to the interview; I really appreciate it.

Guest Post: Lean Software Development Priniciples

Lean Software Development (LSD) is a term originated from a popular book by the same name, written by Mary and Tom Poppendieck. In such book, they presented the first translation of Lean principles to software development, plus 22 thinking tools to help translate those principles into agile practices. Having its roots in the well-known Toyota Production System, LSD focuses on helping software development companies to optimize their process, solving problems that old methodologies like waterfall have, and delivering software with better quality, reduced cost, and faster delivery. 

Let’s do a review of the 7 LSD principles:

1. Eliminate Waste: take out all activities that do not add value from the perspective of the customer; in other words eliminate any material/resource beyond what the customer requires and is willing to pay for. The 7 Sins of LSD are: Partially done work, Extra features, Relearning, Handoffs, Task switching, Delay and Defects.
                                                  ……………………………………………………

It is a pleasure for me to be a Guest Blogger today at Tim McMahon “A Lean Journey” blog.  Please, click here to read the rest of the post and leave your comments.

Guest Post: The 7 Sins of Lean Software Development

Waste elimination is one of the Lean principles and one of the most effective ways to increase quality and reduce cost. While products and services differ between industries, waste or muda –everything that does not add value from the perspective of the customer, or any material/resource beyond what the customer requires and is willing to pay for – can be found in any type of business, such as in the software development.

Mary and Tom Poppendieck – two of the leaders in describing how to implement Lean to software development – have translated the well-known “Seven Wastes of Manufacturing” into “The seven Wastes of Software Development”.
                                                  ……………………………………………………

Today, I am guest blogging at Christian Paulsen “Lean Leadership” blog. The post has been is divided into two parts. Please click Part 1 and Part 2 to read the rest of the post and leave your comments.