¿Cómo se desarrolla el software sin criterios de aceptación?

70

¿Cómo se desarrolla el software en colaboración en un equipo de 4-5 desarrolladores sin criterios de aceptación, sin saber qué probarán los evaluadores y con varias (2-3) personas actuando como propietarios del producto?

Todo lo que tenemos es una 'especificación' incompleta con algunas capturas de pantalla y algunas viñetas.

Nos han dicho que será fácil, por lo que estas cosas no son necesarias.

No sé cómo proceder.

Información adicional

Nos han dado una fecha límite difícil.

El cliente es interno, tenemos un propietario del producto en teoría, pero al menos 3 personas que prueban el software podrían fallar un elemento de trabajo simplemente porque no funciona como creen que debería funcionar y hay poca o ninguna transparencia de lo que esperan o lo que realmente están probando hasta que haya fallado.

los propietarios del producto no están disponibles para responder preguntas o dar su opinión. No hay reuniones o llamadas regulares programadas con ellos y los comentarios pueden llevar días.

Puedo entender que no podemos tener una especificación perfecta, pero pensé que sería "normal" tener criterios de aceptación para las cosas en las que realmente estamos trabajando en cada sprint.

usuario1450877
fuente
33
Yo diría que lo desarrolles como quieras. Mientras se sienta cómodo yendo a una reunión y demostrando cómo su producto coincide con la "especificación" incompleta y las capturas de pantalla, creo que está bien. Por supuesto, siempre puedes pedirle al creador de la especificación más detalles ...
FrustratedWithFormsDesigner
10
Básicamente se trata de un desarrollo autónomo o "Codificación Cowboy". Los desarrolladores completan los detalles. Los desarrolladores tienen el control mayoritario. Básicamente nunca tendrá requisitos formales. Desarrolle, demuestre para el (los) titular (es) de pila, recopile comentarios, enjuague y repita.
Jon Raynor
11
¿El propietario del producto entiende que esta es una excelente manera de garantizar que los costos y el tiempo aumenten cada vez más? Los científicos no informáticos, con frecuencia no entienden la importancia de especificaciones claras bien escritas. Por ejemplo, el gobierno de los EE. UU. Con frecuencia se encuentra con problemas similares, cuando cambian las expectativas para el nuevo hardware militar. Esta es una de varias razones por las cuales el hardware militar es con frecuencia un exceso de presupuesto y un retraso. joelonsoftware.com/2000/10/02/…
nickalh
35
"Nos han dicho que será fácil, por lo que estas cosas no son necesarias ... Nos han dado un plazo estricto ... los propietarios del producto no están disponibles para responder preguntas o dar su opinión. Hay no hay reuniones regulares programadas ni llamadas con ellos, y los comentarios pueden llevar días ". Tienes mi simpatía Estas son características de "No tengo idea de cómo funciona el software de escritura. En absoluto".
jpmc26
13
Has sido preparado para el fracaso. Este es el tipo de cosas que se deben escalar a la administración. Si no tenía la fecha límite fija, podría repetir hasta tener éxito. Si las partes interesadas estuvieran disponibles para recibir comentarios, podría iterar lo suficientemente rápido como para (posiblemente) alcanzar la fecha límite. Lo mismo para tener una especificación razonablemente detallada. Pero algo tiene que ceder . Esta es la parte en la que le pides a tu jefe muy amablemente que retire tu @ $$ del fuego.
Jared Smith

Respuestas:

130

Un proceso iterativo logrará esto muy bien, sin especificaciones detalladas.

Simplemente cree un prototipo incompleto, solicite comentarios del cliente, realice cambios basados ​​en los comentarios y repita este proceso hasta que se complete la solicitud.

Si el cliente es lo suficientemente paciente como para hacerlo de esta manera es una pregunta diferente. Algunos clientes y desarrolladores en realidad prefieren este proceso; Dado que el cliente siempre es práctico, (eventualmente) obtendrá exactamente lo que quiere.

No hay que decir que no va a trabajar un contrato de costo fijo o de tiempo fijo de esta manera.

Robert Harvey
fuente
114
Uno debe agregar: "solo asegúrese de que le paguen por hora", y no "le pagan solo cuando el cliente se está quedando sin ideas de lo que falta".
Doc Brown
22
También asegúrese de documentar lo que piensa el cliente, de modo que al menos esté capturado en notas en alguna parte. Puede que no sea un criterio de aceptación formal, pero es muy importante tenerlo cuando estás tratando de hacer los siguientes pasos ..
enderland
44
@ Doc Brown: OP editado para agregar "El cliente es interno", por lo que esperamos que el pago por hora no sea un problema.
sleske
8
+1 Seguí este proceso para muchos proyectos internos y descubrí que funciona muy bien y, además, es un ahorro de tiempo general. Un consejo es mantener las iteraciones cortas: una o dos semanas.
Bob Tway
13
Mi experiencia es que esto funciona bien cuando la razón de la falta de criterios formales de aceptación es que todavía nadie está seguro de lo que realmente quiere. Los prototipos les ayudan a formar opiniones, y usted acepta que tiene una gran tarea incierta a mano. Pero funciona bastante mal cuando la razón es que las partes interesadas no están encontrando tiempo para pensar / hablar / escribir sobre lo que quieren, o cuando las partes interesadas tienen requisitos contradictorios que por razones políticas no sienten que pueden declarar explícitamente. Luego, un prototipo simplemente patea la lata en el camino, y nada mejora hasta que encuentras un palo robusto.
Steve Jessop
58

Si lo que está diciendo es cierto y la especificación no es lo suficientemente buena como para que pueda comenzar (y está siendo honesto en esta evaluación), le recomiendo este enfoque:

  1. Lea los bocetos y la especificación "incompleta" que le han dado.
  2. Escriba su propia especificación a un nivel que sea suficiente para que pueda codificar. Puede que tenga que hacer un montón de conjeturas.
  3. Muestre sus especificaciones al cliente para su revisión. Tenga en cuenta las partes que les gustan y obtenga más información sobre las partes donde creen que se equivocaron.
  4. Repita los pasos 2 y 3 hasta que usted y el cliente estén sincronizados.
  5. Ahora tiene una especificación adecuada.

Si su cliente tenía razón cuando dijo "será fácil", entonces este ejercicio debería ser pan comido.

Si su cliente estaba equivocado y, de hecho, hay todo tipo de problemas y lagunas en los requisitos, su borrador de especificación ilustrará rápidamente el problema y les comunicará que estaban equivocados (sin necesidad de señalar con el dedo o discutir), ya que lo hará. estar justo en frente de ellos y obvio. Además, su especificación servirá como una gran herramienta de discusión para resolver esas ambigüedades y servirá como un registro de decisiones clave a medida que la revise con sus comentarios.

John Wu
fuente
27
A veces puede engañar al cliente llamando a su especificación un "horario de trabajo" (que sus cerebros no programadores aceptan como algo amigable y útil para un proyecto) en lugar de una "especificación" (que, en el caso de los clientes como este, que son hostiles a todos los principios básicos de participación en el proceso de desarrollo, sus cerebros no programadores piensan como una tediosa pieza de papeleo pedante que los programadores les hacen hacer sin una buena razón).
Steve Jessop
En el segundo punto, te sugiero que solo escribas las especificaciones técnicas para el desarrollador. De lo contrario, el desarrollador no podría comenzar su trabajo. De esta manera, puede colaborar con el equipo de negocios en paralelo sobre la naturaleza del trabajo que se va a desarrollar. De esta forma, tanto el equipo de desarrollo como el de negocios se sincronizan entre sí en cuanto a los requisitos.
Karan
3
your draft specification will quickly illustrate the problem and communicate to them that they were wrong (....) since it will be right in front of them and obvious- Me gustaría señalar que los clientes que se dan cuenta de lo obvio que es todo esto son exactamente los clientes con los que nunca tendrá ese problema. O, para decirlo de manera más sucinta: la solución implica la no existencia del problema (que es una paradoja reconozco más y más a menudo en todos los ámbitos de la vida) ...
Radu Murzea
1
Hay algunas personas que nunca lo "entenderán", pero en mi experiencia a menudo ayuda mostrarles un ejemplo del nivel de detalle que necesita, y mostrarles el tipo de decisiones "incorrectas" que puede tomar cuando los requisitos son ambiguo.
John Wu
18

El dueño del producto le entregó un prototipo; devuélvelo mejores (hasta que hayas terminado)

Parece que se le ha proporcionado un prototipo en papel para comenzar el proyecto. Ese no es un comienzo terrible. Le sugiero que se comunique con el propietario del negocio en el mismo idioma , proporcionando prototipos con capacidad progresiva.

Sus prototipos deben comenzar con papel, pasar a maquetas digitales y luego construirse con tecnologías "reales".

Treehouse tiene una excelente guía para esto, que concluye:

Lo maravilloso de la creación de prototipos con un marco es que el prototipo a menudo simplemente se convierte en el sitio real porque la estructura y el estilo ya están en su lugar. No es necesario recrear el sitio desde cero si va a usar el mismo marco.

Es posible que también desee proporcionar una especificación formal, especialmente si sigue preocupado por la culpa de un mal resultado. Pero probablemente obtendrá más comentarios de los prototipos.

Cumpla su fecha límite

Tenga en cuenta que sus esfuerzos posteriores no serán "prototipos" clásicos como todos, ya que no serán desechables (o parte de ellos no lo serán). La última iteración más capaz que complete antes de la fecha límite se convierte en su entrega.

Su fecha límite es el requisito mejor definido que tiene. Tenga algo completo y coherente que pueda entregar a tiempo.

Colabora con tus evaluadores

Si este proceso laxo es algo nuevo para su empresa, es probable que sus evaluadores estén aún más perdidos de lo que usted está, y pueden estar buscando su orientación. Tienes que obtener algo de su tiempo al principio del proceso. Hágales saber a su jefe que está tratando de ayudarlos a proporcionar una prueba significativa sin recibir criterios formales de aceptación.

Averigüe si los evaluadores tienen algo firme que necesiten proporcionar, como documentación de prueba de prueba, en la que usted pueda "volver".

Prueba Test First Design

Dado que no tiene requisitos formales, lograr que se desarrollen casos de prueba proporcionaría cierta estructura.

Obtenga una familiaridad pasajera con Test First Design y / o desarrollo impulsado por pruebas y brinde orientación a sus evaluadores sobre el proceso según sea necesario. Para un proyecto rápido como este, no necesita convertirse en experto en el proceso. Pero el uso de una metodología probada se reflejará bien en usted y sus evaluadores.

Cumplir con los estándares, especialmente para la interfaz de usuario

No tiene requisitos de apariencia, pero sí tiene una fecha límite. Utilice el trabajo de diseño de otra persona para minimizar el trabajo que necesita hacer para crear un artefacto de aspecto profesional.

Elija una IU estándar para su sitio y no la personalice a menos que / hasta que se le indique. No sé para qué plataforma está desarrollando, pero Bootstrap o Google Material Design son dos ejemplos.

Comunícate, pero no molestes

Sugeriría enviar un correo electrónico al propietario del producto por día. Solo envíe más que eso si es una emergencia.

Si tiene preguntas, describa cómo procederá si no recibe orientación. Por ejemplo:

¿Los usuarios de esta aplicación deberán acceder a ella con dispositivos móviles? En este momento estamos asumiendo que este será un sistema de computadora de escritorio / portátil.

No se asuste

He participado en muchos proyectos para personas que no conocían el término "requisito". La mayoría tuvieron éxito. Los propietarios de productos sin manos le dan la libertad para crear soluciones excelentes.

Tenga en cuenta que algunos propietarios de proyectos en estos proyectos eran imposibles de complacer y se escondieron detrás de la excusa "Estoy demasiado ocupado para ..." por su incompetencia. Pero la mayoría estaba "encantada" con los resultados finales.

Tim Grant
fuente
El único punto que no se menciona es la fecha límite estricta: será importante que se entregue algo en esa fecha y que funcione (siga los movimientos), incluso si faltan las campanas, los silbatos y las rayas más rápidas. Con esa limitación en su lugar, todos los otros puntos que hace @Tim deberían ir bien
Philip Oakley
@PhilipOakley, gracias por los comentarios. Agregué un punto sobre el proceso iterativo de creación de prototipos que debería producir "entregas" cada vez más aceptables para evitar una fecha límite perdida. Avísame si eso ayuda.
Tim Grant
Eso es una mejora. Tal vez incluso cambiar 'Reunión' a 'Reunión' para ser más imperativo. Entonces, tal vez también agregue la afirmación de que si han dado una fecha sin las otras cosas, entonces ese se convierte en el requisito clave, de modo que la siguiente 'Nota' tenga contexto. (a menudo, los clientes solo se preocupan por el tiempo y el costo, el resto son cosméticos y moda, como estoy seguro de que saben ;-)
Philip Oakley
10

Un proyecto es el acto de reducir la incertidumbre hasta lograr la certeza :

  • Siempre hay cierto grado de incertidumbre al comienzo. A veces hay una pequeña ambigüedad en los requisitos. A veces, son muy incompletos. Tendrás que ejercitarte como parte del trabajo.
  • El truco consiste en reducir de forma iterativa esta incertidumbre (combinando análisis, diseño e implementación), refinando historias de usuarios e implementando su sistema.
  • Pruebas de casos / escenarios, y los criterios de aceptación deberán aclararse de la misma manera. Contribuirán a reducir la incertidumbre sobre la calidad y la corrección (entre otros).
  • Al final, se alcanza una certeza suficiente: el cliente obtiene un producto probado que se ajusta a sus necesidades y puede ser utilizado.

Ese es el principio de elaboración progresiva: los requisitos, criterios y resultados se elaborarán paso a paso, al igual que la comprensión del cliente de sus propias expectativas y requisitos a través de su participación en el proceso de desarrollo.

Es esto un problema ?

Cuanto más incompletos sean los requisitos iniciales, mayor será la incertidumbre y mayor será el tiempo necesario para realizar las tareas. Entonces es solo una cuestión de quién hará el trabajo adicional y quién pagará los costos.

La respuesta de estas dos preguntas debe estar en el contrato. O será objeto de una negociación. Y el cliente debe aceptar una participación adicional (el argumento principal será "basura adentro, basura afuera", aunque le aconsejo encarecidamente que lo presente de una manera más diplomática ;-))

Christophe
fuente
1
Amo la primera oración. El principio de esto es que el cliente podría: 1) no estar seguro de lo que quiere, 2) cambiar de opinión a medida que avanza, 3) querer algo inalcanzable. Pero si este es realmente un proyecto simple, entonces tiene una buena posibilidad de tener éxito.
1
Este es oro.
Bruno Guardia
8

" No hay reuniones regulares programadas ". Bueno, ¿por qué no comienzas por programar reuniones regulares entonces? El solo hecho de que tenga múltiples propietarios de productos garantiza que su proyecto NO será fácil, ya que cada una de esas personas TENDRÁ requisitos en conflicto que DEBEN discutirse en persona con todas las partes interesadas presentes.

Además, realmente, realmente, realmente recomiendo que mantenga un registro detallado de decisiones . Como mínimo, debe escribir todo lo que alguien ha decidido, con la fecha y una lista de las personas que estuvieron presentes cuando se tomó la decisión. Aún mejor si puede escribir POR QUÉ algo se decidió de la manera en que fue. No importa si es un archivo en su PC, una página en su wiki de intranet o un cuaderno en su escritorio. El registro lo protege a usted y al proyecto: cuando un probador dice que un elemento "falla", puede señalar que se decidió de esa manera con estas personas, y no es su problema sino entre ellos y los probadores. Si esto lleva a que se cambien las especificaciones, entonces está bien, pero en este punto no pueden esperar cumplir con ninguna fecha límite que tenían en mente, o deben cortar el alcance en otro lugar.

Cero uno
fuente
8

Un proyecto sin requisitos claros, liderazgo laxo, sin definición de hecho (DoD), nadie dispuesto a ser responsable de asegurarse de tener la información que necesita para hacer su trabajo de manera oportuna y cumplir con su fecha límite es una receta para el proyecto fracaso.

El desarrollo iterativo no es una mala sugerencia, pero requiere una estrecha cooperación entre los propietarios del producto y los desarrolladores. Intente poner a alguien en el gancho diciendo: "Sabemos que vamos a tener preguntas. ¿Quién puede estar disponible regularmente para asegurarse de que se respondan para que la entrega del proyecto no se demore?" Programe horarios regulares con alguien para revisar el progreso y eliminar los impedimentos. Si no se muestran, o se niegan, entonces haga un seguimiento con correspondencia escrita amable y demoras o no respuestas de los documentos. Si los propietarios del producto no pueden estar disponibles, pídales que proporcionen un representante que pueda estarlo.

Además, otro sello distintivo del desarrollo iterativo es que un cambio en los requisitos requiere un cambio en la línea de tiempo. No puede comprometerse a cumplir una fecha límite si no puede desarrollar una línea de tiempo, y no puede desarrollar una línea de tiempo si no tiene una buena idea de lo que debe hacerse. En lugar de pedir dogmáticamente una especificación, revise la especificación actual, documente cualquier pregunta que usted o el equipo tengan sobre cómo se supone que debe funcionar, programe un tiempo con los propietarios del producto para discutirla y documente las respuestas. Cuando haya terminado, tendrá sus especificaciones basadas en sus decisiones, que luego puede hacer que los propietarios de los productos acepten (por escrito). El propósito de una especificación es eliminar la ambigüedad y crear un DoD, que es exactamente lo que podría proporcionar una sesión de preguntas y respuestas. Si hay oposición a una especificación, no la llame especificación.

No le creas a nadie cuando te digan que será fácil . A veces es realmente tan simple como parece, y podría creer esto si (y solo si ) conozco a los propietarios de los productos lo suficientemente bien como para confiar plenamente en que los requisitos realmente son tan simples como dicen, y las especificaciones que he tenido siempre que se expliquen por sí mismos (si no, programo una sesión de preguntas y respuestas y la documento). He estado en muchas situaciones donde es fácil desde el punto de vista de las operaciones increíblemente difícildesde el punto de vista del desarrollo, o crees que estás totalmente acabado y escuchas las palabras de desesperación ("Oh, por cierto, nos olvidamos de ..."). Ejemplo ... "Todo lo que tiene que hacer es leer estos archivos PDF de un repositorio de documentos", que, durante las pruebas de aceptación, se convierte en "Oh, olvidamos que algunos de estos fueron leídos de lado de una manera completamente inconsistente, y algunos tienen el tamaño de página incorrecto definido, y otros necesitan que se agreguen estas tres páginas, y nosotros necesitamos que todas muestren lo mismo. Eso es realmente fácil de arreglar, ¿verdad? ".

El punto es que podría ser realmente fácil, y una reunión rápida podría confirmarlo, permitiéndole documentar todos los supuestos y obtener la confirmación de que son precisos y correctos. Recomiendo ponerse de pie para eliminar los impedimentos que tiene que escribir un código de trabajo que cumpla con sus expectativas, ya que independientemente de si pisa los pies, alguien probablemente estará infeliz al final de todos modos. Si persiste en obtener respuestas a las preguntas e irrita a alguien, se olvidarán de eso cuando entregue un excelente producto a tiempo que cumpla con los requisitos. Si no obtiene una aclaración y no entrega, nadie recordará que le dijeron que no los molestara.

DVK
fuente
3

Sin una especificación, tienes trabajo en equipo. Ve ágil

Siéntese con el PO y desarrolle una pequeña historia de inicio. "Vamos a entregar solo esta pantalla, con solo este botón que dice 'bing!'". Decídase por algunos AC. Entregar la historia. Demuestra la historia. Resulta que los botones deben ser rojos. Levanta un error o una nueva historia. Entregue los botones que van bong y bang. Y así.

En colaboración, especifique y entregue pequeños cortes verticales que se demuestran con frecuencia.

Si el cliente no trabajará con usted de esta manera, busque una salida.

Grimm The Opiner
fuente
-1

He pasado varios trabajos haciendo proyectos tal como lo describiste. Mientras el PO sepa qué decisiones de diseño está tomando y por qué tiene que tomarlas, debería estar bien. Si, por otro lado, no entienden las decisiones de diseño, debe presionarlas para obtener al menos un documento de prueba de aceptación del usuario por escrito.

Robert Baron
fuente
-2

Necesita una especificación detallada y verificable antes de comenzar a escribir código. Eso es un hecho, y no hay forma de evitarlo.

Si nadie más está dispuesto a escribir esa especificación, entonces los desarrolladores tienen que escribirla. Entonces obtienes una especificación incompleta. Lo convierte en una especificación completa (que significa "esto es lo que voy a implementar a menos que alguien más me diga que no lo haga"). Usted entrega esa especificación a las partes interesadas y les da la oportunidad de modificar la especificación. Solo una oportunidad para modificar la especificación, sin anular su especificación, por ejemplo, diciendo "No me gusta de esta manera". En ese punto, es su especificación, o pueden proporcionar una especificación diferente, pero no eliminar la especificación.

Puede ser una buena idea obtener una revisión rápida de sus colegas que podrían mejorar la especificación. Pero de todos modos, tiene una especificación, escribe el código en consecuencia, los probadores prueban en consecuencia. Y ha hecho su trabajo: tenía una especificación y la implementó. Si la especificación no es lo que el cliente quiere, es responsabilidad directa del propietario del producto o del cliente que no se molestó en escribir una buena especificación.

gnasher729
fuente
66
"Necesita una especificación detallada y verificable antes de comenzar a escribir código. Eso es un hecho, y no hay forma de evitarlo". Mis compañeros de trabajo y yo lo hemos hecho en muchos proyectos y hemos tenido muchos éxitos y muy pocos fracasos. Su reclamo no es absoluto.
cuál es el
1
@whatsisname estuvo de acuerdo. Yo también he escrito código de esta manera. Esto sucede cuando la tarea tiene un aspecto exploratorio. Ahora hay inconvenientes en la codificación sin una especificación, pero a veces son más aceptables que decir que no se puede lograr un objetivo.
Cort Ammon
1
@whatsisname, la redacción podría mejorarse, pero la verdad básica es que no puede cumplir una solicitud sin comprender lo que es. Si solo digo: "Escríbeme un programa en Java", es imposible que escribas ese programa. Puede inventarse su propia idea de lo que debe hacer el programa, en otras palabras, inventar su propia meta y luego cumplirla, pero es una imposibilidad pura alcanzar una meta que nunca ha sido establecida por nadie, incluido usted. Esto se aplica a cualquier solicitud, grande o pequeña; las necesidades y los deseos deben entenderse antes de que pueda hacerlos, producirlos y / o presentarlos.
Comodín
Dicho esto ... el nivel de detalle que una solicitud realmente requiere para ser entendido y cumplido puede sobreestimarse drásticamente. También puede ser bajo estima. La única solución a esto es la comunicación.
Comodín el
@Wildcard: sí, creo que la redacción podría aprobarse mucho. Lo que intenta decir es una reminiscencia de la paradoja de Zenón, pero menos convincente.
cuál es el