¿Por qué es tan difícil el desarrollo front-end?

Solía ​​ser muy simple … así que para responder a su pregunta, creo que necesita un poco de contexto histórico … El desarrollo web solía ser simplemente HTML (aquí es posiblemente uno de los primeros ejemplos de una página web: Etiquetas utilizadas en HTML)

Tres de las principales razones por las que el desarrollo front-end es tan difícil hoy:

  1. Proliferación del navegador / dispositivo : a principios de los 90 no había muchas opciones para los navegadores, por lo que la complejidad y las pruebas de los sitios web eran mucho más simples. Luego vino Browser wars 1, donde el nuevo navegador comenzó a aparecer más rápido que los hipsters en la tienda de Apple. Cada uno de estos nuevos navegadores dio una representación ligeramente diferente del mismo HTML y también se agregaron nuevas características al lado de las primeras especificaciones HTML. Esto dio paso a la creación del World Wide Web Consortium (W3C) que afirmó ser el “anillo único para gobernar todas las tecnologías web” o al menos mantener un estándar.

    Javascript apareció en escena a través de Browser wars 1, así como CSS y, finalmente, AJAX. Pero la pieza crítica para toda esta rápida evolución web fue que ahora había múltiples navegadores que la población web estaba usando. Por lo tanto, las pruebas del navegador se volvieron importantes y lo creas o no, Internet Explorer fue uno de los navegadores más avanzados durante este tiempo e introdujo conceptos (aunque propietarios) como “filtros” y “vectores” mucho antes que los equivalentes HTML5. El mayor competidor de Internet Explorer, Netscape , finalmente perdió pero entró en una hibernación profunda solo para renacer como FireFox durante Browser Wars 2.

    Entre las guerras, el desarrollo front-end fue una especie de depresión y Macromedia Flash surgió como la herramienta para las experiencias web multimedia. Luego estaba todo ese asunto de la burbuja Dot-com y, aunque había varios navegadores para probar, la mayoría de los sitios web se veían en una computadora de escritorio o portátil.

    Con Browser Wars 2, las tablas se activaron en Internet Explorer y la tecnología front-end comenzó a explotar nuevamente. Firefox, Safari y luego Chrome comenzaron a ganar popularidad. Pero todo se volvió loco con la llegada de los teléfonos inteligentes (lea el iPhone). Steve Jobs y Co casi mataron al poderoso Flash y crearon una categoría completamente diferente de dispositivos compatibles con la web (seamos honestos, cualquier cosa antes de que el iPhone no fuera exactamente ‘compatible con la web’). Todo el tiempo, hizo el trabajo de un desarrollador front-end infinitamente más complicado.

    Así que hoy, no solo tenemos múltiples navegadores (que aún procesan HTML de manera diferente) sino también múltiples dispositivos que crean experiencias y opciones de entrada muy diferentes (piense en desplazarse o deslizar). Este aspecto solo hace que el desarrollo de front-end sea muy tedioso y si la historia es un maestro, parece que los dispositivos y los navegadores solo serán más variados (por ejemplo, relojes inteligentes).

  2. Complejidad del conjunto de habilidades : como se mencionó anteriormente, las habilidades necesarias para ser un desarrollador front-end en los primeros días era el dominio del HTML. B / c de la proliferación de navegador / dispositivo y los estándares web en evolución, conocer HTML es solo el primer paso en una lista de competencias necesarias hoy en día.

    HTML, CSS, JavaScript se consideran el núcleo de las tecnologías web front-end, pero esos son solo términos vagos que pueden traducirse en mucho más …

    HTML es el terreno en el que crece toda la tecnología web, pero es una mezcla bastante complicada de referencia y técnica. Tenga en cuenta que tiene validación, representación del navegador y tácticas de SEO que convergen en este nivel. Sí, todos deberían complementarse entre sí, pero históricamente ese no es el caso. Agregue Micro formatos, Accesibilidad, especificaciones móviles (¿Hey quién eliminó

    ?) Y tiene mucho para mantenerse al día. Las API HTML5 podrían mencionarse aquí, pero guardemos eso para JavaScript.

    CSS y los conceptos utilizados en el diseño web moderno han llegado a significar más que solo ‘estilo’. Es un cambio fundamental en cómo construimos páginas web. Sí, estoy hablando de diseño receptivo, pero también estoy hablando de animaciones y transformaciones 3D que una vez solo estaban reservadas para Flash. Y luego está todo eso de la fuente web. Y además de todo esto, ahora tenemos OOCSS. Será mejor que te subas al tren del preprocesador de CSS o te quedes en el polvo … Entonces, si bien conocer la sintaxis de CSS es una cosa, ¡los conceptos derivados de esta área de desarrollo web front-end son bestiales!

    ¡JavaScript alguna vez fue el hazmerreír del mundo CS pero ahora la gente está ejecutando servidores con él (Node.js)! Conocer JavaScript generalmente también significa que conoce un marco de JavaScript (Angular, React, Ember, jQuery), a veces es necesario ser competente en múltiples marcos. Además, conocer los sistemas de compilación (trago, gruñido) y los administradores de paquetes ahora es esencial para la portabilidad y la representación de su código cuando trabaja en equipos. Combine los fundamentos de JavaScript con el diseño del Modelo de Objetos del Documento y las API HTML5 emergentes y tiene una buena razón para no querer volver a ser llamado “desarrollador front-end” … Quiero decir, podría pasar meses simplemente desarrollando en WebGL … Y luego están aquellos que piensan que es una buena idea abstraer el lenguaje JavaScript en una sintaxis más hermosa como CoffeeScript

  3. Evolución de las expectativas del trabajo : ahora, además de las dos razones anteriores, otro factor que contribuye a la dificultad de ser un desarrollador front-end es también la expectativa de tener una aptitud para el diseño de la experiencia del usuario y, a menudo, el diseño en general. Sí, Front End Developer y UX Designer son descripciones de trabajo diferentes, pero se superponen a las tecnologías. Entonces, comprender UX puede aumentar infinitamente su comerciabilidad como desarrollador front-end. De hecho, cualquier capacidad de diseño no solo aumentará su comerciabilidad, sino que lo ayudará a comprender el “por qué” detrás de su capa de presentación.

En resumen, el desarrollo front-end (web o de otro tipo) está evolucionando a un ritmo exponencial y se extiende a horcajadas en la ciencia informática aplicada y la ciencia del comportamiento, lo que requiere habilidades adicionales que su contraparte más centrada en la lógica, el desarrollo back-end.

El desarrollo front end es más complicado de lo que parece.

Sin descartar la dificultad del desarrollo del lado del servidor, sigue siendo importante reconocer los problemas que surgen al trabajar del lado del cliente. Como desarrollador front-end, la mayor parte del trabajo debe realizarse en HTML y CSS, lo que deja herramientas limitadas para evitar errores. JavaScript ayuda aquí y allá, pero la detección de características viene con una sobrecarga de rendimiento. Significa más código y más oportunidades para que ese código falle. Además, es difícil trabajar con CSS una vez que su sitio comienza a crecer. Es muy estático, y terminas manteniéndote al día con mucho en tu cabeza.

La curva de aprendizaje empinada se debe en parte a la naturaleza siempre cambiante del campo. Con el front end, siempre hay algo nuevo que aprender: consultas multimedia receptivas, HTML AppCache, transformaciones CSS, WebGL, etc. Cada una de estas herramientas presenta nuevas y emocionantes posibilidades para los desarrolladores front-end, pero también cambia la forma en que se hace su trabajo.

Eso también significa cambiar la forma en que se enseña el desarrollo front-end, con la mayor frecuencia y precisión posible. Desafortunadamente, ningún instructor puede esperar seguir el ritmo de las tecnologías cambiantes, lo que significa que cada nuevo desarrollador front-end que se une a la fuerza laboral ya está varios pasos atrás, luchando por llenar su caja de herramientas con un suministro interminable de los recursos necesarios.

He sido ingeniero frontend durante algunos años. He tenido el privilegio de tomar entrevistas también. Con mi experiencia personal, puedo decir que las siguientes son las razones principales por las que este campo es complejo:

  1. Requisitos de trabajo : Primero debes saber HTML , CSS y Javascript . Luego, dependiendo del proyecto / compañía en la que esté trabajando, tendrá que aprender una o más tecnologías, probablemente jQuery , React o Angular , para entregar el proyecto. Convertirse en un experto en Javascript requiere muchos esfuerzos y mucho menos dominar otras bibliotecas / tecnologías. Oh! Una cosa más. Hay pocos marcos para aprender también.
  2. Compatibilidad cruzada con el navegador : todavía estoy arreglando errores de IE. Período.
  3. Dominio dinámico y en constante evolución : la última vez que revisé Hacker News, supe que me había quedado atrás en mis habilidades de React . Hay cosas nuevas que vienen todos los días.

PD: La imagen no pretende lastimar a nadie. La parte “Lo que realmente hacemos” ni siquiera se aplica a mí. ¿Eh? Ahora me pregunto por qué lo agregué.