Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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? Are there any resources that discuss Six Sigma being applied specifically within a software development environment?

share|improve this question
7  
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
4  
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
4  
@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
1  
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
2  
@ThomasOwens this is NARQ, not off-topic. It's half-poll/half-LMGTFU –  Jimmy Hoffa Mar 19 '13 at 20:05
show 2 more comments

closed as not a real question by Jim G., Jimmy Hoffa, Robert Harvey, Martijn Pieters, Oleksi Mar 20 '13 at 0:54

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.If this question can be reworded to fit the rules in the help center, please edit the question.

4 Answers

Software development suffers delay and defects (i.e., bugs) just like any other industry. I've used Six Sigma tools to eliminate defects costing $3 million a year and denied insurance claims costing $5 million a year.

For software defects, I developed the "Dirty 30" process for Six Sigma Software. http://www.qimacros.com/pdf/dirty30.pdf.

You'll also find case studies here:
http://www.qimacros.com/Moneybelt/six-sigma-service-order-errors-case-study.html
http://www.qimacros.com/Moneybelt/six-sigma-denied-claims-case-study.html

share|improve this answer
1  
Dirty 30 article was interesting. I espcially liked the part where the root cause was often the requirement. It is true that devs often get the blame for not doing something they were never asked to do or for doing exactly what they were asked to do but it wasn't what was actually needed. –  HLGEM May 2 '12 at 19:38
add comment

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
add comment

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
1  
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
1  
lol .. but the same manager asked to follow the six sigma procedure when i proposed this software .. –  rajkumarts Mar 19 '13 at 18:54
add comment

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 http://www.6sigma.us/. I suggest them based on the recommendation I received from another firm.

share|improve this answer
add comment

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