¡Capitán obvio al rescate!
Seré el Capitán Obvio aquí y diré que hay un término medio para encontrar.
Desea construir para el futuro y evitar encerrarse en una elección tecnológica o un mal diseño. Pero no desea pasar 3 meses diseñando algo que debería ser simple, o agregando puntos de extensión para una aplicación rápida y sucia que tendrá una vida útil de 2 años y es poco probable que tenga proyectos de seguimiento.
Es difícil encontrar la distinción, porque no siempre puede predecir el éxito de su producto y si necesita extenderlo más tarde.
Construye por ahora si ...
- el proyecto va a ser desechado
- el proyecto tiene una corta vida útil
- el proyecto no debe tener extensiones
- el proyecto no tiene un valor de impacto de riesgo (principalmente en términos de imagen)
En general, los proyectos internos o algo construido para un cliente deben desarrollarse por ahora. Asegúrese de tener requisitos directos y relacionarse con ellos según sea necesario para saber qué se necesita y qué no. No quiero pasar demasiado tiempo en algo que sea "agradable tener". Pero tampoco codifiques como un cerdo.
Deje el problema general para más adelante, si alguna vez es necesario y vale la pena el esfuerzo:
Construir para el futuro si ...
- el proyecto sera publico
- el proyecto es un componente para ser reutilizado
- el proyecto es un trampolín para otros proyectos
- el proyecto tendrá proyectos de seguimiento o lanzamientos de servicios con mejoras
Si está construyendo para algo público, o que se va a reutilizar en otros proyectos, entonces tiene una probabilidad mucho mayor de que un mal diseño vuelva a perseguirlo, por lo que debe prestar más atención a eso. Pero no siempre está garantizado.
Pautas
Diría que adhiera a los siguientes principios lo mejor que pueda, y debe ponerse en la posición de diseñar productos eficientes y adaptables:
- saber que YAGNI ,
- BESO ,
- cada vez que tenga ganas de rascarse una picazón y piense en una adición, escríbala. Revise los requisitos de su proyecto y pregúntese si las adiciones son prioritarias o no. Pregunte si agregan valor comercial primario o no.
Sé que personalmente tiendo a pensar demasiado y a diseñar demasiado. Realmente ayuda a escribir ideas y muy a menudo repensar si necesito funciones adicionales. A menudo, la respuesta es no, o "sería genial más tarde". Esas últimas ideas son peligrosas, porque permanecen en la parte posterior de mi cabeza, y necesito forzarme a no planearlas.
La mejor manera de codificar sin ingeniería excesiva y sin bloquearse para más adelante es centrarse en un buen diseño minimalista. Divide las cosas muy bien como componentes que luego puedes extender, pero sin pensar ya en cómo se pueden extender más adelante. No puedes predecir el futuro.
Solo construye cosas simples.
Dilema
Sobreingeniería
¿Es esta una tendencia que los programadores suelen seguir cuando realizan un proyecto como este?
Demonios si. Es un dilema conocido, y solo muestra que te importa el producto. Si no lo hace, eso es más preocupante. Existe un desacuerdo sobre si menos es siempre más o no y si lo peor es siempre mejor . Puedes ser un tipo de chico del MIT o de Nueva Jersey . No hay una respuesta fácil aquí.
Creación de prototipos / Quick-n-Dirty / Less es más
¿Es una tendencia típica solo mezclar un ejemplo viable lo antes posible?
Es una práctica frecuente, pero no es cómo se aborda la gran mayoría de los proyectos. Aún así, la creación de prototipos es una buena tendencia en mi opinión, pero con una desventaja media. Puede ser tentador promover prototipos rápidos y sucios para productos reales, o usarlos como base para productos reales bajo presión de gestión o limitaciones de tiempo. Es entonces cuando los prototipos pueden volver para atormentarte.
Existen ventajas obvias para la creación de prototipos , pero también un gran potencial para el uso indebido y el abuso (muchas como el resultado inverso exacto de las ventajas enumeradas anteriormente).
¿Cuándo usar prototipos?
Hay pistas sobre los mejores tipos de proyectos para usar prototipos :
[...] la creación de prototipos es más beneficiosa en sistemas que tendrán muchas interacciones con los usuarios.
[...] la creación de prototipos es muy efectiva en el análisis y diseño de sistemas en línea, especialmente para el procesamiento de transacciones, donde el uso de diálogos de pantalla es mucho más evidente. Cuanto mayor sea la interacción entre la computadora y el usuario, mayor será el beneficio [...]
"Uno de los usos más productivos de la creación rápida de prototipos hasta la fecha ha sido como una herramienta para la ingeniería iterativa de los requisitos del usuario y el diseño de la interfaz humano-computadora".
Por otra parte:
Los sistemas con poca interacción del usuario, como el procesamiento por lotes o los sistemas que realizan principalmente cálculos, se benefician poco de la creación de prototipos. A veces, la codificación necesaria para realizar las funciones del sistema puede ser demasiado intensa y las ganancias potenciales que los prototipos podrían proporcionar son demasiado pequeñas.
Y si tienes un monstruo verde alrededor, solo asegúrate de mantener un prototipo dentro del presupuesto ...