Me parece que algunos desarrolladores de software son muy expertos en esto, y muchas veces son elogiados por su capacidad de ofrecer un concepto de trabajo con requisitos abstractos. Francamente, esto me vuelve loco, y no me gusta "inventarlo" sobre la marcha. Solía pensar que esto era problemático, pero comencé a sentir un cambio, y me pregunto si necesito ajustar mi proceso de pensamiento (y programación) cuando me dan muy poca dirección. ¿Debo comenzar a adquirir esta habilidad como una habilidad, o apegarme a la idea de que la recolección de requisitos y las reglas comerciales son la primera prioridad?
44
Respuestas:
La habilidad no es escribir software sin requisitos. Es, en cambio, obtener requisitos del propietario del proyecto, independientemente de si hay una documentación de requisitos formal o no.
Definir los requisitos es definitivamente su primera prioridad, pero no necesariamente necesita tener todas las necesidades del cliente anotadas por adelantado. El riesgo es, por supuesto, que podría perderse alguna información vital que inutilice la arquitectura de su sistema si no ha logrado tener el tipo correcto de conversaciones con su cliente, sin embargo, no es inusual definir un producto e incluso obtener gran parte del desarrollo fuera del camino, mientras que difiere las principales decisiones de arquitectura del sistema hasta el último momento posible. Este es un enfoque de desarrollo optimizado que tiene como objetivo garantizar que no se comprometa con una arquitectura potencialmente incompatible demasiado pronto en el desarrollo de su producto hasta que tenga información más sólida. En las situaciones que el OP ha descrito en su pregunta,
Sí, a veces es necesario mirar un poco con la bola de cristal para llegar al corazón de lo que realmente está pidiendo el cliente, que es donde los picos de creación de prototipos y la lenta, y sí a veces dolorosa, requiere un aumento gradual de los requisitos. que realmente desarrolla buenas habilidades de relación con el cliente, y también la paciencia para darse cuenta de que con cualquier idea de software compleja, al principio, el cliente a menudo no sabe mucho más que usted sobre lo que el software realmente necesita hacer. Muy a menudo, el cliente lo llama temprano para depender de su experiencia para definir sus requisitos, ya que el cliente no siempre tiene la experiencia o el conocimiento necesarios del proceso de desarrollo de software.
fuente
Esto es muy ambiguo ...
Dos cosas que puedo decir:
Hay muchas personas técnicas muy talentosas cuyas carreras se detienen porque esperan los requisitos perfectos. O juegan el "Lo siento, no puedo hacerlo, no estaba en los requisitos". La realidad es que la escritura de requisitos es muy difícil. La precisión requerida para los buenos requisitos es diferente a cualquier cosa que la mayoría de los empresarios haya creado. Hay un puente entre la tecnología y el negocio, y las personas que hacen que los demás lleguen al 100% del camino para conocerlos generalmente pierden.
Hay personas de software que aprenden los dominios como buenos o mejores que sus clientes. Estas personas valen su peso en oro, incluso si no son 100% los mejores desarrolladores. He visto a personas de software anticipar las necesidades cuantitativas de marketing de los mejores gerentes de marca del país. No eran los mejores para codificar todas las soluciones, pero eran héroes porque podían cruzar el puente.
Sin embargo, la vida no se trata de negros y blancos. Si dibujas un cuadro estrecho a tu alrededor, te limitarás. Por otro lado, una organización que descarta lo que se necesita para crear tecnología también es limitada. Tendrás que ver en qué parte del gris prefieres estar.
fuente
Los requisitos son los pasos en el viaje, una visión es la dirección
Para muchas aplicaciones, una especificación técnica altamente detallada es demasiado inicial, ya que una discusión rápida podría hacer que su documento cuidadosamente escrito sea inútil. En cambio, comience con una visión. Si todos entienden el panorama general, los requisitos pueden cumplirse en el camino a través de discusiones.
Como desarrollador, debe aprender a utilizar estas discusiones para rastrear los requisitos . Esto significa hacerle al cliente preguntas importantes que lo hagan pensar acerca de cómo su decisión de hoy encaja en la visión general. Cuanto antes tengan lugar estas discusiones más detalladas, más rápida se solidificará la visión general en un diseño coherente.
Debe realizar un seguimiento del resultado de estas discusiones en algún tipo de rastreador de problemas para que otros puedan comentarlas si se perdieron la discusión original. Y para que tenga un registro que usted u otros miembros de su equipo puedan consultar si necesita aclaraciones.
Por lo tanto, aprenda a codificar contra la visión, pero esté listo para rastrear esos requisitos cuando llegue el momento.
fuente
Steve Jobs cree que los clientes no pueden describir exactamente cómo quieren que sean los productos futuros, por lo que es su trabajo entregarlos. Entonces, a menos que entregue software personalizado todo el tiempo, olvide las especificaciones formales y comience creando prototipos y dejando que los clientes jueguen con ellos y le digan lo que piensan. Tienes que poner a la persona adecuada haciendo los prototipos, y necesitan ayuda. Lo digo por experiencia: soy el mono de prototipos que ama crear interfaces intuitivas y me uní a alguien en un producto que entiende lo que los clientes quieren y puede explicar las cosas en papel o usando Excel.
Ninguno de los dos somos genios, pero pensamos igual: casi se puede decir que tenemos química y hemos tenido un gran impacto sobre qué cosas se están construyendo y cómo. Ahora, solo un equipo de mediano a grande puede permitirse tener un prototipo y un no codificador que desarrolle productos exclusivamente, pero vale la pena. La creación de prototipos es la etapa más barata en el desarrollo de software, por lo que solo tiene sentido obtener la interfaz de usuario y el comportamiento aparente correcto. No he leído Code Complete pero creo que hay algo así escrito en ese libro.
Es bueno tener especificaciones, pero nunca son perfectas. Existe un teorema sobre eso. No puede probar que la especificación está completa y no puede probar que la herramienta no tiene errores o que se detendrá :)
Sin embargo, las compañías de software envían software todo el tiempo a pesar de estas imperfecciones en el proceso. La especificación nunca será perfecta. La especificación también es NO NATURAL y obsoleta. Una especificación para un prototipo es como una tabla de logaritmos para un solo gráfico: una especificación es esencialmente un folleto aburrido destinado a ser impreso, mientras que en su lugar podría interactuar con una herramienta / gráfico. Visite http://www.i-programmer.info/news/112-theory/3900-a-better-way-to-program.html para obtener inspiración.
Ahora, la especificación es buena si debe tener un contrato para cubrirse el trasero. Pero una especificación aún debe venir después de un prototipo, no antes. Es su trabajo descubrir cómo hacer que los prototipos sean baratos.
fuente
A menudo he descubierto que en algunas situaciones necesito actuar como analista de negocios, descubriendo exactamente cómo funciona actualmente el negocio, cómo las personas piensan que funciona (a menudo cosas muy diferentes) y cómo les gustaría que funcionara.
He tenido éxito al ser siempre claro acerca de las decisiones que me veo obligado a tomar para construir el software. Explico mi razonamiento, escribo documentación sobre lo que he descubierto, hago gráficos y los distribuyo a todos, etc.
Probablemente no causará una muy buena impresión al negarse a hacer cualquier trabajo hasta que se entreguen los requisitos completos. Pero al reunir los requisitos de buena calidad usted mismo (sin necesariamente llamar la atención sobre el hecho), alcanzará el mismo objetivo del software de calidad.
Y sí, como han dicho otros comentaristas, siempre cree el software asumiendo que cambiará. El cambio es la única constante en la que puede confiar. Siempre cree su software lo suficientemente flexible y modular para que no sea doloroso actualizarlo cuando de repente aparezcan nuevos requisitos.
fuente
Si quieres trabajar como desarrollador de software en una startup, es una habilidad que debes poseer.
Si desea trabajar en una empresa de consultoría, es una situación que debe evitar a toda costa. Esto se debe a que a su empresa se le paga de acuerdo con lo bien que implemente las especificaciones / requisitos y no con lo bien que resolvió el problema del cliente.
Si está buscando diversión en su tiempo libre, entonces es su decisión. Si no se siente calificado para hacer la llamada para sus proyectos de tiempo libre, intente un par en cada sentido y vea qué funciona. Además, no es necesariamente una cosa única para todos, algunos proyectos requieren uno u otro tipo de enfoque. Por lo general, si elige el incorrecto en uno de estos proyectos, lo resolverá bastante rápido.
fuente
Un poco de ambos. Necesita satisfacer a sus clientes, lo que significa que necesita saber lo que quieren. Por otro lado, los clientes son notoriamente malos en comunicar lo que realmente quieren.
Por lo tanto, desea evitar escenarios en los que no sabe qué quieren los clientes, pero inevitablemente se encontrará con un escenario en el que los requisitos son "blandos" en el mejor de los casos y engañosos en el peor. Un buen programador del mundo real requiere adaptabilidad.
fuente
No es posible escribir un programa sin requisitos. Incluso el 'Hello World' tiene el requisito: producir resultados. Entonces, creo que está preguntando acerca de los requisitos formales, en forma de una gran pila de algo similar a UML. Y con respecto a eso, he conocido a 2 tipos de personas:
1) Personas que necesitan requisitos formales. Necesitan que se les diga exactamente qué hacer y, en el mejor de los casos, cómo hacerlo. Aman las oraciones como El procedimiento A tomando el argumento B dará como resultado C , y las odian: el programa debería hacer que el trabajo de nuestro departamento sea más efectivo . Suelen ser animales corporativos.
2) Las personas que son opuestas a 1. Odian que se les diga qué hacer y cómo hacerlo, les encanta que les digan lo que se debe lograr. Les gusta hablar con el cliente, analizar lo que dicen y luego desarrollar su propia solución. Por lo general, son autónomos y no se ajustan bien a la corporación.
No diré cuál de esos es mejor. Ambos tienen sus pros y contras. Son simples adecuados para las otras condiciones.
fuente
NO puede desarrollar software operativo sin conocer los Requisitos; pero, puede tener una buena puñalada para desarrollar lo que su experiencia le dice que es probable que los Requisitosser. El desarrollo ágil utiliza una combinación de técnicas "intuitivas", incluida la regla 80:20 y el "descubrimiento" de requisitos mediante creación de prototipos. En otras palabras, un equipo de desarrollo experimentado adivina lo que se necesita y produce un prototipo del software. La regla 80:20 dice que serán 80% correctos. Las partes interesadas del proyecto luego revisan el prototipo tangible. Sus comentarios comienzan a llenar el vacío del 20% en nuestra comprensión de los Requisitos. Entonces, en efecto, Agile no se trata de escribir software sin ningún requisito, más bien se trata de usar su experiencia previa para decir: "¿Quieres algo como esto?" Lo cual, en el 80% de los casos, le permitirá avanzar y confirmar lo que realmente se necesita más rápido que avanzar a través de los procesos tradicionales de Requisitos.
fuente
¿Quién dijo que Agile estaba escribiendo código en ausencia de requisitos? Sé que el Manifiesto ha sido interpretado de esta manera por algunos ... pero eso no lo hace correcto.
fuente