Header Ads Widget

Ticker

6/recent/ticker-posts

Desarrollo de frontend vs backend

 Estoy seguro de que es posible que haya entrado en discusión sobre el desarrollo de frontend vs backend o algunos ingenieros quieren hacer solo un tipo de desarrollo.

Soy un ingeniero apasionado durante más de una década y tengo la oportunidad de ver el espectro completo. He hecho desarrollo en el extremo de ambos lados.

En esta publicación, compartiré algo sobre la ingeniería de front-end que está oculto y cosas que no se discuten abiertamente.

Empecemos ..

Back-end 

En esta parte del trabajo, todos entienden que es un mundo de estructura de datos, algoritmo y escritura de código bare metal, manejo de escala, etc.

Interfaz

En esta parte del mundo, la mayoría de nosotros pensamos que solo se trata de crear una interfaz de usuario atractiva y segura, pero diré que es solo una parte.

Como desarrollador de frontend, está expuesto a muchos desafíos de ingeniería. Vamos a discutirlo.

Empezando

Para cualquier tarea relacionada con el backend, puede escribir el código rápido o ese código puede provenir de Stackoverflow y ejecutarse desde IDE.

La obtención del código de la interfaz es solo una pequeña parte, pero después de eso, necesita un servidor web / contenedor para alojar el código y luego conocer el navegador / cliente que desea usar y finalmente se ejecuta el código.

Este es solo un pequeño ejemplo y puede tener una idea de la cantidad adicional de pasos necesarios para ver su código en ejecución.

Sincrónico vs asincrónico
 

En el sistema backend, tiene la opción de elegir si el código es Sync vs Async, pero en el frontend la mayoría de las operaciones deben ser asincrónicas, de lo contrario, la experiencia del usuario final es muy mala.

En el frontend, está expuesto a esto el primer día, pero en el backend pasarán meses o un año antes de llegar al estado de dónde comenzar a pensar en sincronización frente a async.

Estoy seguro de que si ha realizado alguna programación simultánea, entonces sabrá lo difícil que es coordinar tareas asíncronas.

Computación distribuída

 Ahora la computación distribuida se ha vuelto tan común que ahora es difícil pensar en un sistema que no esté haciendo llamadas distribuidas.

Como desarrollador de backend, está protegido o tiene una exposición tardía a la computación distribuida, pero en el frontend cada llamada para obtener datos es una llamada remota, por lo que debe estar al tanto de las fallas que pueden ocurrir cuando se realiza una llamada remota y la lentitud que agrega.

El manejo adecuado de errores se vuelve opcional en el sistema backend, pero al final no es la opción porque el usuario lo notará y se quejará al respecto.

Frontend es la última puerta, por lo que tiene que manejar todos los errores que arrojan o eliminan los sistemas backend, para que la experiencia del usuario final sea fluida.

Experimentó la computación distribuida desde el principio una vez que estuvo en el lado de la interfaz.

Red

Leemos muchos libros de texto que dicen que "la red no es confiable" y, como ingeniero de backend, no te expones directamente a esto porque la biblioteca y el marco lo manejan por ti, pero en el frontend obtienes experiencia de primera mano con la que lidiar y desarrollar una estrategia.

Toda la aplicación de backend se beneficia de una red rápida ( " red de 100 GB" ) porque se ejecuta en el centro de datos, pero para la aplicación de frontend, el centro de datos es el dispositivo del usuario final, que será un navegador / dispositivo de mano.

Muchas veces la red es de acceso telefónico (es decir, KB) y la aplicación tiene que funcionar en una red lenta.

Computación y en memoria

Este es interesante porque cuando el programa de backend es lento, la primera opción es aumentar el cálculo o la memoria porque la infraestructura elástica permite hacer eso, pero en el lado del usuario final no hay elasticidad, por lo que la primera opción no es una opción para los amigos de front-end.

El enfoque adoptado para optimizar el frontend es muy creativo e innovador en comparación con el backend. Esto también ejerce presión sobre el diseño en la aplicación frontal.

Algoritmo 

Los sistemas backend tienen más opciones de algoritmos que se pueden usar para resolver programas, por ejemplo, los algoritmos basados ​​en disco son muy comunes para muchas aplicaciones de backend con uso intensivo de datos, pero en el lado de la interfaz, esta opción no está disponible o de forma muy limitada y debe ser muy creativo en cómo lo usas.

Creo que muchos capítulos del libro de algoritmos no son aplicables para frontend.

Patrones

En el lado del frontend, la industria está inventando nuevos patrones todos los días, pero el lado del backend no se mueve a ese ritmo, por ejemplo, para la composición funcional, el renderizado incremental, la gestión del estado con DS inmutable, sistemas controlados por eventos, fragmentación de solicitudes, llegada tardía de información debido a una red lenta, etc.

Artefacto / Embalaje

El sistema de backend nunca se ve desde la lente sobre el tamaño de jar / exe / dll, pero este es el primer desafío que debe resolverse en el lado del front-end porque el paquete debe ser pequeño para que los clientes puedan descargarlo rápidamente.

La red juega un papel en esto ¿recuerdas 100GB vs Kbs?

Requisitos

Esto puede ser un poco controvertido, pero en muchos casos las interfaces se construyen con requisitos difusos o sin requisitos y se agregan requisitos posteriores. ¡El requisito es imprescindible para el backend! 

Pruebas

Esta es la parte más difícil para el frontend. Dejaré esto por ahora porque necesita un blog de varias series solo para este tema.

Conclusión

Sé que puede parecer que solo estoy tratando de vender que el desarrollo de frontend es más complejo, pero mi punto es que te conviertes en un mejor ingeniero cuando pasas a frontend.

Si no está haciendo ningún frontend, busque la manera de hacerlo o aprenda sobre estos difíciles problemas de los ingenieros de frontend y, en caso de que digan
 "no pienso en estos desafíos" , eduque y ayúdelos.

Si te gusta la publicación, puedes  seguirme  en Twitter.

Publicar un comentario

0 Comentarios