¿Cómo deben introducirse las normas y las mejoras de procesos en una organización sin ellas?

10

Se me ha encomendado la tarea de mejorar el proceso de desarrollo de software mediante la implementación de mejoras en el proceso, de las cuales probablemente utilizaremos CMMI for Development, Versión 1.3 como guía y adoptaremos las mejores prácticas en su totalidad o en parte. ¿Cuál es la mejor manera de introducir estándares y mejoras de procesos para minimizar el grado de retroceso y resistencia de los desarrolladores?

rjzii
fuente
Solo por curiosidad, ¿ya tienes alguna idea de por qué pasan más errores de los deseados?
Chris Pitman
2
@ S.Lott ¿Puede defender los errores que no se reducen (por parte del consumidor) sin estándares? Mi experiencia con un proceso y estándares reduce en gran medida lo que el consumidor ve en los errores ... no es que no existan, simplemente nunca son vistos por el cliente.
Plataforma
@RobZ: No te pregunté qué tienes actualmente. Todavía estoy tratando de entender la pregunta. "implementar mejoras en el proceso" parece ser la descripción más precisa de lo que está preguntando. Sugeriría que "estándares" es un término confuso, ya que tiene una definición formal y no está utilizando esa definición formal.
S.Lott
@Robz: "Estándares de codificación" no es "Estándares formales". Eso aclarará la pregunta. De nuevo. Los "estándares formales" son estándares W3C, Posix, ISO, IEEE, ANSI. Redactado y aprobado por una organización reconocida de montaje de stands. Si habla de estándares de codificación, actualice la pregunta para eliminar la palabra "Formal" y use la palabra "Codificación". Con ese cambio su pregunta tiene sentido. Y es un duplicado.
S.Lott
"En lo que respecta a las palabras" estándares "en el título junto con las mejoras de proceso, la palabra estándares no solo se aplica al código de lo que alguien escribe"? ¿Qué? Aquí hay una pista. No utilice la palabra "estándar" sin algún tipo de calificador; es confuso. Si quiere decir "estándares de codificación", utilice esa frase. Si te refieres a algún otro tipo de "estándar", califica la palabra "estándar" con una frase que califique para aclarar de qué estás hablando. "estándar" es vago y confuso.
S.Lott

Respuestas:

2
  1. Inicie el proyecto de mejora de procesos de software (SPI) . Definir su alcance y objetivos. Definitivamente ayudará si la estandarización tiene sus propios objetivos y medidas aplicables a su organización.
  2. Asignar a la persona responsable de adoptar las normas . También podría ser varias personas o incluso departamento en el caso de una gran organización. Lo importante es que todos los responsables de la estandarización serían:
    • lo suficientemente profesional como para ver la imagen completa
    • lo suficientemente influyente para tratar con equipos y ayudarlos a adoptar / negociar cambios
  3. Desarrolle capacitaciones que cubran tanto el estándar que desea adoptar como sus especificaciones aplicadas a su organización. Y es realmente importante siempre y cuando todas las personas que no fueron capacitadas sean potencialmente resistentes a los cambios. Por ejemplo, cuando trabajaba en una gran empresa, instruía a todos los empleados nuevos sobre procesos de control de calidad, CMMI, ISO y sistema de gestión de calidad. Tal entrenamiento era obligatorio. Ayudó a mejorar el conocimiento sobre los procesos de gestión de calidad y a concienciar a los empleados sobre el importante tema de la calidad del software.
  4. Negocie cambios y adapte las prácticas generalmente aceptadas para sus necesidades específicas. Ayudará a evitar la burocracia y la implementación de procesos pesados ​​que nadie realmente necesita.
  5. Establezca el monitoreo de cómo se apoyan las mejoras de procesos implementados y si son lo suficientemente efectivas en su organización.

También ayudará si encuentra a todas las personas dentro de su organización que están realmente preocupadas por la calidad. Probablemente, ese sería el recurso más importante que lo ayudará a promover cambios y establecer prácticas maduras.

altern
fuente
6

Un par de pensamientos de la escuela de golpes duros:

1) La mayoría de las iniciativas de mejora de procesos dedican el 80% de su tiempo al diseño de procesos y el 20% a educación y socialización. Voltear estos porcentajes. Un estándar mediocre que se sigue supera a uno perfecto que no lo es.

2) Identifique razones claras por las que le pide a las personas que cambien su forma de trabajar. ¿Cuál es el caso de negocios? Idealmente beneficia a cada equipo individualmente. A veces es solo una mejora sistémica. De cualquier manera, haz que el caso sea visible.

3) Simplifique, luego estandarice, no al revés.

4) No puede delegar completamente esto a un PMO. Los gerentes directos deben ser comprados, y el jefe de la unidad de negocios deberá romper los lazos cuando lleguen las quejas.

5) Encuentra los primeros adoptadores amigables. La gente se quejará de cuánto tiempo lleva todo. Necesitas a alguien a quien puedas señalar y decir, "solo les tomó 15 minutos"

6) Para las métricas, presione duro para cuantitativo sobre cualitativo. De lo contrario, tiene proyectos que son ecológicos hasta un día antes de Go Live, cuando todo pasa un mes.

7) Enfatizar las técnicas sobre las herramientas. Una buena planificación es más importante que MS Project.

8) Poner en un nivel de proceso relativo a las necesidades. Cada restaurante necesita un proceso, pero Nobu y French Laundry necesitan un tipo diferente al de McDonalds. Lo mismo con las empresas de software.

¡Buena suerte!

MathAttack
fuente
1
Gran respuesta: también agregaré que tenga mucho cuidado con el proceso que introduzca. Asegúrese de no caer en la trampa de hacer lo que es mejor para el proceso, no lo que es mejor para el cliente, es decir, el proceso debe estar enfocado en el cliente. Además, tenga cuidado con lo que mide: por definición, lo que se mide es importante y lo que no se mide no es importante. Mida las cosas incorrectas (SLOC / Day, Bugs / SLOC, etc.) y no obtendrá mejoras, pero las mediciones le dirán que sí.
mattnz
1
@mattnz: no sé, error / SLOC puede ser una métrica útil si la aplica correctamente. Si alguien dice que promedian 1 error / 10 SLOC, probablemente estaría preocupado. El truco es que tienes que saber dónde están las barras, lo que puede ser difícil.
rjzii
Buen punto. Las personas optimizan sus métricas. Si primero produce métricas financieras, las personas lo optimizarán a expensas de la funcionalidad o el servicio al cliente. Se trata de equilibrio y prioridades.
MathAttack
1
Mídame por errores / SLOC, SLOC / día, y se sorprenderá de lo detallado que puedo hacer mi código fuente sin agregar nada útil. Por ejemplo, la colocación de llaves, en una nueva línea, siempre: cuantas más líneas menos estadística, mejor programador me convierto, instantáneamente. Dame CUALQUIER medida, y te mostraré cómo puedo hacer que esa medida me haga ver mejor.
mattnz
1
@mattnz: para eso está la revisión de código, si alguien está haciendo su código innecesariamente detallado para ocultar el hecho de que está plagado de errores, entonces las probabilidades son que no deberían escribir código para empezar. También puede ver los defectos por punto de función, lo cual es extremadamente difícil de falsificar, ya que ve una exposición en el número de funciones con el número bajando (signo incorrecto), o el número simplemente comienza a bajar a medida que el código mejora (bien firmar).
rjzii
2

Probablemente sea una buena idea basar sus esfuerzos en el CMMI, incluso si no se somete a las evaluaciones y es auditado y calificado formalmente. Hay mucha literatura disponible sobre CMMI , CMMI y otras técnicas de mejora de procesos como Lean y Six Sigma , y CMMI y desarrollo de software ágil . El SEI tiene una colección completa de recursos , algunos disponibles de forma gratuita, sobre diferentes aspectos de CMMI y orientación para diferentes tipos de organizaciones.

Recomiendo mirar en profundidad el enfoque continuo para implementar CMMI, en lugar del enfoque por etapas. Me parece una forma mucho más eficiente de determinar exactamente dónde se encuentra su organización ahora y mejorar en las áreas que agregan el mayor valor comercial. Esto le permitirá no solo alinear sus esfuerzos de mejora con los objetivos comerciales, sino también alcanzar rápidamente los hitos de progreso y demostrar los efectos de la mejora, aumentando la aceptación de todos los niveles.

Sin embargo, algo a tener en cuenta es que la mejora del proceso generalmente es más exitosa cuando se trata de un esfuerzo de base. Cuando los cambios en el proceso son dictados desde arriba, por personas que los desarrolladores "en las trincheras" podrían ver como fuera de contacto con la forma en que se hacen las cosas en las trincheras, probablemente habrá retroceso, incluso si la idea es buena. Prepárate para esto.

Algún tipo de grupo de procesos de ingeniería también podría ser beneficioso. Reúna a representantes de los diversos componentes y equipos de la organización afectados por la mejora para que se escuche la voz de todos. Esto incluiría no solo representantes de cada función, sino quizás varios equipos de desarrollo de productos. Sin saber cómo está estructurada su organización, no puedo decir exactamente a quién le gustaría mirar, pero sí incluir a personas de todos los niveles de la organización en el grupo. Además, ponga a disposición de la organización las discusiones y decisiones tomadas por este grupo para comentarios y plantear cualquier problema.

Thomas Owens
fuente
No estoy seguro de qué tan bien va a funcionar impulsar los esfuerzos de base, ya que muy pocos de los equipos del proyecto han formalizado algún proceso, por lo que será un proceso de arriba hacia abajo. Sin embargo, dicho esto, todos están preocupados por hacer las cosas lo más suaves posible para evitar que el esfuerzo falle debido a la falta de implementación real.
rjzii
@RobZ Por definición, no se puede presionar por los esfuerzos de base: tiene que venir naturalmente de abajo hacia arriba. A menos que los equipos del proyecto se den cuenta de que hay un problema real, la tendencia es no cambiar y oponerse a los cambios que se perciben como malos de alguna manera (como hacer que el trabajo sea más complicado o difícil, lo que a menudo se asocia con la mejora del proceso, aunque no lo es). a menudo es el caso).
Thomas Owens
Exactamente y por eso la gerencia está formalizando las cosas. Ha habido problemas con algunos de los programas que han salido por la puerta y también buscan cambiar la cultura de la compañía y asegurarse de que los productos defectuosos no vuelvan a aparecer en el campo.
rjzii
@RobZ Y cuando la administración interviene y dicta acciones, los desarrolladores se resisten. No puede exigir un cambio cultural y esperar que suceda de manera simple y silenciosa. Es un proceso largo y doloroso.
Thomas Owens
Nadie realmente espera que ese sea el caso y ya hemos estado encontrando resistencia, en este momento estamos buscando formas de minimizarla.
rjzii
0

Para cada cambio:

  • Llame al cambio 1 y cómo mejorará el desarrollo.
  • Implementar el cambio.
  • Demostrar mejora
  • Eliminar los cambios que no demostraron mejoría

Obviamente, el análisis debe realizarse con el tiempo, pero no debe aceptarse ningún cambio hasta que se demuestre que es efectivo. Esa es también la razón por la que implementaría no más de 2-3 cambios por ciclo; de lo contrario, a menudo no se puede medir si hubo una mejora o no.

Nada me irrita más que seguir ciegamente las mejores prácticas sin hacer el análisis para demostrar que en realidad es una mejor práctica para su entorno. Una mejor práctica que no demuestra mejoras es, en el mejor de los casos, un derroche y, en el peor, un daño.

Todos los pasos en su proceso y todas las prácticas en metodología deben analizarse y probarse como beneficiosos. Si no es así, debe eliminarse. Este análisis debe realizarse de manera continua, independientemente de agregar o eliminar pasos o prácticas.

dietbuddha
fuente