Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am a Java developer, but I was asked to learn about applying Six Sigma with the goal of increasing our organization's profits. I have read that Six Sigma can be applied in all environments, but I'm interested in the nuances of applying it to software development.

Which concepts of Six Sigma can be applied to a software development environment and how can I effectively apply them?

My understanding is that Six Sigma focuses on:

  • identifying and removing root causes of defects
  • minimizing variability in applying manufacturing or business processes

It appears to me that these concepts could be applied to software development, but can that be applied effectively to an Software Development Lifecycle (SDLC)?

share|improve this question
Where did you find that six-sigma is "suited to all environments" ? It was developed very specifically for high-volume manufacturing of physical objects-- not software. – Angelo May 2 '12 at 14:27
I'm reopening this question as there's no need to move it. The management of software projects is on-topic here, but Six Sigma is more closely related to quality and process improvement, which are also on-topic here. In addition, there is a large body of work discussing the application of Six Sigma to software projects and software process improvement (including combining Six Sigma and CMMI and Six Sigma and agile methods). Applying Six Sigma to software is different than applying it to a manufacturing environment, making this question require the expertise of a software developer. – Thomas Owens May 2 '12 at 14:36
@Angelo Although Six Sigma was originally designed for a manufacturing environment, there has been much work in applying it to software development. Searching for phrases such as "agile six sigma" and "cmmi six sigma" bring out a lot of work in the area. – Thomas Owens May 2 '12 at 14:39
I had to take the first six sigma training and while my company paid for it, I wish I could get my time back. The instructor was clueless, the exercises were fun little games but ultimately pointless. Six sigma is about statistics and it is applicable to dumb, repetitive, well defined tasks, the kind of tasks that are often being outsourced to robots. Writing good software is a creative process. Six sigma helps good software engineers just as much as Calculus lectures would help Tom Cruise act. Just the fact that you asked this question disqualifies you from working with me or my colleagues. – Job Mar 19 '13 at 18:44
@ThomasOwens this is NARQ, not off-topic. It's half-poll/half-LMGTFU – Jimmy Hoffa Mar 19 '13 at 20:05

The basic Six Sigma activities are captured by the acronym DMAIC, which stands for: Define, Measure, Analyze, Improve, Control. You apply these to the process that you want to improve: define the process, measure it, use the measurements to form hypotheses about the causes of any problems, implement improvements, and ensure that the process remains statistically "in control".

As it relates to software, the process is your software development lifecycle (SDLC) or some part of it. You probably wouldn't try to apply Six Sigma principles to the whole SDLC (or at least, not initially). Instead, you'd look for areas where you think you've got a problem (e.g. our defect rate is too high; too many regressions; our schedule slips too often; too many misunderstandings between developers and customer; etc.). Let's say for now that the problem is that too many bugs are being produced (or at least reported) each week. So you'd define the software development/bug creation process. Then you'd start collecting metrics such as the number of lines of code written each day, frequency of requirements changes, number of hours each engineer spends in meetings, and other possibly-relevant facts.

Next, you look at the data and try to discern patterns. Maybe you notice that engineering team A hits every deadline that they're given, and often even finishes tasks early! Initially, team B doesn't seem quite so on the ball -- they miss their deadlines by a day or two at least half the time, and are occasionally late by a week or more. Management sees team B as something of a problem and is looking to shake things up. However, a closer look at the data shows that team B's bug rate is much lower than team A's, and what's more, team B is often asked to fix bugs attributable to team A because management feels that team A is to valuable to spend a lot of time on maintenance.

So, what do you do? Using the data you've collected and the analysis you've performed, you suggest a change: team A and team B will each fix their own bugs. With management's blessing (and against team A's vehement opposition) you implement that change. Then you continue collecting metrics, and you continue to analyze the data to see if your change made a difference. Repeat this measure/analyze/implement cycle until the bug rate is deemed acceptable. But you're not done yet. In fact, you're never done... you need to keep measuring the bug rate and checking that the bug rate remains within the acceptable range, i.e. it's statistically "in control".

Notice that there's nothing here that's specific to software development other than the specifics of the process you're improving, the kinds of metrics that you collect, etc. The activities that you use to improve a software development process are the same as those you'd use for a widget manufacturing process, even though software development is quite different from widget manufacturing. All that means is that you need to apply some common sense in the kinds of goals that you set for your process.

share|improve this answer
Actually Six Sigma methodology more related to Software Development is DMADI (Define, Measure, Analyze, Design, Implement) except that we repeat MADI in software development. People with those "Belts" call it Lean Six Sigma DMADI but I call it Agile. – Tae-Sung Shin Nov 4 '13 at 15:14

Applying six sigma in software development is called software six sigma. Six Sigma is basically developed for manufacturing, in manufacturing process it helps companies to improve the delivery, quality of the product at a low cost. Whereas the same can applied to the software development too.

Applying six sigma in software development creates sustained improvement in the development of a software. Applying six sigma in software development results in speedy integration and testing of the software, helps to create a bug free software and it helps is more efficient program management.

However, software six sigma being a new concept you need the training from right people. An efficient six sigma training program can help you here. For online six sigma training on software development environment I would suggest I suggest them based on the recommendation I received from another firm.

share|improve this answer

As mentioned by @Peter

Applying six sigma in software development creates sustained improvement in the development of a software. Applying six sigma in software development results in speedy integration and testing of the software, helps to create a bug free software and it helps is more efficient program management.

I can give you a simple scenario, I was working for an aerospace company. There is a team which designs circuits for aircrafts. They were facing lot of difficulties in designing circuits for complex aircrafts. Due to that they were missing deadlines, even though they had experienced designers. I analysed their work and noticed that they were developing circuits from scratch every time. So I designed a software that will keep track of their previously designed circuits and whenever they have new aircraft they ll use my software and pick the previously designed aircraft that has a similar circuits and use them with little modification to it. Since those circuits are previously designed and tested on actual aircrafts they can now focus more on new circuits. This reduced their time to delivery and considerably reduced their erros while designing circuits.

This is just a scenario in which I followed the SIX Sigma process to collect all the data about their errors and analysed what are the reasons for that. Then improve them by my software.

share|improve this answer
It's not that six sigma is great; it's that the manager who let his employees design circuits from scratch should have been fired. – Job Mar 19 '13 at 18:50
lol .. but the same manager asked to follow the six sigma procedure when i proposed this software .. – rajkumarts Mar 19 '13 at 18:54

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.