Trabajo en una planta de fabricación que le ha encargado a TI la creación de un programa de programación de planta (que es muy necesario). Según la experiencia de otros, sería mejor tomar menos tiempo y desarrollar un marco básico que sea utilizable y luego construir sobre eso agregando características o comenzar creando una solución completamente implementada desde el principio. Solo he sido desarrollador durante aproximadamente un año y no tengo mucha experiencia con la creación inicial de aplicaciones de este tamaño. Me he inclinado hacia la idea de que una aplicación básica es el camino a seguir primero debido a la extrema necesidad de algún tipo de programación digital, pero me preocupa que agregar funciones aleatorias después del hecho pueda ser un poco complicado. Si estuvieras en la misma situación, ¿hacia qué camino te inclinarías?
fuente
Respuestas:
La experiencia definitivamente lleva a construir algo pequeño y simple, y a llevarlo a los usuarios lo antes posible. Agregue características y capacidades según lo soliciten los usuarios.
Es muy probable (casi seguro) que lo que quieren / piden no se parecerá mucho a lo que habrían construido por su cuenta (si es que lo han hecho).
En cuanto a que las cosas se complican a medida que agrega a su aplicación original: bueno, esta es la razón por la cual Agile (y la mayoría de las metodologías similares) ponen un fuerte énfasis en las pruebas y la refactorización. Refactorizar significa limpiar el código a medida que haces cambios, y un conjunto de pruebas sólido (que ejecutas cada vez que haces cambios) asegura que si / cuando introduces errores sabes de ellos (casi) inmediatamente, de modo que cuando liberas algo para sus usuarios tienen una garantía razonable de que realmente funciona.
fuente
¿Tiene alguna idea de si se toman en serio la aplicación, entonces es posible que no desee crear marcos, etc., etc.
Sin embargo, necesitas encontrar un equilibrio. El desarrollo ágil sugiere que se concentre en lo que requiere la aplicación en esta etapa, pero esto no significa que tenga que limitarse al descuidar el diseño básico. Hay cosas que pueden verse fácilmente (y sí, la experiencia juega un papel aquí) y otras que no puedes imaginar en esta etapa (estoy bastante seguro de que las personas que solicitaron la aplicación tampoco pueden imaginarlas).
No conozco los detalles de la aplicación de programación, pero puedo imaginar que el "tipo de citas" es algo con lo que se encontrará pronto. Quizás la gente no pida esto ahora, no es razonable esperar tal funcionalidad.
Abordaría este caso de la siguiente manera: crearía la infraestructura (el marco que usted menciona) creando una tabla en la base de datos para contener los tipos de citas, pero no me molestaría en crear la interfaz para agregar o seleccionar los tipos. Codificaría un tipo básico y seguiría con las características reales. Después de todo, nadie pidió incluir diferentes tipos de citas.
Luego, en el futuro, si las personas vuelven a usted pidiéndole esta característica, usted tiene la estructura y simplemente construye el extremo medio / frontal.
fuente
A menudo, no tiene suficiente información para construir un programa inicialmente completo. Las pruebas y los comentarios de los clientes casi siempre revelan partes de su diseño inicial que no fueron tan buenas como en teoría.
Dicho esto, si el problema se entiende bien y puede escribir un programa completo inicialmente, esto es mejor porque de lo contrario está refactorizando constantemente el código y el resultado rara vez es tan limpio como un diseño sólido que se siguió desde el principio.
Por lo menos, creo que es importante pensar detenidamente sobre el tipo de funciones que su programa podría necesitar. De esa manera, puede diseñarlo para que tales características se puedan agregar fácilmente dentro de la estructura existente.
fuente
Por experiencia personal: cree su MVP (producto mínimo viable) y luego agréguele características en función de los comentarios que reciba. Es fácil obtener toneladas de funciones y que nadie las use.
También es importante la experiencia del usuario que utiliza para resolver el problema. Valide el flujo de trabajo que crea con sus usuarios reales y luego agregue más funciones. De esa manera, puede concentrarse en el valor central que está construyendo.
fuente