14

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)?

Dinesh Kumar
  • 297
  • 1
  • 2
  • 6
  • 12
    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 02 '12 at 14:27
  • 5
    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 02 '12 at 14:36
  • 5
    @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 02 '12 at 14:39
  • Is it necessary for a coder (developer) to do certification in six sigma. Will it help his career (like recognition)? I have this doubt because 6Sigma is related to Management when compare to technical person. – Dinesh Kumar May 03 '12 at 06:50
  • 5
    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
  • http://www.crosstalkonline.org/storage/issue-archives/2006/200604/200604-Schofield.pdf – Job Mar 19 '13 at 18:51
  • 4
    @ThomasOwens this is NARQ, not off-topic. It's half-poll/half-LMGTFU – Jimmy Hoffa Mar 19 '13 at 20:05

2 Answers2

15

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.

Caleb
  • 38,959
  • 8
  • 94
  • 152
  • 1
    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 04 '13 at 15:14
  • It's important to distinguish between improving the development process itself and improving the software being developed. I described the former, and given the mention of applying Six Sigma to the SDLC I think that's what the OP was asking about; @Tae-SungShin's comment seems aimed more at the latter, and I agree that the process for improving the software itself is a little different. Lots has been written about software development methods, so I won't try to do that here. – Caleb Jul 27 '17 at 19:01
-4

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.

Peter
  • 1