2009-06-04 30 views
10

En otra empresa de desarrollo, recientemente vi algunos gráficos de gestión de proyectos/priorización de cargas de trabajo en la pared.¿Cuáles son las cinco prioridades para el desarrollo de software?

Estoy acostumbrado a la máxima "bueno, rápido y barato: Escoja dos". Pero este sistema usó cinco indicadores. Aquellos que puedo recordar:

  • libre de errores
  • El Tiempo
  • completa de funciones
  • El Presupuesto

Pero no puedo recordar el quinto. ¿Nadie?

En este sistema, el solicitante característica dio a cada una de las cinco prioridades de 1 - puntuación de 5 en 5 significa 'muy importante' y 1 significa 'no es importante'. No hay dos prioridades que puedan puntuar de la misma manera. Esto funciona muy bien porque si lo quieres Bug Free y Feature Complete, entonces On Budget no significa tanto para ti, pero tal vez signifique más para ti que On Time.

Una vez más, lo que me falta es la quinta prioridad.

+7

Con la forma en que se ejecutan muchas organizaciones, realmente debería ser "Bueno, rápido, barato: elija uno". –

+2

James: elige uno ... y reza –

+2

¿Puedo desear cinco deseos más? – Nosredna

Respuesta

5

Probablemente hay de versiones de un diagrama de este tipo n-rama docenas.

lo he visto como:

  • libre de errores
  • El Tiempo
  • completa de funciones
  • El Presupuesto
  • Con un equipo feliz

El la redacción y el énfasis son míos, pero bas icalmente, el autor agregó la noción de que sí, empujar a su equipo a hacer horas extras alocadas es parte de las cosas que puede sacrificar, pero al igual que la calidad o el presupuesto, termina pagando de alguna manera.

+0

Sí, mira mi respuesta. El 'equipo feliz' es ciertamente uno de los originales, pero no creo que haya entrado en el caso de uso que vi. Esto fue dirigido al solicitante y fue parte del análisis comercial con el cliente (proxy) que realmente no le importa si el equipo de desarrollo estuvo contento (por desgracia) – RickMeasham

+0

Seleccionando esto como la respuesta, aunque volveré y comentaré una vez que tengo el caso de uso real, vi – RickMeasham

9

yo espero que sería algo que ver con "mantenible". De lo contrario, tienes una buena v1 pero no hay indicios de que alguna vez puedas agregar una sola característica sin que todo se rompa.

Más allá de eso, hay cosas como "performant", que puede venir en "función completa" en función de si se cuenta la velocidad como una característica o no. (Algunas personas aquí en Google tienen camisetas con "ayuno es mi característica favorita" en la ...)

también cosas a considerar:

  • bien documentado (viene bajo mantenible Estaba pensando en desarrollador? documentación, pero la documentación del usuario también puede venir aquí)
  • Eficiente (no solo es lo suficientemente rápido, sino que solo necesita un ZX Spectrum para atender todas las solicitudes de búsqueda web)
  • Seguro (no twittea los números de tarjeta de crédito del cliente)
  • Fácil de usar
+0

Heh, no creo que haya sido porque esa es una prioridad interna del equipo de desarrollo en lugar del solicitante :-D – RickMeasham

+1

¿De verdad? Pocas veces he estado en una situación en la que alguien obtiene todo lo que quiere en la primera versión lanzada, y me complace que digas "el código nunca se puede volver a tocar". Al menos * debería * ser una alta prioridad para el solicitante. –

6

voy a nominar extensible. (También conocido como de mantener, a prueba de futuro.)

La razón para decir que es extensible se comunica mejor con el propietario de un negocio lo que están especificando. Cuando dices Maintainable, le suena a un no desarrollador como si le pidieras que priorizara lo fácil que es recargar el combustible y cambiar el aceite.

+1

@chaos, gracias por su excelente punto. La capacidad de mantenimiento en el software es, en general, diferente de la capacidad de mantenimiento en otras áreas de la ingeniería. Se trata de una proporción mucho menor que tiene que ver con las tareas cotidianas de mantener el código en ejecución y más con la posibilidad de ampliar y modificar el diseño del software. Gracias de nuevo, es una verdadera joya. –

0

en las líneas de Jon: escalables

0

satisface las necesidades de los usuarios?

2

Hace lo que necesita el cliente, no lo que él pensó que necesitaría.

+0

Bwahahahah Me gusta – RickMeasham

0

Como alternativa:

eficiente

  • Sin tener buena función de software completa si se necesita siempre para hacerlo, o requiere algún hardware tonta ....
1

No está seguro qué quinta podría ser, o si no será algo ya implicado por uno de los "cuatro" principales, pero hay una buena explicación de esos cuatro en el Capítulo 7 de "Planificación de programación extrema", puede ver algunas de las páginas here

+0

Esa es una muy buena reseña sobre esos cuatro. Gracias por la referencia, ciertamente usaré eso. – RickMeasham

0

voy a añadir "ÚTIL". La usabilidad es un factor muy importante que nosotros, como programadores, solemos olvidar. Un software con buena capacidad de uso reduce muchos problemas en la curva de aprendizaje del usuario y se "usa" más y más rápido que otro software con las mismas capacidades pero no tan bueno en términos de usabilidad.

0

yo creo que puede ser "bien documentado"

1

Ahh .. parece que lo que vi se basó en Rob Thomsett's "Success Sliders". A pesar de que cuenta con siete deslizadores, lo que vi fue sólo cinco (y parece que dos de las prioridades pueden compartir la misma puntuación):

  1. Haciendo las partes interesadas satisfecho.
  2. El logro de los requisitos funcionales
  3. presupuesto Reunión
  4. cumplir con los plazos
  5. Añadiendo valor
  6. asegurar una buena calidad
  7. Hacer los miembros del equipo satisfechas

yo diría que 1 se lleva a cabo por la finalización exitosa de 2 - 6. Buena calidad sería la prioridad libre de errores. Así que nos quedamos con 'Agregar valor' o 'Hacer que el equipo esté satisfecho'. Ninguno de los dos suena familiar. Tendré que volver a contactarme con la compañía y preguntar.

+0

1 solo se cumple con 2-6 IFF, la especificación funcional realmente captura las necesidades de los interesados. –

+0

En un entorno de cascada, sí. En un entorno ágil (o tal vez XP), la especificación es una colaboración maleable entre los portadores de etapas – RickMeasham

0

Mi propia lista:

  1. asegurar que se cumplan los objetivos de la funcionalidad del negocio.
  2. Esforzarse por la modularidad y facilidad de mantenimiento.
  3. Evite la fluencia del alcance.
  4. Mantener una buena relación con los analistas de negocios y gerentes de proyecto.
  5. No queme los puentes.

Debo añadir que debe ser una prioridad para saber cuáles son las especialidades y áreas de disfrute de cada desarrollador, y tratar de acomodarlas. No le dé a un desarrollador que sea virtuoso con WCF un proyecto que implique cambios de interfaz de usuario, no le dé a un desarrollador de juegos un proyecto de fijación de datos SQL (a menos que, en cualquier caso, lo soliciten específicamente, por supuesto).

Si eres consciente de lo que su gente es capaz de hacer, basándose en parte en su historial y asigna tareas en consecuencia, hará el trabajo con más eficacia que otra persona para la que la tarea en particular no es familiar o territorio desfavorable.

0

Última respuesta, sin embargo, creo que hay algo que agregar a las respuestas existentes. Creo que la idea general de un gráfico de priorización estándar para todos es más que erróneo, es peligroso.

ampliamente aceptada dimensiones del proyecto

El consenso general en la comunidad de gestión parece ser que un proyecto puede ser cortada en 4 dimensiones:

  • alcance
  • tiempo
  • cuestan
  • calidad

Las cosas empiezan a difuminarse cuando intenta subdividir aún más estas dimensiones, medirlas o ver cómo se afectan mutuamente para llegar a una priorización.

Interdependencia

En el software por lo general significa que alcance los requisitos funcionales (lo que hace el software y también lo que no se supone que debe hacer) más cualquier requisito auxiliares necesarios para completar la entrega del software a los clientes. Naturalmente, el alcance afecta el tiempo del proyecto, el costo y la calidad funcional y no funcional.

Digamos que una empresa tiene una ventana de oportunidad para vencer a sus competidores o entregar algún servicio y dinero en efectivo. El tiempo claramente tiene prioridad sobre el alcance; partes del sistema se pueden hacer fuera del software.

Pero para el software de control del motor de cohete, el alcance puede ser no negociable, y cuando tiene prioridad en el tiempo. En una línea similar, hay interdependencia entre todas las dimensiones.

sin fin rebanar

Las dimensiones se pueden cortar más allá: menor tiempo de desarrollo frente al sistema menos eficaz y eficiente (tiempo perdido en el mantenimiento y uso del software), los costes de desarrollo más pequeño en comparación con el costo total más alto de la propiedad y reducción de la vida útil (lo que lleva a un menor retorno de la inversión), mayor versatilidad de uso versus modo difícil de aprender.

calidad probablemente sea cortado en otras categorías la mayoría, muchos de los cuales impliquen decisiones contradictorias:

  • funcionales:
    • Disponibilidad de características (spoken, unspoken, excitement)
    • Robustez de características (defectos, de consistencia , integración, integridad)
  • Non-functional:
    • Usabilidad
    • mantenibilidad y la posibilidad de ampliación de diseño
    • Rendimiento
    • operacional y ambiental
    • legales (y otras normas) el cumplimiento
    • Cultura (internacionalización, localización)
    • Ver y sentir
    • Seguridad
    • Política

Y el proceso de cortar un pedazo de ecosistema de software en categorías puede ser interminable. Y también hay infinitas formas de medir el éxito o el fracaso de un proyecto de software. Incluyendo la satisfacción de las partes interesadas, donde el equipo de desarrollo también tiene una participación en el proyecto y, por lo tanto, su satisfacción es importante.

La simplificación es nocivo

El diseño del software es el resultado de una serie de compromiso entre estas categorías. Y como en la cocina es una buena comida, existen infinitas formas de combinar los ingredientes, dependiendo de las circunstancias, la solicitud del cliente, las alergias y la disponibilidad de los ingredientes.

Probablemente sea mejor evitar la simplificación colocando un póster en una pared donde Cost siempre tiene prioridad sobre el alcance, o la capacidad de mantenimiento es más importante que la apariencia. El trabajo del gerente del proyecto es tener en cuenta todo el panorama y dar orientación a los miembros del equipo sobre cómo tomar las decisiones de priorización a diario, según las circunstancias.

Un PM no puede ser reemplazado por un gráfico en una pared, ni un buen PM debe subcontratar la esencia de su trabajo a un pedazo de papel.

+0

Parece que se ha perdido la descripción en la pregunta original. Estas prioridades se establecen para cada proyecto. Y cambiarlos a diario sería enormemente contraproducente. Imagínese: hoy queremos que se realicen todas las funciones, y llegar a tiempo es una preocupación menor.Mañana tiene que ser puntual y libre de errores, pero no dude en dejar de lado la funcionalidad. El día después de eso, tiene que estar dentro del presupuesto sin importar las características, los errores o el tiempo. Simplemente no puedes cambiar estas prioridades sobre la marcha. – RickMeasham

+0

RickMeasham, lo siento si me he perdido la descripción de la pregunta original, pero a partir del 3 de julio de 2009 todavía no menciona tener un conjunto separado de prioridades para cada proyecto. Probablemente la esencia de mi respuesta es que la calidad del software no se reduce a simplemente "sin errores", ni el alcance solo a las características. –

+0

Cualquier proyecto es algo vivo y las prioridades diarias para tareas individuales diferirán significativamente de las prioridades del proyecto. –

0

Según lo prometido, aquí está la lista que había visto originalmente:

  • Característica completa
  • El Tiempo
  • El Presupuesto
  • libre de errores
  • Guantes para una aplicación

Entonces me faltaba 'Fit for Purpose', que es comprensible: la diferencia nce entre eso y 'característica completa' es un poco difícil de precisar.

He aquí un ejemplo de un amigo me dio:

Como un simple ejemplo, si una tasas de clientes exhaustividad tan alto y en forma tan bajo que significaría que quieren tanto un catálogo de productos en línea y un centro de carrito de la compra , incluso si ambas características son muy rudimentarias. Por el contrario, si la integridad es baja y el ajuste es alto, entonces el cliente puede aceptar un catálogo de productos con todas las funciones en el primer lanzamiento y sin instalación de carrito de compras.

Cuestiones relacionadas