¿Por qué es tan difícil unificar el desarrollo web?

En realidad no es tan difícil. La gente lo hace todo el tiempo. Pero luego la herramienta se vuelve imposible de mantener antes de que sea rentable, ya que comenzó con una sola pila integrada y la gente solicitó otros DB, diferentes marcos JS (de alguna manera, el que eligió no es tan popular como era cuando comenzó), etc.

Sin embargo, hay algunas señales de que esto puede estar cambiando: Macaw.co

Factores que contribuyen a este cambio:

  • Navegadores de hoja perenne que se adhieren mejor a los estándares
  • Marcos de front-end más potentes que tienen que ocultar menos las diferencias del navegador
  • Los navegadores se están volviendo lo suficientemente potentes como para ser útiles como entornos de desarrollo y diseño (el desarrollo web se convierte en autohospedaje y se come su propio alimento para perros)
  • Mejor separación de preocupaciones entre el código frontal y el back-end a través de API RESTful en lugar de XHR ad-hoc.
  • Sistemas de backend más potentes que están comenzando a consolidarse (pero aún no se estandarizan) en patrones API RESTful similares.

Dicho esto, los resultados más recientes y geniales siempre estarán fuera del alcance de las herramientas todo en uno, casi por definición.

Buena pregunta.

TL; DR Hay muchas razones. Al crear una página web, aplicación web o API web, existen diferentes tecnologías, habilidades, herramientas y disciplinas involucradas. Y hay personas incluyéndome a mí tratando de crear herramientas que lo unifiquen, pero son mucho trabajo. Echa un vistazo a http://www.radii8.com . Su objetivo es resolver los problemas exactos con los que muchos de nosotros lidiamos todos los días (es de código abierto para que cualquiera pueda trabajar en él, pero también podría usar fondos).

Podemos comenzar con los roles involucrados. Muchas veces una persona está haciendo las tareas de 2 o 3 roles.

Hay un diseñador que está a cargo de la apariencia del sitio web. Se le ocurren las maquetas o los diseños finales en el formato de un archivo de imagen PSD o PNG.

Luego está el desarrollador del lado del cliente. Tiene que convertir el diseño en una página web usando HTML, CSS. Debe asegurarse de que el diseño se refluya y se muestre correctamente con diferentes contenidos y pantallas de diferentes tamaños. También agrega la interactividad al sitio, incluido el envío de formularios, la visualización de videos o presentaciones de diapositivas. También tiene la enorme tarea de hacer que se vea igual o lo más cercano posible al diseño original. Diferentes navegadores pueden mostrar el mismo diseño HTML a veces drásticamente diferente (arruinando el diseño o diseño).

Luego está el desarrollador del lado del servidor. Él responde por obtener datos personalizados o realizar tareas específicas que no pertenecen a la computadora del cliente. Esto puede ser escribir el código que envía un correo electrónico a la compañía después de que el usuario envía un mensaje en un formulario de comentarios en la página web o cargando la página de inicio con las últimas publicaciones de blog de la base de datos.

Existe el administrador de la base de datos. Él crea la base de datos que contiene la información personalizada, como artículos, usuarios, etc., que necesitan persistir durante la vida útil del sitio web.

Luego están los componentes externos de terceros de un sitio web, como los anunciantes, diapositivas o widgets de video como YouTube, widgets sociales como Facebook, Twitter, widgets de comercio electrónico como PayPal, etc., que se integrarán en el sitio.

Para realizar cada uno de estos trabajos, existen herramientas que se han creado para ayudar a realizar estas tareas. Para los diseñadores hay Photoshop, Illustrator y MSPaint (broma).

Para los desarrolladores del lado del cliente hay Dreamweaver, Edge, Brackets, Cloud9, Sencha, PhoneGap, Firebug y alrededor de mil más. Muchos, si no todos, se especializan en una tarea o aspecto específico del desarrollo del lado del cliente.

Para los desarrolladores del lado del servidor y los administradores de bases de datos, hay muchas herramientas y tecnologías diferentes para elegir. Podría enumerarlos, pero sigamos adelante.

Cuando un cliente aprueba un diseño, corresponde a los desarrolladores convertir o reconstruir el diseño en HTML. Deben cortar o exportar las imágenes o recrear el diseño desde cero. Esto puede llevar semanas o meses, principalmente porque una vez que se ve bien en un navegador, debe asegurarse de que se vea correcto en los otros navegadores que ahora incluyen dispositivos móviles. Nuevamente, también tienen que asegurarse de que se refluya a los diversos tamaños de contenido y pantallas. … Luego, el cliente llama y dice que quiere rediseñar y usted debe construir la página y las animaciones nuevamente.

El punto es que los diversos componentes que componen un sitio web tienen diferentes flujos de trabajo, herramientas, formatos y procesos. Durante mucho tiempo, el proceso de integración ha sido engorroso. Debe recordar que el campo de la informática y el desarrollo web todavía está en su infancia en la gran escala de las cosas. Las herramientas y servicios de software como Photoshop destinados a la fotografía se han utilizado (mal utilizado) para crear sitios web, aplicaciones web, etc. El software ha tenido poca integración. Hay excepciones. Por ejemplo, durante muchos años Adobe trabajó en un proyecto llamado Flex que intentó crear un entorno de desarrollo, entorno de diseño, integración con otro software (Photoshop, Illustrator, Fireworks, etc.), una plataforma para llegar a todos los dispositivos y sistemas operativos. Fue increíble y gastaron 100 millones y luego Adobe contrató a un nuevo CEO que quería que la compañía hiciera marketing y análisis en lugar de software creativo. En lugar de crear un entorno de diseño y desarrollo nuevo y sorprendente para las necesidades de hoy (sueno como un anuncio) resolviendo la ruina del mundo del desarrollo, salieron con Adobe Omniture (como Google Analytics). Él canceló el proyecto, canceló muchos de los productos y despidió o reasignó a algunos de los mejores desarrolladores del mundo. Escribí mis pensamientos sobre el CEO de Adobe en una respuesta en otra publicación. BTW Flex sigue siendo una plataforma increíble y tiene una comunidad próspera en Apache.org. Su hermano más nuevo es FlexJS y tiene como objetivo traer lo mejor de Flex al desarrollo web HTML, CSS y JS.

Por lo tanto, hay muchos desarrolladores y diseñadores que desean un desarrollo de software unificado y, al igual que las otras respuestas en esta publicación, están surgiendo nuevos productos que redefinirán cómo hacemos el desarrollo web. Adobe ha creado un montón de nuevas herramientas de desarrollo, pero no están unificadas.

Después de que Adobe abandonó Flex, comencé a trabajar en un proyecto que resolvería algunos de los principales problemas con el desarrollo web (conector descarado). Planea unificar muchas de las partes del desarrollo web, incluidos los aspectos de diseño y desarrollo. Tiene un entorno de diseño visual que crea MXML, HTML y Android Markup. Tiene un complemento fácil de usar para que pueda producir otro tipo de salida de idioma para la salida (y entrada) del lado del cliente o servidor. Hay muchas cosas que aprende cuando ha realizado el diseño y desarrollo web desde el principio y me gustaría incluir esas cosas en el programa. Fue y es mucho trabajo, pero me he centrado en hacerlo lo suficientemente potente como para soportar una variedad de proyectos web y de aplicaciones. La visión está ahí y ha estado ahí por 10 años. Está en versión beta, pero para avanzar necesita desarrolladores y para que yo lo haga u obtenga un equipo necesita financiación. Sin embargo, hay suficientes personas por ahí que si no lo hago, alguien más lo hará eventualmente.

Por supuesto que podemos y se ha hecho muchas veces.

pero

¿De qué se trata el código subyacente?

¿Qué hace con qué datos y cómo desea que se presenten?

¿Cómo va a especificar las reglas y el flujo de la lógica?

Si va a utilizar algún tipo de diagramas para describir la lógica, ¿cómo se las arreglará cuando necesite describir algo 10 veces más complejo? ¿Qué hay de 100x?

Oh, ¿quieres que sea visible en esas nuevas cosas de teléfono con las pantallas grandes (¡Uy!) Grandes? Podría necesitar cambiar el marco o las herramientas.

El mundo sigue cambiando, el poder de los dispositivos cambia y las expectativas de las personas cambian.

Todavía puede recoger herramientas WYSIWIG desde el comienzo de la web y usarlas para producir sistemas. Simplemente no van a ser muy atractivos para las personas.

Aquí hay un ejemplo de alguna perspectiva sobre cómo cambian las cosas:
Search and Report describe un motor de búsqueda increíblemente utilizable y un redactor de informes asociado de un sistema de escritorio que produje en 1991, todavía en uso, aunque no he estado involucrado durante años.
Sí, si reconoce las pantallas, fue diseñado en la era de las Macs en blanco y negro. No creo que nadie me acepte entregando algo que se parece a eso hoy, a pesar de que ofrece un valor increíble para hacer su trabajo.

Para los sitios web básicos de folletos, existen herramientas que se están acercando a esto, pero cuando se mira a través del panorama de Internet, hay un número creciente de sitios web que dependen de muchas tecnologías para funcionar.

Por ejemplo, para proporcionar contenido contextual basado en los intereses del usuario, compras anteriores, comportamiento en el sitio y puntos de contacto fuera de línea, generalmente está utilizando una plataforma CRM, plataformas de automatización de marketing, un sistema de gestión de contenido, etc.

Si ese mismo sitio ahora necesita soportar pagos, es probable que exista un sistema de comercio electrónico y uno para procesar pagos. Este es solo un ejemplo para ayudar a ilustrar mi punto (a continuación), pero cada uno de esos sistemas existe como sistemas individuales e integrados porque es muy difícil que cualquier tecnología sea la correcta para proporcionar todas las funciones.

Los sitios web siguen las necesidades y operaciones de las empresas

Al igual que todas las tecnologías, las tecnologías web han evolucionado con las necesidades de los usuarios y las empresas. Mientras las necesidades de las empresas y los usuarios que atienden sean complejas e individualizadas, los sitios web requerirán tecnologías cada vez más sofisticadas para atender a esos usuarios.

Este (el enlace de la página de características a continuación) es un marco de propiedad de mi empresa Apriority LLC y planeo construir una startup en él el próximo año … pero está tan cerca de responder a su pregunta como lo he visto desde cualquier otro enfoque.

No se trata tanto de escribir código para usted como de evitar la necesidad de escribir muchos tipos de código ( proceso de negocios de bajo nivel y código de gestión del flujo de trabajo ), lo que reduce significativamente la carga de trabajo general del código para construir sistemas complejos.

También permite una distribución escalable de todas las tareas de codificación, permitiéndoles delegarlas de forma manual o autónoma a los agentes de codificación (ya sea personas o agentes de ejecución autónomos) en cualquier lugar donde esas personas puedan acceder a un navegador web … esto también reduce significativamente la complejidad de gestión para crear soluciones al abrir La solución a un panorama global de posibles agentes comprometidos .

Se requirió la invención de un nuevo paradigma de desarrollo holístico que se centra en el concepto de acción que llamo Flujo de trabajo orientado a la acción.

El documento técnico para este paradigma es AgilEntity Architecture: Work Oriented Workflow.

Página de características para el marco.

AgilEntity: Inicio

Voy a evangelizar la tecnología y abordaré mucho más en el futuro.

Preferencia personal básica:

xkcd: estándares

Basta con mirar las otras respuestas, la mitad de ellas afirman que es posible y el autor lo ha hecho, vinculando a algún marco WYSIWYG, tanto para la unificación … En realidad, todos están resolviendo una clase particular de problemas que se ajustan a sus necesidades y las necesidades en las que pensaban . Lo que sucede con este tipo de herramientas es que generalmente son buenas y eficientes para hacer para lo que fueron hechas, pero terribles para innovar … desafortunadamente, la innovación es a menudo la clave para un negocio exitoso. Por lo tanto, una parte del desarrollo web no se realizará con WYSIWYG, sino que se adaptará a la visión de su creador. Como todos somos especiales y tenemos su propia visión, no podemos realmente unificar el desarrollo web porque muchos de nosotros queremos algo específico que quizás nadie más haya pensado.

Construí una plataforma para esto, llamada meon, y la lancé la semana pasada, una plataforma donde cualquiera puede construir aplicaciones web en minutos, sin necesidad de experiencia en programación, y comenzar a usarlas de inmediato.

Permite la creación de aplicaciones bastante complejas en minutos. Para dar un ejemplo, creé más de 80 aplicaciones en meon, de varios tipos, en dos días . La mayoría de las aplicaciones tardaron menos de 5 minutos cada una en construirse. La mayor parte del tiempo se dedicó a definir qué debe hacer la aplicación.

Usted ha señalado correctamente que hay dos aspectos en esto: un marco todo en uno y WYSIWYG, los llamaría semántica de aplicaciones y UI de aplicaciones, respectivamente. Meon habilita la semántica de aplicaciones complejas, pero proporciona muy poca personalización de la interfaz. Puede tener la experiencia que desea, con algunas vistas posibles.

Mira meon aquí

También puedes leer mi publicación sobre por qué construí Meon

Para un sitio web WYSIWYG , que tiene principalmente contenido estático, pero con mucha personalización en torno a la apariencia, hay varias otras soluciones, ver, por ejemplo, WIX.com, pero para una semántica de aplicaciones arbitraria, no he visto algo como meon.

El desafío de hacer esto no es puramente técnico. Diferentes proveedores intentan resolverlo de varias maneras para que su producto tenga la ventaja competitiva sobre los demás (o eso es lo que esperan). Así es inherentemente cómo funciona una economía de libre mercado.

Esto no se limita al software y también es la razón por la cual no podemos estar de acuerdo en un diseño de motor único para simplificar la vida del mecánico. El proveedor x quiere venderle una implementación ligeramente diferente con un par de características adicionales. Esto es solo una parte de la imagen. Los productos también forman parte de la visión del diseñador. Entonces, aunque no sea solo por el beneficio, como es el caso del código abierto, el diseñador a menudo cree que su solución es la mejor.

Este elemento de elección puede ser ventajoso en el sentido darwiniano de que solo los mejores lo hacen y el resto se desvanece en la oscuridad. Como especie, tenemos grandes dificultades para lograr el consenso. Luchamos guerras por diferencias en las creencias sobre la tierra, los recursos, la religión. En cambio, lo que suele suceder es una multitud de ideas / diseños / principios / creencias que penetran en la sociedad, evolucionando y desapareciendo o estableciendo el dominio.

Se puede argumentar de manera bastante convincente que esta complejidad es necesaria para el progreso.

Creo que la naturaleza de la web lo hace muy difícil.

Si crea una aplicación para Mac, básicamente no importa cómo la haya creado, solo necesita confirmar la ABI de la Mac y se ejecutará.

En la web, no tiene ABI, y debe hacer que todo no sea compatible con binarios, sino que sea compatible con el código fuente, y ese es un problema importante.

Tener que ser compatible con el código fuente, y no compatible con binarios, significa que no es lo que escribes lo que necesita ser compatible con la web, sino la forma en que lo escribes .

La naturaleza evolutiva de la web no es el problema, Windows y Mac OS X evolucionan mucho más rápido. Es el problema que tenemos que escribir para la web de una manera muy particular y muy mala . HTML / CSS / JS son terribles en comparación con los kits de herramientas que tenemos disponibles en Mac o Windows, pero debido a que no compilamos HTML / CSS / JS para nada, y los suministramos tal cual, estamos básicamente atrapados en él Siempre. O al menos hasta que podamos reemplazar la web con algo mejor.

Ya está allí, soy un desarrollador de WordPress por pasión. Todo lo que debe hacer es descargar una plantilla y usar un complemento de pago “Visual composer”. Genere diseños y agrégueles contenido y comenzará a aparecer en el front-end.

Puede visitar Plantillas de sitios web y Temas de WordPress de ThemeForest para consultar las plantillas y aprender comprando una de las plantillas.