¿Por qué el diseño de software es una parte importante del desarrollo de software?

Hola a todos,

Si está en el negocio de desarrollo de software, estoy seguro de que ha escuchado que el “diseño” es importante y que siempre debe diseñar primero y codificar más tarde. Esta “creencia” no es aceptada por todos de todos modos. No los culpo, porque realmente no podemos hacer buenos diseños la mayor parte del tiempo, entonces, ¿por qué molestarse de todos modos? Trataré de explicarte por qué deberías molestarte.

Una vez que comenzamos un proyecto, nos reunimos con el cliente o quien sea que nos está dando el trabajo y tratamos de entender lo que realmente quiere. Creo que esta es la parte más difícil en el ciclo de vida de desarrollo de software.

Conoció al cliente, entendió lo que quería y comenzó a codificarlo. Sí, no hay diseño porque no lo necesitamos, ¿verdad? Lo que el cliente quería era tan fácil y no había nada que diseñar de todos modos. Le mostraste a los clientes algunos prototipos, a él le gustó y seguiste codificando. Al final del primer hito (para que conozca un poco más sobre la gestión de proyectos y luego el diseño de software, agradable), le explicó al cliente cómo era su sistema, cómo podían usarlo y cómo se ajustaba a sus necesidades. El cliente lo miró y dijo: “No, eso no es lo que quería. En realidad quería esto y esto y aquello. No eso y esto y esto.

Maldita sea! Así que ahora tiene que encontrar dónde cambian todas las partes que el cliente quería cambiar, reescribir / rediseñar / refactorizar estas partes, hacer más pruebas, encontrar las otras partes del código que podrían haberse visto afectadas, etc. Es un trabajo infernal, ¿verdad? Aburrido y odioso.

Lo que te estoy diciendo no es que, si hubieras diseñado, este problema no hubiera ocurrido. Sería. ¡De Verdad! No es un problema de diseño, pero llegaremos a eso. Pero la importancia del “diseño” viene con este problema de comunicación. Si hubiera diseñado, habría perdido menos tiempo. Porque habrías pensado antes de ensuciarte las manos y tal vez habrías notado que algo andaba mal y pudiste arreglarlo durante las reuniones con los clientes antes de haber “desperdiciado” cualquier momento con la codificación.

El diseño es importante porque siempre lleva más tiempo escribir algo desde cero y luego cambiar algo que ya está allí. Con un buen diseño, el tiempo que pasa para cambiar algo también se minimiza. Es una situación de ganar-ganar, ¿verdad? El cliente está contento porque puede hacer los cambios lo más rápido posible y no maldecir su código por no permitirle personalizarlo fácilmente.

Espero que ahora esté de acuerdo en que el diseño es importante, sin embargo, como mencioné, el mal diseño no es un problema real en el proyecto de software: es la comunicación. El momento en que piensa que ha entendido a su cliente, es probablemente el momento en que ha cometido un terrible error en algún momento y probablemente le costará en términos de tiempo, esfuerzo y dinero.

Muchos desarrolladores de software no son buenos con sus habilidades sociales y eso es algo terrible. Ya no hay más codificadores de vaqueros que hemos visto en la televisión. El tipo nerd habitual que nunca sale y piratea todos los sistemas con facilidad. No hay tal tipo en la realidad. Necesitas un equipo, una colección de personas para hacer algo realmente. Ya no es un espectáculo de un solo hombre. Es un circo y necesita toda la ayuda que pueda obtener de muchas personas diferentes, incluidos consultores de dominio, gerentes de proyectos, dueños de negocios, gerentes de flujo de trabajo, departamentos de I + D, redactores de documentos, evaluadores, usuarios, etc. El software tiene una fiesta increíble. negocios ahora, ve y toma tu sombrero de fiesta en lugar de la silla de montar de tu caballo.

Lo que realmente nos falta es la parte de comunicación. El diseño importa porque no podemos comunicarnos de manera efectiva entre nosotros. Algunos pequeños puntos que extrañamos durante las reuniones, causan grandes problemas más adelante en el ciclo de vida. Con un buen diseño, realmente no resolvemos el “problema real” sino uno de los síntomas del problema real. Al “arreglar” los síntomas, puede perder la posibilidad de encontrar el problema real.

Echemos un vistazo al futuro ahora. El diseño es importante porque lleva mucho tiempo escribir algo desde cero. Pero, ¿y si no fuera así? Quiero decir, ¿qué pasaría si hubiera tomado menos tiempo escribir un software desde cero y luego cambiarlo? ¿No sería genial? Honestamente, el diseño ya no importaría. Puede comenzar desde cero en cuestión de minutos, por lo que realmente no tiene sentido tratar de diseñarlo. Y ahora que hemos alcanzado el título real del artículo, el diseño es importante “ahora” y probablemente lo será también durante una década. Sin embargo, no será relevante después de un tiempo. ¿Por qué? Debido a las herramientas CASE. Incluso ahora hay herramientas que lo ayudan a escribir el código con un diseño ya convencional.

Por supuesto, siempre habrá un software específico personalizado donde tendrá que escribir código, pero serán un software muy específico y, por supuesto, tendrá que diseñar en ellos. Pero la verdadera “crema” del software serán los ingenieros de requisitos, los tipos que realmente tratan de entender lo que el cliente realmente necesita y que también serán necesarios en un software específico. Como el software específico tiene algunos requisitos muy específicos, probablemente tendrán un salario más alto que los diseñadores y codificadores de todos modos.

Espero que esto te pueda ayudar.

Gracias.

¿Por qué los planos son una parte importante de los proyectos de construcción ?

¿Por qué los cocineros usan recetas ?

¿Por qué es una buena idea escribir una lista de tareas antes de abordar las tareas cotidianas?

Responda estas preguntas y es posible que también pueda responder la pregunta original.