¿Cuál es la diferencia entre desarrollo web e ingeniería de software?

Para dar una respuesta académica a su pregunta: la medida clásica del desarrollo de software es el modelo en cascada, atribuido a Bell y Thayer [1] y Royce [2]. Este modelo tiene una secuencia lineal de pasos, cada uno con su propio conjunto de objetivos, y el desarrollo fluye como una cascada a medida que los pasos avanzan desde las tareas iniciales de ingeniería que definen la aplicación y los requisitos del usuario, las partes interesadas, etc., y culminan en la etapa de mantenimiento de la vida operación, como puede ver a continuación [3]:

El modelo en cascada también tiene sus variaciones, pero no está restringido a ninguna herramienta de administración de software en particular. Más recientemente, los modelos de desarrollo de software, especialmente en lo que respecta a las aplicaciones web, se conocen como “espiral”, “ágil”, “creación rápida de prototipos”, etc. Todos estos incluyen un subconjunto de las etapas del modelo de cascada, pero son más incrementales cuando un ciclo de desarrollo iterativo consiste, según lo definido por Ginige y Murugesan [4], de “muchas fases, pasos y actividades”, que no se llevan a cabo en una secuencia fija y consecutiva como las del modelo en cascada. Esto se debe al “rápido crecimiento de los requisitos de los sistemas basados ​​en la Web y al cambio continuo de su contenido de información” [4] y explica el estado permanente de la versión beta de muchos Desarrollo web 2.0 web.

Aunque muchos de los aspectos de la ingeniería de software tradicional se utilizan en el desarrollo de aplicaciones web, en los últimos años se ha diferenciado el proceso de ingeniería web de la ingeniería de software clásica. Deshpande y col. [5] enumeró dieciséis “Grandes diferencias entre las aplicaciones web y el software convencional”: varias de estas diferencias se enumeran a continuación:

  • El uso de “equipos pequeños” y “cronogramas de desarrollo comprimido”.
  • Donde “” el contenido es el rey “, es decir, está integrado de manera indisoluble con el procesamiento de procedimientos”.
  • Una “comprensión de las disciplinas adicionales requeridas para aplicaciones web, como hipertexto, diseño gráfico, arquitectura de la información”.
  • Los “estándares en evolución a los que las aplicaciones web deben o deben cumplir, dependiendo de las circunstancias específicas”.
  • “Entorno de implementación en rápida evolución, que abarca varias plataformas de hardware”.

Además, Ginige y Murugesan [4] distinguieron el desarrollo web del desarrollo de software tradicional, es decir, donde “el rápido crecimiento de los requisitos de los sistemas basados ​​en la web y el cambio continuo de su contenido de información”. Ginige y Murugesan escribieron además que “la escalabilidad y la mantenibilidad” deben estar presentes desde el principio. Las aplicaciones web también deben acomodar a “diferentes partes interesadas”, desde la planificación y la gestión, pasando por el mantenimiento, hasta las personas involucradas con los elementos de una aplicación, por ejemplo, los diferentes roles del diseñador de páginas web y el desarrollador de aplicaciones.

Ginige y Murugesan también discutieron la naturaleza “evolutiva” del desarrollo de aplicaciones web porque “no es posible especificar completamente lo que deberían o contendrían al comienzo de su desarrollo, porque su estructura y funcionalidad evolucionarán con el tiempo”. Por lo tanto, este ciclo de desarrollo iterativo consta de “muchas fases, pasos y actividades”.

Estas “fases, pasos y actividades” no se llevan a cabo en una secuencia fija y consecutiva como las del modelo clásico de desarrollo de software Waterfall. Más bien, hay ciclos de desarrollo en los que cada uno de estos resultados genera un incremento . Por lo tanto, con referencia al diagrama siguiente del ciclo de desarrollo para una aplicación web convencional (reproducida de [4]), durante la vida útil de la aplicación, cada incremento iterará desde el mantenimiento del sitio web hasta las fases anteriores ilustradas, es decir, esto explica lo permanente estado de versión beta de gran parte del desarrollo web Web 2.0 , desarrollo rápido de aplicaciones (RAD) y ágil .

Las etapas básicas anteriores se resumen por Ginige y Murugesan [4] de la siguiente manera:

  • Análisis de contexto: donde determinamos y entendemos los objetivos principales del sistema, los requisitos funcionales y de otro tipo. Se recopila información sobre el entorno y el funcionamiento de la aplicación, y se identifican las partes interesadas. El resultado es un conjunto de requisitos que influirán en el diseño de la aplicación web.
  • Modelo de producto: donde se definen las relaciones entre los diversos componentes del sistema. La arquitectura del sistema se centrará en el hardware, la arquitectura de la aplicación se referirá a la funcionalidad requerida, mientras que la arquitectura del software identificará formas alternativas de implementar la arquitectura de la aplicación. A partir de esto, se construirá un modelo de la aplicación web en función de los requisitos determinados a partir de
  • Modelo de proceso: pone en paralelo el modelo del producto y define las actividades necesarias para implementar el sistema. Estas actividades, que implicarán un enlace frecuente con las partes interesadas, incluyen análisis de requisitos, diseño, pruebas y despliegue, y pueden descomponerse en sub-actividades.
  • Plan del proyecto: gestión del proyecto y programación del desarrollo.
  • Desarrollo del sitio web: el desarrollo del software de aplicación requerido para entregar el contenido y la funcionalidad. Junto con esto, las pruebas de hardware y la integración deben llevarse a cabo para cumplir con los requisitos de rendimiento y seguridad.
  • Mantenimiento del sitio web: en relación con el mantenimiento del contenido de la aplicación, el software y el hardware necesarios después de la implementación de la aplicación.

Además de estas fases, Ginige y Murugesan [4] también escribieron que la gestión de proyectos garantiza “que todos los procesos y actividades clave funcionen en armonía”. Además, la gestión de proyectos, el control de calidad y la documentación se “extienden a lo largo del ciclo de desarrollo web”.

Este ciclo básico continúa hasta nuestros días, independientemente de los tipos de aplicaciones web desarrolladas, es decir, si son comunidades informativas, interactivas, transaccionales, en línea, servicios web, etc.

Muy a menudo, una versión del patrón de diseño de modelo-vista-controlador (MVC) también se empleará durante el desarrollo web, posiblemente con un marco como Spring o Hibernate, Struts, etc., para dividir la arquitectura de una aplicación web en componentes distintos. , es decir, el modelo maneja los datos del dominio de la aplicación web a través de objetos comerciales, los usuarios ven la vista en un navegador a través de HTML, y el controlador gestiona el flujo de la aplicación web al recibir solicitudes del usuario, interactuar con el modelo y devolver respuestas a través de la vista.

Una tendencia contemporánea es el desarrollo en los marcos de microservicios donde la arquitectura de una aplicación web se divide en un conjunto de servicios, de la siguiente manera:

Donde cada servicio tiene un conjunto de responsabilidades estrecho y enfocado, y se exponen de forma independiente en forma de API accesibles a distancia, por ejemplo, REST, consumidas mediante protocolos como HTTP.

Un servicio de compras en línea podría tener microservicios separados para cuentas de usuario, catálogo de productos, mantenimiento del carrito de compras y procesamiento de pedidos.

Otra tendencia en el desarrollo web son las variaciones de MVC en los marcos de JavaScript para aplicaciones web como Node.JS, React y AngularJS, que usan AJAX y REST ampliamente.

[1]: TE Bell y TA Thayer. Requisitos de software: ¿son realmente un problema? En Actas de la 2da Conferencia Internacional sobre Ingeniería de Software (ICSE ’76), páginas 61-68, celebrada en San Francisco, CA, EE. UU., 1976

[2]: WW Royce. Gestión del desarrollo de grandes sistemas de software: conceptos y técnicas. En Actas de la novena Conferencia Internacional sobre Ingeniería de Software (ICSE ’87), páginas 328-338, Monterey, CA, EE. UU., 1987.

[3]: RS Pressman. Ingeniería de software: un enfoque profesional, adaptación europea. McGraw-Hill, Europa, Maidenhead, Berkshire, Inglaterra, Reino Unido, 3a edición, 1992. Adaptado por D. Ince.

[4]: A. Ginige y S. Murugesan. Ingeniería web: una metodología para desarrollar aplicaciones web escalables y mantenibles. Cutter IT Journal, 14 (7): 24-35, julio de 2001.

[5] Y. Deshpande, S. Murugesan, A. Ginige, S. Hansen, D. Schwabe, M. Gaedke y B. White. INGENIERÍA WEB. Journal of Web Engineering, 1 (1): 3-17, octubre de 2002.

Ingeniería de software es el conjunto de procesos y herramientas para desarrollar software. Ingeniería de software es la combinación de todas las herramientas, técnicas y procesos que se utilizan en la producción de software. Por lo tanto, la Ingeniería de Software abarca todas aquellas cosas que se usan en la producción de software como:

  • Lenguaje de programación
  • Diseño de lenguaje de programación
  • Técnicas de diseño de software
  • Herramientas
  • Pruebas
  • Mantenimiento
  • Desarrollo etc.

Entonces, todas las cosas que están relacionadas con el software también están relacionadas con la ingeniería de software.

Desarrollo web: es una técnica o se puede decir que las herramientas que se utilizan para construir aplicaciones web como el sitio web, etc.

Esa es una falsa dicotomía. Uno es un subconjunto del otro: los desarrolladores de software son la clase general, y los desarrolladores web son solo desarrolladores de software especializados. Eso es como preguntar “¿Cuál es la diferencia entre un plátano y una fruta?”

Dicho esto, intentaré explicarlo con más detalle. Un desarrollador de software es alguien que escribe, depura y diseña piezas de software, desde controladores de sistema operativo hasta juegos. Una de las cosas que un desarrollador de software puede escribir es una aplicación web. Cuando un desarrollador de software elige especializarse en desarrollo web, se le conoce como desarrollador web.

Mayormente semántica, con algunas diferencias clave.

Programa r

Alguien que crea, corrige y modifica el código existente, utilizando al menos un lenguaje de programación real (php, c ++, c #, objectivo c, python, nodo?).

Desarrollador

Por lo general, se refiere a un equipo e incluye muchos otros aspectos de la creación de software, incluido el diseño, la planificación, la interfaz de usuario, las relaciones con los clientes, el control de calidad y las pruebas, etc. y unir todo esto para crear un resultado confiable que la gente se sienta cómoda usando.

Ingeniero

Alguien que planifica y crea la arquitectura para el software. Casi siempre son programadores. Un verdadero ingeniero siempre está considerando el impacto del diseño y las decisiones arquitectónicas que tendrá en el rendimiento y la estabilidad. Al diseñar el software y la estructura de datos, calculan el rendimiento de ciertas estructuras de datos y metodología de software, para tomar una decisión cuantitativa con respecto a la mejor solución al problema en cuestión.

Ninguno (generalmente).

Los principales empleadores rara vez usan el título de Desarrollador web en la actualidad.

El título de Ingeniero de Software solía usarse comúnmente como un diferenciador entre los ingenieros con licencia CS que trabajan en problemas de back-end frente a front-end y “Desarrolladores web” completos.

Ahora, con todos los problemas complejos que rodean el desarrollo web y el trabajo de aplicaciones de escritorio casi inexistente, casi todos los ingenieros de software están desarrollando para la web.

El título de Ingeniero de Software abarca ingenieros que trabajan en:

  • desarrollo web
  • desarrollo móvil
  • desarrollo de back-end
  • ingeniería de datos, y
  • otro desarrollo de software, como la tecnología de la NASA

Verá el título de desarrollador web utilizado:

  • para diseñadores / desarrolladores que crean sitios web de wordpress a pequeña escala
  • en agencias digitales

El desarrollo web es el proceso de desarrollar el software de sitios web, y especialmente el software exclusivo de cada uno. Eso puede o no incluir el servidor web y el navegador , generalmente incluye cualquier marco de aplicación web, pero no otros tipos, y generalmente no incluye los idiomas u otras herramientas similares utilizadas, pero ciertamente el código único que se ejecuta para cumplir con cualquier funcionalidad

Por ejemplo, tengo un sitio web de Ruby on Rails que lo ayuda a encontrar proyectos de código abierto para contribuir (Pull Request Roulette). Si tenía algunas transiciones y animaciones sofisticadas y similares en el front-end, eso es programación web. Las partes finales que se ocupan de sus solicitudes (iniciar sesión, informarle sobre una solicitud de extracción, ofrecerse como voluntario para revisar una, etc.) son programas web. Las partes que le preguntan a Github si realmente existe una solicitud de extracción determinada, diría que sí (porque lo hace a través de HTTP, aunque esté en el lado del cliente), pero otras pueden diferir. La disposición de HTML en las páginas es la programación web. El marco de Rails? Yo diría que sí, otros pueden diferir. ¿Rubí? No. ¿El adaptador que usa Rails para hablar con PostgreSQL? Probablemente no. PostgreSQL? No.

Sin embargo, Ingeniería de software es un término mucho más vago. Desafortunadamente, la mayoría de las personas usan la mayoría de dichos términos (como desarrollo de software, programación, codificación, etc.) de manera bastante descuidada (en mi humilde opinión) e indistintamente, para referirse a cualquier desarrollo de software, lo que hace que el desarrollo web sea un subconjunto de él. Muchos lo usan para referirse al proceso de aplicar el rigor de la ingeniería al desarrollo de software, tratando de desarrollar de una manera predecible y repetible, produciendo resultados correctos y sólidos. Aquí es donde obtenemos las diversas metodologías y otras mejores prácticas. Sin duda, puede desarrollar software (web u otro) sin ellos, pero el resultado es mucho menos probable que sea correcto y robusto, y cualquier estimación del tiempo que llevará será mucho menos precisa.

Si quisieras dibujar un diagrama de Venn, serían dos círculos superpuestos. Hay muchas cosas en común y en la actualidad las aplicaciones que se entregan a través de la web no son diferentes a las aplicaciones que se entregan a través de otros medios. Por supuesto, el desarrollo web temprano realmente se llamaría aplicaciones y solo entrega de información.

En estos días, el desarrollo web podría considerarse un subconjunto (casi) de ingeniería de software. Al leer más sobre esto, la ingeniería de software podría verse como una parte más del diseño del desarrollo de software, mientras que el desarrollo web podría estar considerando más la entrega, pero eso realmente está dividiendo los pelos.

Hoy en día, una buena parte de las aplicaciones se desarrollan con la web, ya que su método de entrega y la ingeniería del software forman parte del proceso, al igual que el desarrollo web.

De cortesía, no competitivo.

Todos los desarrolladores web son ingenieros de software, pero no todos los ingenieros de software son desarrolladores web.

Solía ​​haber una diferencia porque al principio las infraestructuras de Internet no podían crear aplicaciones capaces de mantener la funcionalidad que vemos hoy.

Muchas aplicaciones ‘simplistas’ se crearon utilizando entornos como Visual Basic que crearon un ejecutable que se ejecutó en su escritorio. Esto significaba que para realizar una actualización todos tenían que ‘instalar’ una nueva versión de la aplicación.

Hoy en día, una aplicación se puede hacer con toda la funcionalidad ‘en línea’ ya sea internet, intranet o extranet. Para actualizar el sistema y obtener la última versión, todo lo que debe hacer es actualizar la página.

la siguiente pregunta debería ser … ¿cuál es la diferencia entre un desarrollador web front-end, un desarrollador web back-end o un desarrollador web full stack?

Permítanme responder primero con una pregunta y la respuesta que normalmente les doy a mis estudiantes de secundaria … Esto será relevante para el motivo por el que preguntan, creo: ¿cuál es la diferencia entre la informática y la ingeniería de software?

Ambos tienen en sus cimientos ‘Programación informática’. La programación informática es lo que las personas necesariamente aprenden primero: la sintaxis del lenguaje, las ideas básicas de cómo las cadenas, los números, las matrices y las cosas funcionan juntas para ejecutar un montón de pasos para lograr un objetivo.

Computer Science utiliza la programación de computadoras para estudiar dos grandes preguntas: “¿Qué es computable” y “¿Qué tan eficientemente se puede calcular algo?” Esto incluye el estudio de algoritmos, la creación de algoritmos, la eficiencia de los algoritmos, etc.

La ingeniería de software está utilizando la programación de computadoras para resolver problemas comerciales y administrar la complejidad de los equipos de desarrolladores que trabajan juntos dentro de limitaciones como el tiempo y el presupuesto. La informática y la ingeniería de software se complementan e informan entre sí.

Entonces, ¿en qué se diferencia el “desarrollo web” de la ingeniería de software? El desarrollo web * es * ingeniería de software, solo un subconjunto. Si está trabajando en algo que tiene un objetivo comercial, tiene limitaciones de tiempo y presupuesto, y potencialmente tiene personas que colaboran juntas para resolverlo, este es un problema de ingeniería en todos los sentidos.

Sospecho que estás haciendo la pregunta porque escuchaste a alguien burlonamente decir algo como “son un desarrollador web … no un ingeniero de software * real * … Ese tipo de actitud es tóxica, pero desafortunadamente es demasiado común en nuestra profesión.

Por otro lado, es posible que el desarrollo web se realice como un pasatiempo, para una escuela, una iglesia o una organización sin fines de lucro sin restricciones de tiempo o presupuesto, etc. Si ese es el caso, podría sentirse más como ‘programación de computadoras’ que ingeniería de software … Llamarlo ‘ingeniería de software’ puede parecer un poco como llamar a un aficionado a la carpintería ‘ingeniero estructural’.

Pero no hay reglas duras y rápidas aquí. “Ingeniería de software” no es una profesión acreditada con una organización profesional ni algo equivalente a un examen de “barra” detrás de ella. Si es un desarrollador web que resuelve problemas comerciales con limitaciones de tiempo y / o presupuesto, felicidades, también es ingeniero de software.

La ingeniería de software está diseñando componentes de una solución de extremo a extremo a medida, incluida la escritura de un nuevo software y la integración de otros productos de software; implica llevar un sistema desde el concepto / diseño hasta las pruebas para ponerlo en funcionamiento.

Generalmente implica un conocimiento complejo del software y cómo interactúa con otro software, cómo está escrito y cómo funciona con el hardware en el que se está instalando.

Parte de la ingeniería de software implicará elementos de desarrollo web o web.

El desarrollo web utiliza los sistemas existentes, con poco conocimiento de cómo funcionan o interactúan con otros sistemas, y les da los toques finales usando lenguajes frontales (originalmente) como HTML y JavaScript.

La ingeniería de software está construyendo pasteles de boda de 5 niveles a partir de los ingredientes básicos.

El desarrollo web está comprando un bizcocho de la tienda y poniendo algo de hielo.

Dicho esto, si está haciendo un desarrollo web de pila completa, servidor y cliente, entonces es donde los dos se convierten en uno.

En pocas palabras, el Ingeniero de software es un título dado a personas con experiencia en informática generalmente, mientras que el desarrollo web estará más estrechamente vinculado a títulos como ‘desarrollador front-end’ en estos días.

Creo que una de las principales diferencias estará en los idiomas en los que elija dominar. Si bien puede haber una pequeña superposición como Java, el desarrollo de software se ocupará de lenguajes como C ++, Objective C, C # y Visual Basic . El desarrollo web será mucho más visualmente impulsado y querrás enfocarte en HTML / CSS, Javascript, PHP y Ruby. Quizás ya tenga un poco más de experiencia en uno de estos grupos. Ese podría ser el camino más fácil, pero de manera realista, podría ir en cualquier dirección.

Salarios de desarrollo web en San Francisco, CA – $ 130k / año

Salarios de ingeniería de software en San Francisco, CA – $ 154k / año

Si bien el desarrollo web tiene una tendencia más baja, creo que, como especialidad, probablemente se puede comercializar mucho más fácilmente como un profesional independiente, lo que le brinda la oportunidad de superar los salarios pagados a los empleados. Sin embargo, si no es del tipo emprendedor, es posible que desee la seguridad de un trabajo a tiempo completo con un salario. De cualquier manera, creo que puedes hacer una carrera lucrativa con estos.

1. No todos los desarrolladores son ingenieros, y los que lo son, no siempre son ingenieros de software (o hardware)
2. No todos los ingenieros de software son desarrolladores; Hay múltiples roles como probadores, administradores de sistemas y arquitectos
3. No todo el software es web. Hay muchos otros tipos: móvil, escritorio, base de datos …

En mi opinión, el desarrollo web es un tipo de ingeniería de software. El término “ingeniería de software” se refiere principalmente al concepto general de diseño y desarrollo de software en cualquiera o en todos los niveles de la “pila”. El desarrollo web es un área específica de enfoque: con mayor frecuencia, significa escribir código HTML, CSS y JavaScript, así como código del lado del servidor (IIS, Apache, Ruby on Rails, MVC, etc.) para facilitar la experiencia del usuario en un sitio web. El énfasis está principalmente en el desarrollo de la interfaz de usuario, así como en algunos diseños gráficos, diseños, enlaces de páginas y enrutamiento, etc.

Como desarrollador web, la mayoría de las veces trabajará de forma aislada de un backend, o trabajará con otros desarrolladores que se centren en el backend que admite su interfaz. A veces, sin embargo, usted mismo hará parte o todo el trabajo de backend. Depende de la empresa y el trabajo específico.

De cualquier manera, todavía está escribiendo código, incluso si no está escribiendo estrictamente programas. HTML y CSS no son lenguajes de programación completos de Turing, por lo que si todo lo que se espera que haga es escribirlos, muchos no lo llamarían programador o ingeniero de software. (La mayoría de las veces, también estará escribiendo al menos ALGUNOS JavaScript, que ES Turing completo). Diría que, independientemente de si está escribiendo programas o simplemente diseño y marcado, todavía está resolviendo problemas y escribiendo código que una computadora entiende, y está siguiendo los mismos pasos que seguiría un desarrollador de back-end. . Su dominio del problema es un poco diferente, eso es todo.

No puedes comparar esas dos cosas; La ingeniería de software es el conjunto de procesos y herramientas utilizados en la producción de software, donde el software es una palabra que cubre aplicaciones web, sitios web, servicios, aplicaciones de escritorio, aplicaciones móviles, etc.

Por lo tanto, el desarrollo web es una especie de desarrollo de software que produce sitios web y aplicaciones web. Los sitios web y las aplicaciones web son aplicaciones que dependen del motor de un navegador para ejecutarse.

Utiliza conceptos de ingeniería de software para impulsar el desarrollo web o el desarrollo de aplicaciones de escritorio o cualquier otra cosa.

Si le pregunta a un desarrollador sénior la diferencia entre un ingeniero de software y un desarrollador, probablemente se encontrará con una cara confundida.

Aquí está la definición técnica de ambos:

Un ingeniero de software es alguien que construye software (ingenieros). Este software podría ser programas de escritorio como Spotify o Photoshop, o aplicaciones móviles y web (como Facebook, Twitter o Gmail). Otro término para esto es “programador de computadoras”.

Un desarrollador web es un ingeniero de software que solo crea aplicaciones web.

Pero, cada desarrollador web que es empleable es un ingeniero de software. Los “ingenieros de software” no tienen un mejor salario que los “desarrolladores web”, ni los “ingenieros de software” realizan un trabajo diferente que los “desarrolladores web” en el día a día, suponiendo que estén trabajando en aplicaciones web.

¿Qué hace que un desarrollador web sea un ingeniero de software? Alejémonos y hablemos sobre tres habilidades que todos los programadores necesitan para tener demanda.

Si hay una diferencia, no soy consciente de ello. Siempre habrá quienes crean que un graduado de CS con experiencia en ingeniería eléctrica o matemáticas es un ingeniero “verdadero” y que todos los demás simplemente obtienen el apodo general de “desarrollador”.

A lo largo de las décadas tuve muchos títulos. Debido a que no tenía un título en ingeniería, durante años obtuve el título de “programador” o “diseñador __ __” en mis trabajos. Cuando obtuve mi primer trabajo de inicio, el título de Ingeniero me fue ungido, porque era la palabra mágica para justificar mi empleo en la junta.

Después de obtener el título de ingeniero, pronto descubrí que tampoco es tan bueno. Los ingenieros son generalmente perfeccionistas, pedantes, incapaces de articular sus sentimientos, deletreadores pobres, carecen de empatía y pueden aprovecharse fácilmente debido a su orgullo.

Ser ingeniero significaba que no se esperaba que tuvieras ideas u opiniones sobre el producto, el negocio o cómo es usar el producto. Se suponía que un “buen ingeniero” sería feliz siempre que él (sin necesidad de un pronombre femenino aquí) tuviera una gran cantidad de trabajo de codificación para asumir.

Se suponía que un buen ingeniero estaría agradecido de que un gerente hablara, planificara y explicara.

En este punto de mi vida, sé con certeza que “ingeniero” no es lo que quiero ser cuando sea grande. Tampoco es “desarrollador”. No me gusta un lugar de trabajo lleno de títulos, porque los títulos son una forma barata de explotar a las personas. No me gusta un lugar de trabajo con una “jerarquía plana”, lo que sea que eso signifique, exactamente por la misma razón.

Un ingeniero de software escribe aplicaciones. Un desarrollador web es un ingeniero de software que se especializa en escribir aplicaciones web.

El desarrollo web es un subconjunto del desarrollo de software. El desarrollo web consiste en escribir aplicaciones a las que se accederá a través del navegador web, mientras que el desarrollo de software incluye el desarrollo de aplicaciones para muchas plataformas diferentes (móvil, web, incrustado, escritorio …)

La ingeniería de software se refiere al conjunto de prácticas de ingeniería utilizadas durante el desarrollo de cualquier tipo de software. El desarrollo web se refiere al desarrollo de software al que se puede acceder a través de navegadores web. Por lo tanto, el desarrollo web es un subconjunto del desarrollo de software y la ingeniería de software define el conjunto de prácticas utilizadas para cualquier tipo de desarrollo. Espero que tenga sentido.

La definición de desarrollo web puede estar sujeta a una gama más amplia de interpretaciones.

Podemos desarrollar software para la web, pero muchas de las tiendas que desarrollan para la web hoy en día parecen centrarse en la comunicación y el diseño más que en el software subyacente. Contratan programadores para obtener un resultado del software, no para hacerlo crecer. Podríamos considerar que el desarrollador promedio de Drupal, por ejemplo, se parece más a un usuario avanzado y menos a un ingeniero. Muy pocas personas que se desarrollan con Drupal continúan enfocándose en sus desafíos técnicos más profundos.

Si bien los motivos cubiertos por el desarrollo web pueden ser tan grandes y desafiantes como cualquier otro proyecto de software, en gran parte han sido asumidos por personas sin ningún conocimiento de software. En esas circunstancias, seguramente se convertirá en algo completamente diferente. A medida que las aplicaciones de software se especializan, sus aspectos técnicos dan lugar a consideraciones de dominio. Los desarrolladores pierden su ventaja ya que sus habilidades comerciales y de diseño no pueden competir con las de los profesionales que se hicieron cargo de sus juguetes.

Es posible que otros tipos de software nunca lleguen a ser tan atractivos como resultó ser la web. Eso podría evitar que sus consideraciones de la vieja escuela den un paso atrás considerable.

Dependiendo de los aspectos de desarrollo en los que le gustaría enfocarse, la naturaleza del desarrollo web y de software podría estar mejor definida por la cultura de su lugar de trabajo en lugar de por las etiquetas de ‘web’ y ‘software’ que elegimos para ellos.