Entre los desarrolladores front-end y back-end, ¿qué conjuntos de habilidades son más importantes para uno que para el otro?

Existen diferentes definiciones de desarrollo front-end. Para muchos, el desarrollo front-end no se trata de “qué tan bien” se ve la aplicación, ese es el trabajo del diseñador visual. Ni siquiera se trata de lo fácil que es usarlo; ese es el trabajo del diseño de UI y el equipo de UX.

Un desarrollador front-end ejecuta el diseño que idean los diseñadores visuales y de interfaz de usuario, pero su conjunto de habilidades todavía se centra en el desarrollo de software, no en el diseño estético o la usabilidad, aunque puede estar trabajando estrechamente con diseñadores preocupados por esos problemas.

No es fundamentalmente diferente del desarrollo de back-end, aparte del hecho de que su código se ejecutará en el navegador, no en el servidor. Ciertas cosas se realizan mejor en el front-end que en el back-end y viceversa, pero los mismos principios de ingeniería de software aún se aplican, y hay marcos de front-end Model-View-Cualquiera como hay MVW de back-end marcos.

A menudo existe la impresión general de que el desarrollo front-end es menos complicado o requiere menos capacidad de programación, pero esa es una generalización excesiva que surge de:

  • mucha gente combina diseñadores web que conocen HTML y CSS con desarrolladores front-end
  • muchas personas que trabajan en sitios web o aplicaciones que tienen front-end muy simples, lo que se debe a las limitaciones históricas del navegador como plataforma de programación y la relativa facilidad de comenzar con el desarrollo front-end (cada computadora de escritorio viene con un navegador y editor de texto instalado, pero la mayoría no viene con un servidor web con CGI / WSGI / etc.)
  • la abundancia de trabajos de “desarrollo front-end” que son poco más que convertir diseños PSD en temas de WordPress o escribir HTML estático

Sí, en muchos sentidos, el back-end tiene muchas más capacidades. No va a hacer una conversión de video o análisis de datos en el front-end. Pero, de manera similar, no se puede construir una interfaz rica y receptiva sin codificación frontal. Y transcodificar un video usando una biblioteca de terceros no es más difícil que construir su propio reproductor de video HTML5 incorporado.

Algunos problemas específicos que los desarrolladores front-end tienen que enfrentar son:

  • Compatibilidad entre navegadores: esto ha mejorado desde que apareció Firefox, pero para interfaces avanzadas y diseños complicados, lidiar con las diferencias en los navegadores sigue siendo una gran molestia y requiere mantenerse actualizado con el panorama del navegador y las mejores prácticas / soluciones estándar para cross -desarrollo del navegador.
  • Accesibilidad: desafortunadamente, este es un tema con el que todos los desarrolladores front-end deberían estar familiarizados (un diseñador no lo ayudará aquí), pero muy pocos lo hacen, lo que hace que la web sea mucho menos amigable para las personas con discapacidades que la tecnología actual permite
  • Diseño receptivo: los sitios web de hoy apuntan a un estándar de usabilidad mucho más alto que hace 10 años, y parte de eso significa permitir que una sola página sea igualmente utilizable en pantallas y ventanas de navegador de una amplia gama de tamaños y resoluciones, incluso si eso significa presentar un diseño diferente según el tamaño de la ventana gráfica y la resolución de la pantalla.
  • Aplicaciones de una sola página: con AJAX y las últimas tecnologías de navegador, los usuarios esperan que sus aplicaciones web respondan de otra manera: no más cargas / actualizaciones de páginas molestas. Ya no es necesario volver a cargar toda la página, incluida la solicitud de nuevo de cada archivo CSS / JS, cada imagen, etc. y la nueva página completa solo porque el usuario envió un formulario o porque se necesita actualizar un solo widget o panel .
  • Rendimiento: las conexiones a Internet se han vuelto mucho más rápidas en muchas partes del mundo, pero los tiempos de carga de las páginas web siguen siendo un gran problema; El back-end tiene su propio conjunto de problemas de rendimiento (generalmente abordados con la infraestructura de equilibrio de carga, la optimización de la base de datos y la creación de perfiles de código), pero el front-end está mucho más enfocado en las limitaciones de la red y del navegador (número máximo de conexiones concurrentes, minificación de código, explotación almacenamiento en caché, atenuando los efectos del bloqueo de recursos, etc.).

Idealmente, los desarrolladores front-end también deberían estar familiarizados con el marcado semántico, que ayuda con el SEO, la accesibilidad y, en general, hace que su sitio sea más fácil de mantener y útil para otros software y servicios. También es probable que esté manejando la integración de servicios front-end de terceros como análisis web, redes sociales, etc.

Los desarrolladores front-end también son particularmente importantes a medida que más y más aplicaciones web comienzan a asumir las ricas UI de aplicaciones móviles y de escritorio, por ejemplo, Google Docs, Office Web Apps o aquellas que hacen uso de WebGL. De hecho, para muchos tipos de aplicaciones (particularmente mashups que utilizan en gran medida API de terceros como fuentes de datos), una startup en la fase de prefinanciación puede renunciar al desarrollo de back-end y simplemente construir un prototipo de front-end vinculado a archivos JSON estáticos que puede ser reemplazado por servicios de fondo desarrollados más adelante.

Y eso es parte del atractivo del desarrollo front-end para algunos. Es la parte de la aplicación con la que los usuarios interactúan directamente y a menudo se preocupan más. Entonces, aunque algunas personas apreciaron el filtrado avanzado de spam y la gran capacidad de almacenamiento que ofrece Gmail, la mayoría de las personas se cambian debido a su interfaz amigable y receptiva que rivalizaba con los clientes de correo electrónico de escritorio. La forma en que el back-end garantizaba la escalabilidad, la seguridad de los datos, la confiabilidad, etc., no era realmente lo que diferencia el servicio de otros para la mayoría de los usuarios.

Una de las cosas más difíciles sobre el desarrollo de Frontend es hacer algo que sea intuitivo, hermoso y útil. Los ingenieros frontend son responsables de obtener los datos del backend y luego mostrarlos de una manera que haga felices a los usuarios y les ayude a completar una tarea. A menudo, esto implica combinar varios tipos de datos en algo útil y descubrir qué significa “útil”.

Cualquiera puede volcar un montón de casillas de verificación, botones y cuadros de entrada en una pantalla y llamarlo hecho. Los grandes desarrolladores de Frontend descubren si eso es incluso lo correcto para mostrar a los usuarios, si se ajusta a patrones establecidos previamente o si es mejor crear algo nuevo. ¿Por qué muestra 15 pantallas cuando 2 lo harán?

Parece que tienes un don para este tipo de diseño. Es un conjunto diferente de problemas que los del backend, ambos son interesantes y únicos. Tienen que descubrir cómo almacenar 10,000 artículos, Frontend descubre cómo mostrarlo haciendo algo que responda y deleite a los usuarios. Los desarrolladores frontend pueden ver su trabajo y señalar a amigos y familiares “hice eso”.

Si tiene la oportunidad, explore ambas rutas y vea cuál le gusta más. La verdadera pregunta es ¿qué problemas te gusta resolver? Responde eso y tendrás tu decisión.

El objetivo debe ser ser un desarrollador full stack. La pila completa significa el conocimiento de la configuración del servidor / entorno: backend a frontend, SEO, etc. Tomemos un ejemplo de un edificio.
El desarrollador de backend crea la base (el marco de la aplicación, en términos sueltos), luego construye sobre él el esqueleto del edificio, luego completa el edificio, proporcionando todos los cables, tuberías, etc.
Ahora el desarrollador front-end le dice qué colores usar y dónde. Él determina a dónde irán las luces / ventiladores / equipos. Él diseña el interior y el exterior. Los parques / pasarelas, etc. Marketing y publicidad (SEO).

Ahora el edificio (aplicación) depende igualmente de ambos. El edificio no puede venderse si no se ve bien o si no se comercializa de manera eficiente (el trabajo final) y el edificio no puede soportar la carga de personas en tiempo real que viven en él (escalabilidad, etc.).

Mi punto es que no hay daño en el cambio. Solo ganarás. Hazte más versátil. No “olvidará” o perderá y respaldará habilidades como tales.
El conocimiento no se puede calcular. Incluso podría lograrlo si nunca antes lo ha intentado tanto. Quién sabe.

CSS es mucho más difícil de lo que muchos desarrolladores esperan, diría que apueste por completo, si hay un nicho en el que puede avanzar más rápido y está de acuerdo con ello.
La interfaz de aprendizaje le permitirá crear proyectos para usted de principio a fin, lo que siempre es bueno tener.

Recuerde que el código es solo eso, ya sea que se ejecute en un servidor o en un navegador, usted es un desarrollador y su trabajo es hacer que las cosas funcionen y que funcionen bien.