¿Cómo puedo aplicar Six Sigma en un entorno de desarrollo de software?

14

Soy un desarrollador de Java, pero me pidieron que aprendiera sobre cómo aplicar Six Sigma con el objetivo de aumentar las ganancias de nuestra organización. He leído que Six Sigma se puede aplicar en todos los entornos, pero estoy interesado en los matices de aplicarlo al desarrollo de software.

¿Qué conceptos de Six Sigma se pueden aplicar a un entorno de desarrollo de software y cómo puedo aplicarlos de manera efectiva?

Entiendo que Six Sigma se enfoca en:

  • Identificar y eliminar las causas de los defectos
  • minimizando la variabilidad en la aplicación de procesos de fabricación o comerciales

Me parece que estos conceptos podrían aplicarse al desarrollo de software, pero ¿puede aplicarse efectivamente a un ciclo de vida de desarrollo de software (SDLC)?

Dinesh Kumar
fuente
11
¿Dónde descubriste que six-sigma es "adecuado para todos los entornos"? Fue desarrollado muy específicamente para la fabricación de objetos físicos en grandes cantidades, no de software.
Angelo
55
Estoy reabriendo esta pregunta ya que no hay necesidad de moverla. La gestión de proyectos de software está en el tema aquí, pero Six Sigma está más estrechamente relacionado con la calidad y la mejora de procesos, que también están en el tema aquí. Además, hay una gran cantidad de trabajo que discute la aplicación de Six Sigma a los proyectos de software y la mejora del proceso de software (incluida la combinación de Six Sigma y CMMI y Six Sigma y métodos ágiles). Aplicar Six Sigma al software es diferente de aplicarlo a un entorno de fabricación, por lo que esta pregunta requiere la experiencia de un desarrollador de software.
Thomas Owens
55
@Angelo Aunque Six Sigma se diseñó originalmente para un entorno de fabricación, se ha trabajado mucho para aplicarlo al desarrollo de software. La búsqueda de frases como "agile six sigma" y "cmmi six sigma" genera mucho trabajo en el área.
Thomas Owens
55
Tuve que tomar el primer entrenamiento de seis sigma y aunque mi compañía lo pagó, desearía poder recuperar mi tiempo. El instructor no tenía ni idea, los ejercicios eran pequeños juegos divertidos pero, en última instancia, carecían de sentido. Six sigma trata sobre estadísticas y es aplicable a tareas tontas, repetitivas y bien definidas, el tipo de tareas que a menudo se subcontratan a los robots. Escribir un buen software es un proceso creativo. Six sigma ayuda a los buenos ingenieros de software tanto como las conferencias de Calculus ayudarían a Tom Cruise a actuar. El hecho de que haya hecho esta pregunta lo descalifica para trabajar conmigo o con mis colegas.
Trabajo
44
@ThomasOwens esto es NARQ, no fuera de tema. Es mitad encuesta / mitad LMGTFU
Jimmy Hoffa

Respuestas:

15

Las actividades básicas de Six Sigma son capturadas por el acrónimo DMAIC , que significa: definir, medir, analizar, mejorar, controlar . Los aplica al proceso que desea mejorar: defina el proceso, mídalo, use las mediciones para formar hipótesis sobre las causas de cualquier problema, implemente mejoras y asegúrese de que el proceso permanezca estadísticamente "en control".

En lo que se refiere al software, el proceso es su ciclo de vida de desarrollo de software (SDLC) o alguna parte del mismo. Probablemente no intente aplicar los principios Six Sigma a todo el SDLC (o al menos, no inicialmente). En cambio, buscaría áreas en las que cree que tiene un problema (por ejemplo, nuestra tasa de defectos es demasiado alta; demasiadas regresiones; nuestro cronograma se desliza con demasiada frecuencia; demasiados malentendidos entre desarrolladores y clientes; etc.). Digamos por ahora que el problema es que se están produciendo demasiados errores (o al menos reportados) cada semana. Entonces definirías el proceso de desarrollo de software / creación de errores. Luego comenzaría a recopilar métricas, como la cantidad de líneas de código escritas cada día, la frecuencia de los cambios de requisitos, la cantidad de horas que cada ingeniero pasa en las reuniones,

Luego, observa los datos e intenta discernir patrones. ¡Quizás te des cuenta de que el equipo de ingeniería A cumple todos los plazos establecidos y, a menudo, incluso termina las tareas antes de tiempo! Inicialmente, el equipo B no parece tan bueno: pierden sus plazos por un día o dos al menos la mitad del tiempo, y ocasionalmente llegan tarde una semana o más. La gerencia ve al equipo B como un problema y está buscando sacudir las cosas. Sin embargo, una mirada más cercana a los datos muestra que la tasa de errores del equipo B es mucho más baja que la del equipo A, y lo que es más, a menudo se le pide al equipo B que repare los errores atribuibles al equipo A porque la gerencia considera que el equipo A es demasiado valioso para gastar mucho de tiempo en mantenimiento.

¿Entonces, Qué haces? Usando los datos que ha recopilado y el análisis que ha realizado, sugiere un cambio: el equipo A y el equipo B corregirán sus propios errores. Con la bendición de la gerencia (y contra la vehemente oposición del equipo A) implementas ese cambio. Luego continúa recopilando métricas y continúa analizando los datos para ver si su cambio marcó la diferencia. Repita este ciclo de medición / análisis / implementación hasta que la tasa de error se considere aceptable. Pero aún no has terminado. De hecho, nunca ha terminado ... necesita seguir midiendo la tasa de errores y verificando que la tasa de errores permanezca dentro del rango aceptable, es decir, está estadísticamente "bajo control".

Tenga en cuenta que aquí no hay nada que sea específico para el desarrollo de software, aparte de los detalles del proceso que está mejorando, los tipos de métricas que recopila, etc. Las actividades que utiliza para mejorar un proceso de desarrollo de software son las mismas que usted ' d utilizar para un proceso de fabricación de widgets, aunque el desarrollo de software es bastante diferente de la fabricación de widgets. Todo lo que significa es que debe aplicar algo de sentido común en los tipos de objetivos que establece para su proceso.

Caleb
fuente
1
En realidad, la metodología Six Sigma más relacionada con el desarrollo de software es DMADI (definir, medir, analizar, diseñar, implementar), excepto que repetimos MADI en el desarrollo de software. Las personas con esos "cinturones" lo llaman Lean Six Sigma DMADI, pero yo lo llamo ágil.
Tae-Sung Shin
Es importante distinguir entre mejorar el proceso de desarrollo en sí y mejorar el software que se está desarrollando. Describí lo primero y mencioné la aplicación de Six Sigma al SDLC. Creo que eso es lo que estaba preguntando el OP; El comentario de @ Tae-SungShin parece estar dirigido más a este último, y estoy de acuerdo en que el proceso para mejorar el software en sí es un poco diferente. Se ha escrito mucho sobre los métodos de desarrollo de software, por lo que no intentaré hacerlo aquí.
Caleb
-3

Como mencionó @Peter

La aplicación de Six Sigma en el desarrollo de software crea una mejora sostenida en el desarrollo de un software. La aplicación de Six Sigma en el desarrollo de software da como resultado una rápida integración y prueba del software, ayuda a crear un software libre de errores y ayuda a una gestión más eficiente del programa.

Te puedo dar un escenario simple, estaba trabajando para una empresa aeroespacial. Hay un equipo que diseña circuitos para aviones. Se enfrentaban a muchas dificultades en el diseño de circuitos para aviones complejos. Debido a eso, les faltaban plazos, a pesar de que tenían diseñadores experimentados. Analicé su trabajo y noté que siempre estaban desarrollando circuitos desde cero. Así que diseñé un software que hará un seguimiento de sus circuitos previamente diseñados y cada vez que tengan un avión nuevo usarán mi software y elegirán el avión previamente diseñado que tiene circuitos similares y los usarán con poca modificación. Dado que esos circuitos están previamente diseñados y probados en aviones reales, ahora pueden centrarse más en nuevos circuitos.

Este es solo un escenario en el que seguí el proceso SIX Sigma para recopilar todos los datos sobre sus errores y analicé cuáles son las razones de eso. Luego mejorarlos con mi software.

rajkumarts
fuente
44
No es que Six Sigma sea genial; es que el gerente que dejó que sus empleados diseñaran circuitos desde cero debería haber sido despedido.
Trabajo
2
jajaja ... pero el mismo gerente pidió seguir el procedimiento de Six Sigma cuando propuse este software ...
Rajkumarts
-4

La aplicación de Six Sigma en el desarrollo de software se llama Software Six Sigma. Six Sigma está desarrollado básicamente para la fabricación, en el proceso de fabricación ayuda a las empresas a mejorar la entrega y la calidad del producto a bajo costo. Mientras que lo mismo puede aplicarse al desarrollo de software también.

La aplicación de Six Sigma en el desarrollo de software crea una mejora sostenida en el desarrollo de un software. La aplicación de Six Sigma en el desarrollo de software da como resultado una rápida integración y prueba del software, ayuda a crear un software libre de errores y ayuda a una gestión más eficiente del programa.

Sin embargo, como el software six sigma es un concepto nuevo, necesita la capacitación de las personas adecuadas. Un eficiente programa de capacitación Six Sigma puede ayudarlo aquí. Para la capacitación en línea de Six Sigma sobre el entorno de desarrollo de software, sugeriría http://www.6sigma.us /. Los sugiero basados ​​en la recomendación que recibí de otra empresa.

Peter
fuente