Repasamos los perfiles del desarrollador frontend, backend o fullstack en el terreno de la arquitectura de software y la programación.
Qué vas as ver en esta entrada
¿Qué es un desarrollador?
Un desarrollador es un especialista en tecnología de la información (TI) capaz de diseñar, crear e implementar sistemas, programas o aplicaciones informáticas que satisfacen unos objetivos. Así que, un desarrollador de software o desarrollador web abarca diferentes habilidades para poder cumplir su cometido.
Tradicionalmente, en el terreno de la arquitectura de software y la programación se ha diferenciado de manera general entre dos perfiles de desarrolladores: frontend y backend, las dos caras de la programación.
En los últimos años, a raíz de la evolución de las tecnologías y metodologías ligadas a la transformación digital, existe un debate entorno a la clásica división. Antes de nada, veamos a qué se refiere cada uno de estos tipos: front y back.
¿Qué es un desarrollador frontend?
Cuando hablamos de desarrollo frontend nos referimos a aquella parte de la programación que está a la vista del usuario, que se ejecuta en la parte del cliente, es decir, la capa de presentación o capa UI (User Interface).
La lógica de la presentación y el diseño de la interfaz de la aplicación son tarea del desarrollador Frontend, que también se encarga del diseño de interacción: la manera en la que el usuario se relaciona con la aplicación a través del navegador.
En este sentido, además de conocer los diferentes lenguajes, frameworks y librerías necesarios para el desarrollo, un programador frontend requiere disponer de conocimientos de diseño para encontrar la mejor manera de presentar la información, según los objetivos de la aplicación.
Además, el desarrollador frontend debe tener conocimientos sobre interacción basada en eventos (event-based interaction), seguridad y rendimiento. En la programación Frontend, participan también otros perfiles: diseñador gráfico, diseñador UX, maquetador, etc.
Lo lenguajes básicos con los que trabaja un desarrollo frontend son HTML, CSS y Javascript. A partir de aquí, se multiplican los frameworks y las herramientas, que se tornan cada vez más complejas.
¿Qué es un desarrollador backend?
El desarrollo backend alude a aquella parte de la programación que no es visible para el usuario. Esta parte no se ejecuta en el navegador o dispositivo del cliente, sino en un servidor (físico o en la nube).
La programación backend está estrechamente relacionada con el diseño y la creación de la arquitectura de software.
La lógica del negocio es tarea del Backend Developer: el backend se encarga de procesar toda la información, de relacionar los datos en el interior de la aplicación con las capas visuales que ha creado el Frontend.
Del mismo modo que el programador frontend, el desarrollador backend es un perfil multidisciplinar y precisa conocimientos sobre los múltiples lenguajes y frameworks backend, bases de datos, protocolos http, diversas herramientas, librerías, interconectividad, APIs, así como prestar atención a la asincronía, manejar conceptos abstractos y lógica compleja.
Los lenguajes de programación más populares en el terreno del backend son Java, PHP, Python, NodeJS, C#, .NET, Ruby, etc. Pero en un sector que evoluciona a gran velocidad, surgen nuevos lenguajes que van ganando alcance, como Kotlin y Go.
¿Desarrollador Frontend vs. Backend?
A pesar de esta división entre frontend y backend, ambos perfiles de desarrollador comparten un mismo objetivo: la satisfacción del usuario final. Aún así, no pocas veces, los desarrolladores frontend han visto su trabajo menospreciado, por considerarse en algunos sectores de la industria que el “trabajo serio” es el backend.
Pero la histórica división entre los equipos de desarrollo backend y frontend y la escasa comunicación entre ellos está quedando, cada vez más, obsoleta. ¿Por qué se ha producido este cambio? En primer lugar tiene que ver con la evolución trepidante de la tecnología.
Tanto Javascript, lenguaje tradicionalmente frontend, como los nuevos frameworks que surgen en el ámbito del frontend (Angular, Vue.js, React…) revelan un grado de complejidad mayor que antaño y exigen, muchas veces, afrontar en la parte del cliente problemas de similar calado que en la parte del servidor (asincronía, mantenibilidad, diseño de APIs, etc). Así que solucionar problemas en la parte frontend, exige también capacidad de abstracción.
Además la ruptura con la tradicional división frontend/backend está relacionada con la orientación a producto y la fluidez que han requerido asimilar los equipos de trabajo: equipos multidisciplinares que incorporan frontend y backend, pero también otros perfiles como QA (Quality Assurance) o DevOps, y que asumen un nuevo enfoque de desarrollo bajo metodologías Agile.
Hoy en día, los equipos de backend y frontend deben estar interrelacionados para poder integrar de manera adecuada las funcionalidades del lado del cliente (frontend) y las del lado del servidor (backend) y entregar así software de calidad.
Las fronteras se desdibujan: el desarrollador fullstack… ¿Mito o realidad?
En esta línea surge una nueva figura entre el backend y el frontend: el Fullstack Developer.
Desde que en 2010, el ingeniero de Facebook Carlos Bueno canonizó el término, el perfil de Fullstack no ha estado exento de controversia.
Un stack tecnológico es el conjunto y combinación de lenguajes, frameworks, tecnologías y herramientas necesarias para crear una aplicación o un producto digital. Siguiendo la división que estamos tratando en este post, podemos hablar del stack frontend y el stack backend.
Se entiende por desarrollador fullstack aquel capaz de trabajar en proyectos tanto del lado del cliente como del lado del servidor. Es decir, es un perfil capacitado para afrontar simultáneamente los retos del backend y del frontend.
Nadie que esté dentro de la industria del software puede negar el vertiginoso ritmo al que evoluciona la tecnología hoy en día, los stacks tecnológicos son cada vez más extensos. ¿Realmente es alguien capaz de asimilar tal cantidad de conocimiento y experiencia?
«full-stack» now means you can:
build front-ends
write back-ends
handle devops
start a podcast
curate a newsletter
crack an egg with one hand
animate a Pixar movie
dunk
— I Am Devloper (@iamdevloper) 5 de junio de 2019
Es por esto que algunos califican al fullstack de unicornio: ser mitológico inexistente en realidad, a pesar de que -cuenta la leyenda- durante un tiempo Facebook solo contrataba a perfiles fullstack para trabajar en sus desarrollos.
Así lo contaba Laurence Gellert en este artículo de 2012, en el que lanzaba también la pregunta retórica: “¿Es razonable esperar que meros mortales dominen todas las facetas de un stack de desarrollo?” -y él mismo contestaba- “Probablemente no”.
La idea del perfil fullstack no es tanto saber hacerlo todo, sino tener la habilidad de entender ambas partes de la arquitectura y la programación: la parte del cliente (front) y la parte del servidor (back), eliminando los silos de conocimiento.
No en vano es uno de los perfiles más demandados actualmente por las empresas: un profesional versátil que conozca y tenga experiencia en la implementación de soluciones en frontend y backend, pero que, sobre todo, tenga la capacidad de comunicarse de manera efectiva con el resto del equipo.
¿Y tú, qué te consideras: front, back o fullstack developer? Sea como sea, en Profile hay un lugar para ti. ¿Te unes a nuestro equipo?