Cómo automatizar el proceso de construcción de una aplicación web completa

Creo que esta pregunta tiene varias capas que deben separarse. Y las preguntas a continuación ya ofrecen algunas ideas excelentes sobre ese tema. Pero lo primero es lo primero.

¿No podemos automatizar la creación de aplicaciones web?

Hay varias razones para eso. Me gusta centrarme en los siguientes 2 temas aquí:

  1. El desarrollo es un proceso creativo.
  2. Nosotros, como desarrolladores, creamos soluciones personalizadas (para clientes internos / externos, usuarios, clientes, colegas, personas que necesitan un solucionador de problemas para una determinada solución)

1) Crear una aplicación web es un proceso creativo.

Crear significa comenzar con una página simple y pintar una obra maestra. Los desarrolladores no codifican porque alguien les dice qué y cómo hacer. Crean algo útil. Algo que la gente encuentra útil y utiliza.

Los desarrolladores son parte del proceso creativo. Me gusta especialmente esta cita:

“Los ingenieros de software no son constructores. Los ingenieros de software son creadores “

Dicho esto, tiene mucho sentido automatizar partes del proceso de desarrollo.

(Puede encontrar más información sobre este tema aquí: Lo que nadie le dice sobre trabajar en desarrollo web)

2) Creamos soluciones personalizadas

La creación de una aplicación web es un proceso único diseñado para adaptarse a nuestras necesidades personales (o las de nuestros clientes). El proceso de creación de aplicaciones web en sí consiste en demasiadas variables que simplemente no pueden ser totalmente automatizadas; piense en las siguientes preguntas que deben responderse al comenzar a construir una aplicación web:

  • ¿Qué lenguaje de programación elegir?
  • ¿Qué base de datos?
  • ¿Qué hosting y configuración de almacenamiento?

Si está interesado en un ejemplo de la vida real sobre qué considerar una aplicación web, me encantaría recomendar este artículo: Creación de una arquitectura basada en la nube para su producto SaaS: desarrollo web interno

A menudo es difícil y costoso crear automatización. Esto es cierto en la fabricación de productos que no son de software, así como en software. Para que la automatización valga la pena, debe haber un gran retorno de la inversión, por ejemplo:

  • Debe repetir la tarea miles de veces de manera idéntica.
  • Debe ejecutar la tarea más rápido de lo que un proceso manual puede hacerlo.

La automatización ayuda a la fabricación para muchos otros mercados porque en la mayoría de los casos, el fabricante necesita crear tantas copias idénticas del producto de la manera más eficiente posible. El producto no cambia entre cada unidad creada, y ciertamente no cambia después de que se produce.

La creación de software es diferente. Cada aplicación de software está totalmente personalizada para sus requisitos. Inicialmente está diseñado, pero ese diseño puede cambiarse de manera grande o pequeña cada mes. El negocio continúa evolucionando el producto, agregando características o cambiando su comportamiento para adaptarse a los nuevos usuarios.

La automatización que es posible es el proceso de probar e implementar la aplicación web. Hay muchas herramientas avanzadas para hacer este tipo de trabajo. Esta es el área de integración continua y entrega continua.

La idea es que cada vez que un desarrollador de software realiza un cambio, la automatización construye el software, ejecuta muchas pruebas predefinidas y, si pasa las pruebas, el software terminado se traslada al sitio web público y reemplaza a la web anterior. Aplicación automática.

Existen herramientas que pueden generar código para tareas comunes bien definidas.
Eche un vistazo a la herramienta Gii de Yii frameworks, que puede generar CRUD completo basado en tablas de base de datos.

El problema es que con la web no se pueden definir muchas tareas comunes. No hay dos formularios de registro de usuario o procesos de pago exactamente iguales.

También hay aplicaciones listas que puede personalizar según sus necesidades, como WordPress o Drupal o varias aplicaciones de comercio electrónico.

La necesidad de código generado es muy limitada. Si los requisitos son comunes, tome una solución existente. Si los requisitos son especializados, debe crear los suyos propios, nadie escribe un generador para una sola ejecución.

¿Cómo automatizo el proceso de creación de una aplicación web completa?

No puedes Esto no será posible en el futuro previsible.

Clips de papel versus aplicaciones web

Al igual que los clips de papel, las aplicaciones web tienen un propósito humano. Pero es importante comprender la diferencia entre las aplicaciones web y los clips de papel.

No podemos eliminar las aplicaciones web como si fueran widgets de un solo propósito.

Dolores y ganancias

Los productos web proporcionan alguna ganancia o alivian un poco el dolor . El software de aplicación nos brinda la oportunidad como desarrolladores de productos de probar y descubrir sobre la marcha. Debido a que nuestros productos deben comprender cómo piensan las personas y asimilar sus motivaciones, muchas veces diseñamos, construimos y ampliamos de manera iterativa desde afuera, en lugar de Big Design Up Front.

Debido a que el qué y el por qué son algo abiertos y, en gran medida, se deducen iterativamente, la automatización seguirá siendo difícil de alcanzar.

Actualmente no vale la pena para la mayoría de las aplicaciones. Los proyectos no son lo suficientemente estándar, la tecnología que vale la pena usar no es lo suficientemente estable o fija, y el nivel de definición requerido para producir algo flexible a las especificaciones equivale a la codificación en sí misma.

Dentro de 15 años, esto podría ser factible para las compañías que usan un cierto tipo estándar de aplicación web, pero nuevamente, para entonces las cosas probablemente habrán cambiado tanto que todo el panorama podría ser irreconocible.

Entonces, si alguien lo automatiza bien, tomará mucho tiempo y dinero y podría ser realmente inútil en un período de tiempo muy corto.