He diseñado y observado que otros diseñen múltiples sistemas en el pasado y he visto que el proceso se desarrolla de muchas maneras diferentes, pero lo que encuentro común es que la arquitectura inicial debería al menos planificar la existencia de la mayoría de las características principales.
Por ejemplo, he visto un sistema de control de HVAC que no tenía el concepto de edificios, pisos, habitaciones, etc. que se adaptaron con esos y el resultado fue tan feo como parece. O un dispositivo de música móvil construido a partir de componentes más adecuados para su reloj de bolsillo (no inteligente). No hace falta decir que los productos finales en ambos casos no eran los favoritos de los clientes.
Cuando dices "concepción" eso es solo un paso más allá de "idea" y un concepto puede ser muy confuso. Las empresas generalmente se preocupan por los conceptos. Los clientes generalmente se preocupan por UX, un concepto hecho realidad de una manera fácil y agradable de usar y que aporta algo de valor a través de su uso.
Tienes que hacer un "concepto" antes de cualquier programación, no puedo imaginarme abrir un estudio visual (o tu IDE de elección) y escribir código al azar, para ver a dónde va.
Es posible que no realice un diseño completo (y no debería hacerlo) antes de codificar, pero debe tener un bosquejo aproximado del flujo de trabajo del usuario.
El diseño y la codificación de UX a menudo se alimentan entre sí, es probable que se vea obligado a utilizar un enfoque ágil para cualquier cosa que no sea el más pequeño de los proyectos como una forma de incorporar este hecho en la forma en que aborda el trabajo. Así que no pienses que eres el peor de los programadores si no pudieras verlo todo de una vez: nadie puede y las personas que piensan que sí son las que simplemente ignoran el problema lo suficiente para que puedan afirmar que tienen un problema completo. imagen.
Un ejemplo para poner un tamaño a algo grande. Concepto: "Crear una herramienta visual basada en la nube que permita a las empresas integrar sus plataformas de software". Esto suena genial y uno puede comenzar a escribir material de marketing y venderlo incluso antes de que esté allí. Tienes que tener esto antes de codificar.
Diseño previo: "Tener formas y flechas como en Visio para describir la lógica; tener capacidades de complemento para permitir conexiones a varias plataformas (SAP, SF, bases de datos ...); tener una consola de monitoreo donde uno puede buscar datos que pasan a través del sistema; tener una manera de describir datos visualmente y transformar un formato a otro ". Otro gran blob de marketing. También le da algunas ideas sobre lo que es importante, también debe tener un bosquejo aproximado antes de codificar.
Diseño / Código: "Tenga un diseñador HTML alojado en un navegador con tales características; codifique el backend en Java para que pueda ejecutarse en cualquier servidor existente; defina estructuras de datos y UX para consultarlas o modificarlas según sea necesario; planifique la recuperación ante desastres, error informes, registro de auditoría; control de versiones del plan; control de acceso del plan; .... "- cuanto más fina es la lista, más poco realista es prever todo.
... sin embargo, uno debe ser al menos consciente de cómo las cosas podrían terminar pareciendo más o menos, o su producto final podría terminar con algunas implementaciones realmente inútiles que terminan matando el concepto que suena de lo contrario, digamos que su diseñador visual requiere un 40 " pantalla para mostrar cualquier flujo de trabajo del mundo real, o no hay forma de buscar en los registros que no sea una coincidencia de cadena exacta limitada a uno de los 20 campos en el registro, etc. No hay una buena manera de evitar que esto suceda que no sea ejecutar su implementación - Algunos tendrán éxito, otros fracasarán.