La respuesta a esto depende, en parte, de la metodología de ingeniería de software utilizada para el proyecto, que a su vez depende de varias características del software a desarrollar.
Para las metodologías ágiles, la cultura del equipo debe ser colaborativa, flexible y debe valorar mucho la capacidad de respuesta a las prioridades cambiantes de los clientes. La cultura del equipo también tiene que valorar la disciplina. Sin él, el proyecto superará el presupuesto y / o el cronograma y / o la calidad deseada. Todos deben estar en la misma página. Idealmente, los miembros del equipo están ubicados conjuntamente.
Ese tipo de cultura puede combinarse de manera deficiente con proyectos grandes y complejos en los que es esencial desglosar los componentes del software para que los grupos separados manejen y / o desglosar los procesos de ingeniería (gestión de requisitos, arquitectura / diseño, desarrollo, pruebas). . A veces, la subcontratación / subcontratación es fundamental para cumplir con los plazos y presupuestos. Esto hace que una cultura coherente de ingeniería de software sea un desafío.
- ¿Qué haces cuando un ingeniero superior hace una sugerencia evidentemente ridícula?
- ¿La programación funcional da como resultado programas más seguros?
- Tengo mi sitio web de comercio electrónico desarrollado y está a punto de comenzar, pero como no tengo mucho conocimiento sobre el uso del tablero y los problemas relacionados con el software, ¿a quién debo contratar? ¿Quién puede ocuparse de los problemas de software de fondo y todo eso?
- Cómo mejorar mi currículum como ingeniero de software
- ¿Qué tan importante es la organización del código en la programación?
La línea de tiempo para proyectos más grandes generalmente permite la sincronización periódica, pero no requiere reuniones continuas en todo el personal de ingeniería (como podría ocurrir con equipos de proyectos más pequeños y entregas de software “más pequeñas”). Las solicitudes de cambio deben pasar por una evaluación más rigurosa debido a la probabilidad de impactos no obvios en otras partes de un sistema tan complejo. Aquí, puede tener equipos pequeños que trabajan de manera bastante autónoma, pero la cultura de equipo mejor adaptada debe respaldar el trabajo independiente, la tolerancia para reuniones de proyectos más largas, la valoración del proceso y la estructura del equipo con la toma de decisiones jerárquicas, y otorgando un mayor valor a cierto grado de mantenimiento documentación (para gestión de requisitos y modificaciones de arquitectura, por ejemplo).
Otra cosa que influye en la forma en que la cultura del equipo afecta la calidad del software entregado es la naturaleza de la aplicación / sistema de software. Es fácil apreciar que para los sistemas de misión crítica y aquellos en los que el software puede tener una consecuencia de vida o muerte, la cultura del equipo debe ser una que tome la responsabilidad con bastante seriedad. Compare esto con estar en un equipo tratando de crear el próximo juego divertido para un X-Box. Sí, se puede ganar mucho dinero con una gran aplicación de juego, pero tener una cultura de equipo lúdica puede resultar en un software más exitoso (por lo tanto, de mejor calidad).
La “calidad” como una descripción de los entregables de software tiene muchos significados posibles. Durante la adquisición de requisitos de software, parte del trabajo consiste en establecer requisitos no funcionales, a veces denominados requisitos de calidad. La fiabilidad, la extensibilidad, la escalabilidad, la facilidad de uso … todos deben ser acordados por los miembros del equipo y, independientemente de las otras características de la cultura del equipo, la cultura debe comprometerse a lograr estas cualidades en el software que ofrecen.