¿Debo crear una aplicación con todas las funciones o una simple y luego agregar funciones lentamente?

11

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?

Kyle Vancamp
fuente
1
Posible duplicado del consejo de programación contradictorio
mosquito
3
Olvídate del marco en este contexto. Crea una aplicación, no un marco sofisticado.
keuleJ
2
no importa lo que hagas, en última instancia, estarás construyendo una pieza a la vez .building dijo "framework", que con suerte significa algo más que escribir un framework a medida que avanzas. La pregunta es, ¿quieren que liberen lo antes posible y den su opinión ... esta suele ser la mejor ruta. Además, sin ofenderlo, probablemente debería sugerir que traigan a un desarrollador senior para que lo ayude con una aplicación de este tamaño. Lo que quieran, probablemente piensen que se puede hacer más rápido y más barato de lo que puede ser.
xenoterracide

Respuestas:

29

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.

Jerry Coffin
fuente
Muy buen punto con la distinción entre lo que piden y necesitan y lo que creemos que hacen. Creo que la mayor duda en la que estaba pensando era que entre el momento en que nos dicen lo que quieren y el momento en que encontramos una solución, sus deseos cambian por completo. Pero supongo que pequeño y simple es definitivamente más fácil de cambiar que con todas las funciones.
Kyle Vancamp
2

¿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.

John Kouraklis
fuente
2

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.

Jonathan Wood
fuente
1

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.

Bhavya Aggarwal
fuente