Estoy aprendiendo a ser un desarrollador web full stack. Descubrí que el desarrollo frontend es mucho más difícil que el desarrollo backend. ¿Es esto solo mi error?

Tengo una relación de amor y odio con el front-end. Por mucho que no quiera pasar horas arreglando un problema de alineación que ocurre en un modelo de dispositivo en particular, la belleza en su complejidad me atrae.

¿Has oído hablar de F-design ? Aquí hay un mapa de calor de la visualización de una página web mediante el seguimiento de los movimientos oculares de los usuarios (fovea).

Un usuario lee la página de izquierda a derecha, de arriba abajo, pero los ojos no captan todo. Hojean algunas áreas. Muchos sitios web agregan contenido irrelevante o poco utilizado en tales áreas y se concentran en proporcionar la mayor cantidad de contenido en el diseño F.

El diseño de la interfaz de usuario me atrae por esta razón en particular. Hay tantas cosas detrás de algo que los usuarios pueden no darse cuenta. Si bien es cierto que el desarrollo de back-end, que implica el desarrollo de funcionalidades complejas, también es invisible, el diseño y desarrollo de front-end está jugando con el usuario. No lo equipararía a engañarlos para que interactúen con el sitio, sino más bien involucrarlos en la mayor medida.

Si, es dificil. Hacer que una página web funcione de manera consistente en dispositivos que van desde computadoras de escritorio a teléfonos que varían tanto en el factor de forma como en las capacidades de procesamiento, es difícil. Este requisito de experiencia de usuario consistente requiere un nivel de intuición y visualización en el que los diseñadores de UI están altamente equipados. Si el proyecto es personal, es posible que no se cuente con la cohorte de expertos en diseño para satisfacer adecuadamente esta necesidad. En ese contexto, uno necesita avanzar como diseñador y desarrollador. Este es el cuello de botella del desarrollo web para una persona que no puede imaginar intuitivamente cómo deben comportarse los elementos de la página web en diferentes contextos.

Las habilidades de los desarrolladores y diseñadores front-end a menudo se superponen. Cada vez más diseñadores escriben su propio código. Los desarrolladores se están uniendo a la creación rápida de prototipos, marcos y diseños estéticos. [1]

Aquí es donde uno se queda corto en el aprendizaje del desarrollo web. La mayoría de los cursos (en línea y fuera de línea) incorporan HTML, CSS, JavaScript y una gran cantidad de bibliotecas a la mesa y le piden que aprenda varias API que reducirán su tiempo de codificación. La ausencia de diseño UI / UX en tales metodologías de aprendizaje es evidente. Lamentablemente, te golpea duro.

Una cosa igualmente difícil de hacer es admitir Internet Explorer, que es una pesadilla. Alrededor de 2015, solo debe admitir IE11, lo cual es bueno.

Notas al pie

[1] 5 formas de cerrar la brecha diseñador-desarrollador en proyectos web receptivos – InVision Blog

He sido desarrollador front-end durante casi toda mi carrera de desarrollo (35 años ahora), aunque he hecho una buena cantidad de la capa de base de datos a través de la capa de servidor de aplicaciones / negocios hasta la capa del cliente. Todos son interesantes, pero para mí el front end es el más divertido.

No creo necesariamente que el front end sea más difícil (¡diría que es mucho más fácil que escribir el código del kernel de Linux, o lidiar con todos los problemas de paralelismo!) Pero parece tener muchas partes que debes hacerlo bien, o eso puede afectar lo que estás construyendo de varias maneras. Algunos de los siguientes aspectos que debe tener en cuenta son específicos de los clientes ligeros (como los navegadores) y algunos son generales para el desarrollo general de la interfaz de usuario:

* La tecnología para construir interfaces de usuario sigue cambiando (los clientes no tanto, pero la tecnología web ha sufrido muchos cambios en los últimos 10-15 años)
* Es posible que no necesite ser un diseñador gráfico (si solo está creando la aplicación), pero ayuda mucho al menos tener algo de sentido del diseño. Si ni siquiera puede molestarse en asegurarse de que las líneas se alineen y los botones tengan un tamaño razonable, tal vez esto no sea para usted. El desarrollo de la interfaz de usuario tiende a estar muy orientado a los detalles.
* Todos tienen una opinión sobre la interfaz de usuario, ya que es el punto de contacto del sistema. Pero la opinión de todos es diferente (¡a menos que todos digan que apesta!) Obtendrá información de casi todas partes, lo que aumentará el estrés.
* Mucha gente no tiene una muy buena idea de lo que hace una buena interfaz de usuario, pero mira arriba, te lo dirán de todos modos.
* Debe tener en cuenta a sus usuarios: a menudo tiene los que no saben nada y los que son expertos. Es realmente difícil lidiar con ambos en la misma interfaz de usuario.
* Una buena interfaz de usuario es aquella que “se quita del camino” y permite al usuario hacer lo que necesita hacer de la manera más fácil y rápida posible. Si lo hace correctamente, la gente dirá que ha construido algo “fácil”, y piensan que también debe haber sido fácil de construir. Es exactamente lo contrario: hacer que algo parezca fácil es mucho trabajo DURO.

Al final, al menos para mí, es muy divertido intentar hacer algo que un usuario vea y diga “oye, eso simplemente funciona”.

Si bien muchos aquí se referirán a la tecnología de desarrollo de la interfaz de usuario, que de hecho puede ser legionaria y laberíntica, sin mencionar los cambios constantes, donde veo que muchas personas fallan en el desarrollo de la interfaz de usuario no tiene nada que ver con la tecnología per se.

Muchos desarrolladores creen que este ciclo es la forma correcta de construir cualquier cosa:

Obtenga los requisitos de un PM, desarrolle comps, obtenga la aprobación del equipo, implemente, itere.

Pero en términos de IU, están equivocados. Completamente. Ese proceso hace numerosas suposiciones que son falsas, pero garantiza que el esfuerzo nunca tendrá éxito.

¿Cuál es la estrategia, el imperativo? ¿Qué trabajo se ha hecho para definir un modelo en el que se basará la IU, tanto en términos de datos como de flujo de trabajo? ¿Dónde están los datos del usuario … y no estoy hablando de cosas que tu PM golpeó a partir de alguna muestra? Me refiero a los DATOS de los USUARIOS que realmente lo USARÁN.

“Tenemos estas composiciones … nuestro diseñador trabajó en estas …”

Me muestras comps como punto de partida para el desarrollo, ya sé que no sabes lo que estás haciendo.

Y luego está la cosa: “tendremos las reuniones de aprobación”.

¿Quién está en esa reunión? El CEO, el CTO, el PM, alguien de marketing, alguien de ventas. Diseñado por un comité de personas que no tienen capacitación ni experiencia laboral en el desarrollo de UI.

Es como decir que debido a que ha conducido un automóvil anteriormente, está calificado para tomar decisiones sobre cómo construir uno.

Fui contratado por un equipo que había pasado por esto tres veces; no porque los desarrolladores se hayan visto obligados a hacerlo de manera incorrecta, sino porque los desarrolladores no sabían de otra manera.

La compañía finalmente decidió buscar lo que llamaron un “tecnólogo no tradicional”. Me entrevistaron y les dije: “sus otros proyectos fracasaron porque su consideración principal no era el usuario. Fue el proceso y la satisfacción de las partes interesadas que no representan a los usuarios reales del producto”. Luego les dije cómo lo abordaría de manera diferente.

Algunos eran dudosos, porque no es la misma vieja historia (que casi siempre conduce a resultados que van desde el éxito limitado hasta el fracaso absoluto). Pero una cosa que seguía diciendo sonaba con ellos, porque resultó que estaba casi citando la primera mitad de su principio # 1. Es esto:

___________________________________

Concéntrese en el usuario y todo lo demás seguirá.

Desde el principio, nos hemos centrado en proporcionar la mejor experiencia de usuario posible. Ya sea que estemos diseñando un nuevo navegador de Internet o un nuevo ajuste en el aspecto de la página de inicio, tenemos mucho cuidado para asegurarnos de que finalmente le sirvan, en lugar de nuestro propio objetivo interno o resultado final.
___________________________________

Lo que dice su CEO, lo que dice el primer ministro, lo que dice este tipo de marketing, no importa. Ninguna de estas personas representa a los usuarios diarios de la interfaz de usuario del producto.

Las personas que importan son las personas que usarán su producto de manera rutinaria. Hacer esa conexión con esos usuarios DIRECTAMENTE (no a través de un PM), priorizarla por encima de todo y asegurarse de que pueda definirla en términos de estrategia, imperativos y abstracción, son las claves para construir una gran interfaz de usuario.

Hay un libro, llamado The Elements of User Experience, que asimila muchas de estas cosas. Considero que requiere lectura para cualquier desarrollador de UI. No es la biblia, pero da una idea del hecho de que la mayoría de las personas pasan por el proceso de desarrollar una interfaz de usuario completamente al azar, priorizando todas las cosas incorrectas.

Muy pocas personas con las que me he encontrado en 25 años de desarrollo de UI entienden esto. Si lo hace, y trabaja con un equipo que le permitirá hacer el trabajo para el que lo contrataron, el desarrollo de la interfaz de usuario es un placer. Si no lo hace y / o trabaja con un equipo que no lo hace y lo obligará a trabajar en el viejo modelo de “comps y comité”, entonces su trabajo será casi imposible, sin mencionar que es realmente insatisfactorio.

Y para que conste, el producto que construí se lanzó y la satisfacción es realmente alta. Lo estamos ampliando utilizando mi metodología y a los usuarios les encanta porque se sienten investidos de ello. Todos los proyectos que he desarrollado de esta manera funcionan. Pero aún así, la gente insistirá en que “comps y comité” es la forma de hacer el trabajo.

Desde el principio estaba más interesado en el desarrollo front-end. He trabajado en ambos extremos simultáneamente (Anverso y reverso). Al principio, cuando estaba usando Bootstrap simple y CSS animado, las cosas iban bien. Estaba trabajando solo, así que no me preocupaba la Estructura de mi Código. Acabo de intentar hacer que las cosas funcionen en el peor de los casos.

Luego, obtuve trabajo en una compañía de alto perfil como Desarrollador de UI y las cosas cambiaron enormemente. Están escribiendo su propio marco desde cero que solo usa JS. La estructura del código es de primordial importancia y al construir cualquier aplicación nueva o página única, todo el equipo necesita discutir la arquitectura de esa. Para cada tipo de aplicación, las aplicaciones de SEED están escritas y necesitan usar esa. El uso de NodeJs durante el desarrollo de la aplicación y la participación de nuevas tecnologías en nuestra aplicación es algo difícil para mí.

Hoy en día, las cosas no me parecen tan fáciles como antes. Pero una vez que tenga algo de experiencia con este tipo de cosas, seguramente se acostumbrará.

Creo que el problema real con el front end no es su dificultad, pero a menudo (al menos en mi experiencia) el hecho de que es un objetivo en constante movimiento.

La escritura del código de fondo tiende a basarse en reglas fáciles de analizar (tanto de negocios como de procesos) que rara vez cambian. Por otro lado, las reglas de front-end cambian en función de los comentarios de los usuarios, el enfoque cultural de la empresa, los cambios de diseño que no tienen en cuenta la funcionalidad y CÓMO el diseño impacta o interactúa con la funcionalidad, así como los Gerentes, Diseñadores, gente de relaciones públicas y otros que desean todas las últimas campanas y silbatos para llamar la atención por cualquier razón racional o no (en su mayoría no).

Como resultado de todo eso, el diseño frontend para mí es especialmente desafiante porque las direcciones cambian constantemente. Y esto es ANTES de decidir sobre el marco front-end correcto, la compatibilidad entre navegadores, el diseño receptivo, el diseño interactivo, la facilidad de uso y la experiencia general del usuario.

Como otros han dicho, algunas personas prosperan en este tipo de espacio de cabeza. Si eres talentoso y disfrutas de cambiar de marcha a una velocidad alta, tiende a ser más fácil. Si es visualmente creativo en particular o visualiza mejor los conceptos en general, podría ser más fácil.

Al final, no es simple, es más difícil que la otra evaluación en mi opinión. Es más mi cerebro funciona mejor con ciertas trayectorias que otras. Con frecuencia digo durante las entrevistas, si quieres que haga un trabajo frontend, puedo hacerlo. Sin embargo, hay MUCHO mejores candidatos. Mis mejores conjuntos de habilidades están en el otro extremo del espectro.

Si, es mas dificil. Y se está volviendo cada vez más difícil.

Nadie diría que desarrollar navegadores cruzados, aplicaciones web de dispositivos cruzados es trivial. Pero el desarrollo frontend es mucho más que eso.

El desarrollo web moderno se centra principalmente en las tecnologías del lado del cliente. La pérdida de material, que solía estar disponible solo en el lado del servidor, ahora es posible en los navegadores web.
– Control de caché
– Criptografía
– Base de datos
– Manipulación de imagen, audio y video
– Multithreading
– Proceso de transmisión
HTML5 también incluye algunas otras tecnologías, como conexiones de igual a igual, notificaciones y tecnología fuera de línea.

La mayoría de ellos tardan meses en aprender, años en dominar.

Como desea aprender el desarrollo frontend, le sugiero que eche un vistazo a esta lista de API HTML5.

Soy un desarrollador web full stack y debo decirles que se trata del estado de ánimo. A veces me encantan los trabajos frontend, especialmente si el diseño es algo que me gusta como tendencia. A veces, hacer algo increíble en el backend, que cambiará todo sobre cómo funcionaban las cosas, me alegra el día … O cuando escribo algo totalmente nuevo que generará toneladas de código en la interfaz, oh, sí, esa es la mejor sensación. !

Y hay otra cosa … la interfaz parece difícil porque el 90% de su trabajo será cuestionado y la gente le dirá que lo habrían hecho de otra manera …
En el backend, el 99% de las veces, a nadie le importará lo que hiciste siempre y cuando funcione de la manera que debería. Entonces, puedes experimentar, hacer cosas estúpidas y salirte con la tuya (no te vuelvas estúpido con la seguridad !)

El desarrollo front-end no es realmente más difícil, solo necesita escribir mucho más código, mucho más código. El código de fondo puede ser solo una consulta a una base de datos, convertir a json y servir, pero debe actualizar los datos en la pantalla, tener en cuenta a los usuarios, botones, listas, actualizar, actualizar, calcular, CSS, estilo y más.

Es solo mucho más código. En realidad, no es más complicado a menos que lo hagas más complicado.

Tener que tener en cuenta más eventos es más trabajo. La parte frontal es mucho más trabajo, no más difícil. Esa es al menos mi opinión y la seguiré 🙂

He sido desarrollador web durante años, y he trabajado en cada pila que hay. Y honestamente puedo decirte que todos los temas son difíciles a su manera.

Cuál es más difícil depende principalmente de usted y de la forma en que trabaja su mente. Personalmente disfruto mucho el trabajo de Frontend, así que es algo fácil para mí, puedo apagar mi cerebro y codificar sin tener que pensar en codificar, es como andar en bicicleta. Pero cuando se trata de backend, tengo que estar presente mentalmente siempre durante la codificación y hacer un esfuerzo para pensar en soluciones y solucionar problemas. Lo disfruto también, pero Frontend es mi stack favorito.

No hay una idea errónea de encontrar algo difícil o fácil, todos pensamos de manera diferente y cada uno de nosotros es naturalmente bueno en algo y enfrentamos algunos problemas en otras cosas. Solo tiene que resaltar sus puntos fuertes y concentrarse en fortalecer sus defectos.

No, no es una idea falsa, el desarrollo de la interfaz requiere mucha experiencia en diseño de materiales que puede obtener dedicando muchas horas a comprender cuáles son los principios de diseño y cómo se ve el diseño agradable.

Yo diría que si desea perseguir seriamente el desarrollo frontend, debe tomar un curso sobre diseño de interfaz de usuario.

Déjame contarte mi parte de la historia, hace unos meses estaba desarrollando una aplicación de cuestionario, tenía todo listo y listo. El extremo frontal y el extremo posterior. Estaba haciendo retoques finales mientras también estaba tomando cursos de UID. Después de completar el curso, me di cuenta de lo equivocada que estaba mi percepción sobre el desarrollo frontend. Estaba desarrollando un sitio web teniendo en cuenta mi propio yo. Cuál es el error más grande que cualquier desarrollador de frontend haría.

La razón por la que es más difícil es porque muchas compañías piensan que el desarrollo front-end es una tarea única. En muchos lugares en los que he trabajado, es típico contratar a un grupo de desarrolladores de back-end, cada uno con roles distintos. Nadie, en estas compañías, espera que el experto en sistemas lo haga un experto en Java y también un administrador de base de datos.

Pero, a menudo, se espera que una persona sea experta en diseño, codificación Javascript, UX y CSS. (Y a menudo se espera que esa misma persona también incursione en el back-end).

Eso es lo que empiezo a hacer cuando aprendí AngularJS. Uno usa el backend solo para consultar la base de datos y devolver datos al cliente en formato JSON.

No es necesario usar un marco MVC en el backend. Y la interfaz no es más complicada, solo está más extendida.

Debe cuidar el estilo, la usabilidad, la capacidad de respuesta, el marco MVMM, el rendimiento y la seguridad.

He estado escribiendo código desde mucho antes incluso de que hubiera una interfaz. El desarrollo del código no fue fácil entonces. Nunca se debe a que debe tener en cuenta todo lo que pueda afectar a su código (todas las entradas o conjuntos de datos posibles).

Con el desarrollo front-end, tiene el comodín del usuario, un factor impredecible que puede crear combinaciones totalmente locas. Sin embargo, debes diseñar para todos ellos. Luego, están las plataformas. Lo que funciona perfectamente en uno falla en otro.

Desde mi punto de vista, la codificación es la misma, pase lo que pase, pero el diseño para los front-end es mucho más difícil debido a todas las variables incontrolables.

Hoy en día, el uso de marcos de interfaz de usuario (bootstrap, MDL) es realmente útil. El resto es solo (para mí) prueba y error. Eventualmente comprenderá lo que el usuario quiere (lo que naturalmente entenderá). Si, es un proceso. Si, lleva tiempo. Sí, es frustrante al principio. Pero lo entenderás.

También lucho con las cosas de front-end. Esto se debe principalmente a algunos problemas clave con la tecnología o mis propias limitaciones, que incluyen:

  • Diferencias del navegador: tener que soportar diferentes navegadores que tienen diferentes motores JS y CSS es difícil
  • Diferencias de dispositivo: es difícil tener que soportar y hacer que el sitio sea utilizable en teléfonos, tabletas, computadoras de escritorio y pantallas realmente grandes
  • Aplicando el diseño de manera efectiva: soy realmente malo al ver las diferencias en los rellenos, los márgenes … bueno, el espaciado en general; y no veo las guías de diseño que me expliquen que estas cosas en diferentes áreas deben alinearse porque el ojo debe seguir

Algunos de los primeros pueden ser manejados por bibliotecas y marcos, por ejemplo, jQuery, una variedad de shims ES5, shims de consulta de medios, etc. Pero hay fugas en todos estos. Y puedes toparte con ellos fácilmente. Contrasta esto con mi lenguaje principal en estos días, PHP, y aunque existen algunas pequeñas diferencias en cómo funcionan mod_http y PHP-FPM, son realmente oscuras; entonces solo está apuntando (en su mayoría) a versiones de PHP, por ejemplo, 5.4 o 5.5; hay algunas excepciones menores en el mundo 5.3.

Del mismo modo, en la segunda parte, debe ser consciente de cómo se desempeñará el código en diferentes entornos, pero generalmente solo tiene unos pocos de qué preocuparse. En comparación con la cantidad de dispositivos y tamaños disponibles, esto es realmente fácil.

En el último simplemente no tengo suficiente para ver esas cosas, o no me importa lo suficiente, elige tu opción. Si alguien me dijera explícitamente “haz esto a partir de eso”, puedo seguir las instrucciones, pero si lo hiciera a simple vista no vería las diferencias que otras personas harían.

Otra es que las herramientas para el trabajo front-end generalmente han sido deficientes en comparación con el back-end. Mantener CSS organizado es un verdadero desafío. SASS y LESS lo hacen mejor, pero llegan razonablemente tarde a la fiesta.

Todos tienen su propia especialidad. Algunos son mejores para cocinar y otros para pintar. ¿Cocinar es más difícil que pintar? ¿O es más difícil pintar que cocinar?

Parece que está captando conceptos de desarrollo de back-end más rápidamente que front-end. Probablemente sea porque el back-end es más adecuado para usted o porque simplemente se encuentra sobre las superficies del desarrollo del back-end mientras ya se ha enfrentado a complejidades del front-end.

Si está aprendiendo temprano, no decida cuál es para usted. A menudo encontré una parte de algo fácil cuando comencé a aprender eso, solo para descubrirlo después, esa es la parte realmente difícil cuando aprendo más.

Sí hombre, encontré el front-end mucho más difícil. He creado muchas aplicaciones de back-end en el pasado y todavía encuentro el uso de JavaScript y jquery mucho más complejo que los lenguajes de back-end como laravel, node, MySQL. Son tantas cosas que puedes hacer con eso en estos días y ahora tienes bibliotecas como angular, bootstraps, sass, less.

Sin mencionar que tiene pruebas en todos los navegadores diferentes y ahora también debe hacerlo accesible para personas con discapacidades, por ejemplo, alto contraste, reconocimiento de voz y hacer que todo funcione con el teclado.

Hay bastantes recuadros negros cuando se trata de código de front-end, siendo el diseño dom más oscuro y difícil de entender a veces. El lado del servidor es en su mayoría directo, datos de entrada, transformación, datos de salida. Tú eliges qué cajas negras usar.

Debes estar familiarizado con muchas más peculiaridades de la web en general al desarrollar código front-end. Mientras que con el código de back-end, a menudo es posible confiar mucho en ser un programador experto y entender algunos otros sistemas con los que interactúa su código. Para el trabajo frontend, su código puede ejecutarse en 15 navegadores y tiempos de ejecución diferentes, cada uno de los cuales puede admitir algunas de las funciones de idioma disponibles para usted, etc.

Estoy contigo … diseñaré una CPU a partir de SiO2, escribiré un sistema operativo en mi tiempo libre, construiré una base de datos segura en tiempo real para divertirme, ¿pero estas cosas de UI? Me vuelve loco.

Además de todos los caprichos de todos los diferentes navegadores y tamaños de dispositivos con los que tiene que lidiar, existe este elemento humano, y obtener UX correcto, o no, matará absolutamente su trabajo, sin importar cuán bueno sea por méritos técnicos.

Tal vez es solo la forma en que estoy conectado, pero creo que el front end es mucho más difícil.

More Interesting

Estoy creando un sitio web a partir de Dreamweaver CC 2017 y quiero comprar un nombre de dominio para el sitio web que estoy construyendo. ¿Cómo puedo hacer eso?

He trabajado en diferentes marcos de javascript, pero recientemente me di cuenta de que primero debería dominar javascript, ¿cómo lo hago?

¿Quién es el proveedor de alojamiento web y diseñador inactivo más barato y rápido de Estados Unidos?

Quiero construir un sitio web de red social. ¿Debo usar Ruby (en Rails) o Python (Django)?

Estoy a punto de tomar un curso de Mongo DB sobre Udacity. Pero no tengo ningún conocimiento previo sobre conceptos de bases de datos como MySQL, etc. ¿Debo tomar el curso o debo comenzar con MySQL?

Cómo crear un panel de administrador oculto para mis sitios web como Google, Facebook o los grandes sitios web

Cómo hacer popular el contenido de mi sitio web

¿Podría una sola persona hacer su propio navegador web si tuviera un título en Informática?

Soy nuevo en el marco de Laravel. ¿El marco de trabajo de Laravel está especializado para hacer aplicaciones web front-end o puede hacer tanto front-end como back-end?

Tengo un presupuesto de $ 12,000 y una buena idea de aplicación. ¿Puedo obtener una aplicación hecha con el mismo nivel de pulido y calidad que tienen las aplicaciones de Facebook y Twitter si subcontrato a la India?

Estoy considerando usar Sails.js como un marco de back-end. ¿Es muy temprano?

¿Debo aprender el lenguaje JavaScript completo o es mejor aprender algunos relacionados con el desarrollo web en caso de que quiera convertirme en desarrollador web?

Estoy a punto de aprender Python como mi primer lenguaje de programación. No tengo experiencia previa en programación. ¿Algún consejo o cosas que debo tener en cuenta?

Soy un desarrollador Java de backend que trabaja en finanzas. ¿Cómo puedo ganar más dinero en el lateral? No tengo mucha experiencia en desarrollo web.

He estado aprendiendo desarrollo web porque quiero hacer trabajo independiente. ¿Cómo sé cuándo estoy listo?