¿Cuál es la diferencia entre el diseño y el trabajo de desarrollo en programación?

Para mí la distinción es muy clara.

El diseño es solo eso, estás diseñando la solución y cómo la construirás. Esto podría cubrir todos los requisitos reunidos o podría ser la solución técnica para los requisitos proporcionados.

La programación debe ser la construcción del software siguiendo los requisitos completos y las especificaciones de diseño y los planes de prueba. (Bien, entonces es raro obtener buenos y completos requisitos).

En el mundo real, un arquitecto crea el diseño para un gran bloque de torres, los ingenieros elaboran las especificaciones para que se destaque y cumpla con las regulaciones. Los constructores construyen el bloque de la torre, excavan los cimientos y vierten el hormigón.

Durante el proceso de construcción, todavía hay que tomar decisiones sobre el diseño, las especificaciones y cómo construir físicamente el bloque de la torre. Pero cada conjunto de habilidades sabe lo que está haciendo y su área de responsabilidad.

En el software, las distinciones entre los diferentes conjuntos de habilidades pueden fusionarse, por lo que el programador que necesita escribir el código a menudo tendrá que hacer preguntas sobre lo que debe lograr. Por lo tanto, el programador termina actuando como arquitecto, ingeniero y como constructor, lo cual no es una situación ideal, pero sucede muy a menudo.

Construyendo en el mundo real del acero y el concreto, todos los profesionales están altamente calificados en diferentes disciplinas, si un ingeniero de estructuras dice que el acero debe ser de un tamaño determinado, está construido para ese tamaño. Las personas que encargan el edificio no determinan el tamaño del acero utilizado ni ignoran las normas de construcción. (OK puede depender de dónde se encuentre en el mundo)

En el desarrollo de software, el número de personas que tienen calificaciones relevantes en esa materia puede ser muy bajo y cada uno tendrá una opinión. Las personas que comisionen el software esperarán que sus opiniones sean tomadas en cuenta.

Si está construyendo un edificio de 20 pisos, no puede agregar otros 10 pisos en la parte superior si los cimientos no pueden soportar el peso. En lo que respecta al software, no hay problema, volveremos a trabajar todo durante la noche una vez más. Quizás no sea sorprendente que tantos desarrollos de software tengan problemas.

La distinción entre ellos no es clara. Diseñar software es como planear un viaje, mientras que el desarrollo es como hacer ese viaje. Por lo general, se requiere una planificación adicional incluso después de que el viaje esté en marcha, para manejar detalles que no eran importantes (o no se conocían) antes de comenzar. Del mismo modo, el diseño del software continúa con niveles de detalle cada vez más bajos durante todo el proceso de desarrollo.

Creo que la diferencia clave (en la línea de la respuesta de Nicolae Marasoiu) es que el desarrollo debe incluir pruebas. Un diseño inicial podría considerarse completo después de algunos modelos informales (por ejemplo, bocetos en una pizarra). Incluso hay herramientas que pueden convertir automáticamente diseños más formales (por ejemplo, en UML) en código ejecutable. Pero el desarrollo no está completo hasta que el código haya sido probado para asegurarse de que satisfaga las necesidades reales de los usuarios.

Los diseñadores web hacen uso de varios programas de diseño, incluido Adobe Photoshop, para crear el diseño y otros elementos visuales del proyecto, mientras que los desarrolladores web utilizan HTML, CSS, Javascript, PHP y otros lenguajes de programación para dar vida a los archivos de diseño.

Gracias por el A2A

En esencia, el diseño web se refiere tanto a la parte estética del sitio web como a su usabilidad. Los diseñadores web usan varios programas de diseño como Adobe Photoshop para crear el diseño y otros elementos visuales del sitio web.

Los desarrolladores web, por otro lado, toman un diseño de sitio web y en realidad hacen un sitio web funcional a partir de él. Los desarrolladores web usan HTML, CSS, Javascript, PHP y otros lenguajes de programación para dar vida a los archivos de diseño.

El diseño web implica:

  • Crear la apariencia del sitio web (el front-end)
  • Diseñar una solución creativa para cumplir con los requisitos del cliente.
  • Centrándose en la experiencia del usuario final
  • Trabajando con HTML, CSS y JavaScript
  • Usando software de diseño como Fireworks, Photoshop o Illustrator
  • Usando software de desarrollo como Dreamweaver

El desarrollo web implica:

  • Agregar funcionalidades complejas al sitio web (el back-end)
  • Crear funciones de interactividad del usuario
  • Atención aguda a los detalles.
  • Usando lenguajes de programación como Java, PHP, C #, etc.
  • Usando herramientas de desarrollo como Dreamweaver, Eclipse o Visual Studio

El diseño es una teoría, la codificación y las pruebas están experimentando esa teoría, validando los resultados y tal vez volviendo, muchas veces al día. La programación incluye pensar en el problema, mirar un espacio de diseño para identificar soluciones, probar algunas de ellas, discutir con sus pares, de modo que el diseño y el código sucedan en pequeñas iteraciones, o al menos así es como se asegura de que su diseño esté en contacto con realidad, y no explota en una complejidad no intrínseca.

Entonces, diría que esta distinción es bastante superficial, como pedir “caminar, ¿necesito ver o mover las piernas?” necesita ambos, diseño para ver opciones y código / prueba para moverse.