Aquí hay una cita de un manual de capacitación en el trabajo sobre SLIM y estimación de software:
Observe también que existe una correlación entre el esfuerzo y los defectos. Esto significa que cuantas más personas se asignen a un proyecto de un tamaño determinado, más defectos habrá.
El esfuerzo es persona-tiempo (persona-años, persona-meses) para el proyecto. Defectos es el recuento de defectos detectados en cualquier punto del ciclo de vida. El tamaño se define como los casos de uso, puntos de función o SLOC que componen el proyecto.
Esto parece contradictorio, suponiendo un buen proceso e ingenieros capaces. Por ejemplo, tener más personas significa tener más ojos en todos los artefactos (especificaciones de requisitos, diseños, códigos, pruebas). Además de tener más ojos, mi intuición sugiere que hay poca relación entre el esfuerzo y los defectos en un proyecto que utiliza técnicas de calidad apropiadas.
No he podido encontrar ningún documento, aparte de aquellos sobre el Modelo de Putnam (que es utilizado por SLIM), que sugiera algún tipo de relación conocida entre defectos y esfuerzo o defectos y número de personas en un proyecto. ¿Es esta una relación conocida y es válida la afirmación de que "más personas = más defectos"?
fuente
Respuestas:
Mi intuición es así:
Cuantas más personas se asignen a un proyecto de determinado tamaño, mayor será la sobrecarga de comunicación
=> mayores serán las posibilidades de malentendidos y todo tipo de problemas de comunicación
=> mayor será el número de defectos resultantes.
Y
Los buenos desarrolladores son más raros, por lo tanto, más difíciles de encontrar y contratar, que los mediocres / malos
=> cuantas más personas se asignen a un proyecto de un tamaño determinado, menor será su nivel promedio de competencia
=> mayor será el número de defectos resultantes.
Pero estos pueden ser solo mi razonamiento, no tengo evidencia de apoyo.
Como nota al margen, sus suposiciones enfatizadas a continuación son en mi humilde opinión (lamentablemente) bastante fuertes, teniendo en cuenta el estado de nuestra profesión:
fuente
Podría ser solo una correlación. La gerencia tiende a asignar a más personas para que ayuden en proyectos que consideran más complejos, o proyectos que se están quedando atrás debido a muchos errores intransigentes, o proyectos que requieren mucho acoplamiento entre varios componentes. Si pudiera tomar decisiones de gestión fuera de la mezcla, sospecho que la correlación al menos disminuiría, si no se revierte.
fuente
Dadas las definiciones recientemente actualizadas de tamaño y esfuerzo, sugeriría que quizás los resultados se deban al hecho de que Effort (total de horas-hombre) es en realidad un mejor estimador del tamaño real del proyecto que las medidas que está utilizando la fuente (Effort sería una medida perfecta si todos los equipos y los recursos del equipo fueran equivalentes).
Por lo tanto, lo que realmente está sucediendo es que los proyectos más grandes tienen más defectos, lo cual no es sorprendente en absoluto.
fuente
No creo que puedas asumir ninguno de estos en el mundo real. Cuantas más personas participen en un proyecto, es más probable que tenga manzanas podridas que no puedan seguir el ritmo y frenarán a los mejores desarrolladores. Incluso si sigue las suposiciones, hay algunas otras cosas que ralentizan los proyectos y causan más defectos a medida que aumenta el número de personas:
En mi experiencia, los efectos negativos de los proyectos cargados de desarrolladores se reducen cuando el proyecto es muy modular y solo tienes 1 o 2 personas por nivel. No me importa qué sistema de control de versiones esté utilizando, tener 4 desarrolladores con todos los registros de fusión automática en el mismo archivo a la vez probablemente sea una mala idea.
fuente
Hay una diferencia entre correlación y causalidad; la cita parece estar diciendo que el número total de defectos tiende a ser mayor para proyectos donde se asignan mayores números de ingenieros. Esto tiene mucho sentido para mí, estoy seguro de que MS Windows tiene más defectos que las aplicaciones que creo, pero eso no significa que mis aplicaciones tengan una calidad superior.
Para dar otro ejemplo más abstracto: si tomamos el número total de muertes por país y correlacionamos eso con el número total de médicos en el país, estoy seguro de que podríamos decir que "los países con más médicos tuvieron más muertes". Esto no se debe a que los médicos causaron las muertes, sino a que un gran número de médicos es indicativo de una gran población.
fuente
Dejemos de lado la afirmación sobre el número de personas por un momento.
Observar el número de defectos inyectados en función del esfuerzo puede tener sentido siempre y cuando suponga que un mayor esfuerzo necesariamente requiere un mayor tamaño, ya que existe una fuerte correlación entre el número de defectos y el tamaño del software.
Entonces, si asume que cuanto más esfuerzo se pone en un proyecto, más líneas de código se escriben, entonces probablemente podría usar el esfuerzo como proxy del tamaño para predecir la cantidad de defectos. Watts Humphrey, Capers Jones y otros han demostrado una y otra vez la correlación entre el tamaño (p. Ej., LOC) y el número de defectos.
No veo cómo se ajusta el número de personas, aparte de que más personas implican más esfuerzo.
Como nota al margen, no confunda la correlación con la causalidad. Si bien existe una correlación entre el tamaño y el número de defectos inyectados, el tamaño no es la causa. La causa generalmente proviene, como usted ha señalado, de personas y problemas de procesos. Dicho esto, los defectos en función del tamaño son una gran medida para comprender si hay un problema y para evaluar la efectividad del cambio.
fuente
Supongo que esto se limita a los miembros del equipo central de programación y no a una situación en la que haya especialistas como: UI, UX, DBA, etc.
Creo que debe gestionarse bien, pero eso no es fácil. Los pequeños equipos formados por desarrolladores de calidad pueden gestionarse a sí mismos. Es más probable que evite grandes secciones de código creadas por alguien con menos talento.
Tener más miembros del equipo puede facilitar la división de tareas. Pon a los desarrolladores mejores o más experimentados en las áreas difíciles. Elimina algunas de las tareas mundanas o que no son de programación de tus mejores desarrolladores y deja que los desarrolladores junior se encarguen de las interrupciones. Esto requerirá más planificación y reflexión, pero brinda la oportunidad de aprovechar su talento.
Existe la idea de que es mejor tener un gran desarrollador que necesite adquirir una nueva habilidad que un desarrollador por debajo del promedio que ya lo sabe. Esto es genial si tienes tiempo. Probablemente, la razón por la que se están asignando más desarrolladores a un proyecto es por la cantidad de trabajo requerido y los límites de tiempo. Es posible que tenga a alguien que pueda concentrarse en un área específica y volverse más hábil. Es genial tener ese conocimiento completo, pero a veces con un poco de dirección, un desarrollador menor puede tomar algunas instrucciones y ejecutarlo.
La realidad es que no hay muchas personas que hayan manejado un equipo grande en un proyecto exitoso. Incluso si todos son talentosos, es difícil para los equipos grandes autogestionarse. ¿Los egos se interponen en el camino?
fuente