Académique Documents
Professionnel Documents
Culture Documents
En las aplicaciones de hoy el front-end y el back-end están cada vez más separados;
debido a la creciente complejidad, nuestras interfaces de usuario están ahora
desacopladas de gran parte de la lógica detrás de ellas. Esto significa, grosso modo, que
tenemos dos mundos de desarrollo especializados: front-end y back-end.
No obstante existe una tercera opción: full stack o pila completa, que apuesta por una
visión más holística del sistema.
Esta tendencia está en aumento y resulta muy interesante tanto para los profesionales
como para las empresas, ya que aporta flexibilidad y rapidez de respuesta a las primeras
y; una visión más amplia del sistema, y por tanto más oportunidades, a los segundos.
Full stack significa poder comprometerse con todos los niveles de un sistema. Un
desarrollador full stack entiende el "gran panorama", no importa lo bien separados que
estén los subsistemas. Hoy trabajas en un menú desplegable sofisticado; mañana, puede
que tengas que ajustar la interfaz de la API para ese menú; al día siguiente, puede que
tenga que ir más lejos, a la base de datos, para mejorar las consultas subyacentes que
su API utiliza para obtener los datos que expone.
He hablado con mucha gente en cursos y eventos, y he notado cierto escepticismo hacia
el desarrollo full stack. Los opositores tienen la idea que un desarrollador necesita estar
altamente especializados en un sub-dominio específico para que sus habilidades sigan
siendo valiosas.
Yo no estoy de acuerdo con esta visión. Creo que la tecnología está evolucionando de
tal manera que el valor de un programador hoy en día es más relevante cuando este
tiene el conjunto adecuado de habilidades que requiere la tecnología necesaria en cada
momento. Esto significa gran flexibilidad por parte del programador, conocimiento del
contexto global y capacidad de aprendizaje rápido. Esto es aún más patente cuando en
la actualidad existe un trasvase de complejidad del back al front y; cuando tenemos
tecnologías emergentes y disruptivas que han aparecido y evolucionan con gran rapidez
(IoT, IA, VR, etc.) y están llamadas a impactar de manera significativa en el mercado.
Por otro lado, las empresas tienen cada vez más interés en programadores que son
capaces de cubrir todo el ámbito de desarrollo de una aplicación, ya que les aporta un
conjunto de beneficios como flexibilidad, robustez y rapidez de respuesta.
Desde que Carlos Bueno de Facebook escribió el artículo canónico sobre full stack
(https://www.facebook.com/note.php?note_id=461505383919), no ha habido escasez
de mensajes tratando de definirlo. Algunos posts incluso colocan al desarrollador "full
stack" en el centro del territorio Unicornio (término para referirse a start-ups con
valoraciones de más de 1billón de dolares).
Modelado de datos
Lógica de negocios
Interfaz de usuario
Experiencia de usuario
Al mismo tiempo, añadiríamos varios elementos a la lista que Gellert sugiere, como:
control de código fuente, infraestructura de datos, computación distribuida,
craftmanship, etc.
Por tanto, el desarrollo full stack consiste en exponerse, como desarrollador, a una
amplia gama de ideas, conceptos y tecnologías. Este es un aspecto que veremos
repetirse en los próximos años conforme avancemos e integremos procesos y
tecnologías, como afirma Forbes
(https://www.forbes.com/sites/oreillymedia/2014/04/11/full-stack-developer-is-a-tall-
order-bordering-on-unicorn-territory/#40cf8448ab34).
Es decir, ser un desarrollador full stack no consiste en saltar inmediatamente de trabajar
en el clúster de Hadoop, al middleware de Java y, luego al JavaScript que se ejecuta en
el navegador (la especialización existe por una razón).
Sino que es comprender que los desarrolladores que entienden la “pila completa” van a
construir mejores aplicaciones y aportar mayor valor: Un desarrollador trabajando en el
backend entenderá de fondo lo que están haciendo los desarrolladores front-end y podrá
trabajar con ellos para que la aplicación no genere peticiones que conduzcan las
incoherencias en la base de datos. Un desarrollador trabajando en el front-end que
entiende el diseño será capaz de ayudar a los diseñadores a construir aplicaciones que
son hermosas y pueden funcionar de manera eficiente en cualquier plataforma.
No obstante, el enfoque full stack ofrece muchas ventajas, tanto a los desarrolladores
como a las empresas.
Un desarrollador full stack, puede saltar de una parte de la aplicación a otra sin una
sobrecarga significativa. Esto es una ventaja enorme al planificar hacia adelante o al
diseñar nuevas características.
El verdadero valor del full stack surge cuando el desarrollador es capaz de entender los
requisitos de negocio detrás de una característica y a continuación, tomar
"responsabilidad plena" sobre la aplicación.
Tener un equipo de personas multidisciplinares significa para una empresa que puede
adaptarse rápidamente, ramificando a su equipo cuando aparece una nueva
oportunidad.
También es algo que ayuda a crear química dentro de un equipo. Los desarrolladores
trabajan juntos más tiempo. Incluso si un proyecto comienza con la construcción de una
API, luego se mueve a clientes móviles y web, las mismas personas pueden hacer ese
viaje juntos.
Un desarrollador full stack debe dividir su trabajo de acuerdo a las necesidades del
proyecto. Todo es contextual, y debe ser tratado caso a caso.
Una mejor manera de enfocar estas habilidades -el enfoque full stack- es determinar las
responsabilidades que son capaces de asumir como parte de su trabajo.
En el enfoque agile, los equipos trabajan en estrecha colaboración con los clientes. Es
muy positivo y útil para los propios desarrolladores integrarse en el proceso empresarial.
Una vez que los desarrolladores entienden los problemas de los clientes, comienzan a
proponer soluciones para ellos.
No estamos diciendo que debemos reemplazar todos los roles de equipo con
desarrolladores. Si no que capacitar a los desarrolladores para que sean responsables
de algo más que el código que producen puede ser tremendamente beneficioso para el
producto final.
Cualquier buen desarrollador full stack debe comenzar con un conjunto básico de
habilidades bien desarrolladas. Estas deben estar orientadas a integrarse en los procesos
de negocio de la empresa, entenderlos y aportar valor en el conjunto, recorriendo el
camino de lo más básico –tecnológicamente- a los más complejo, según haya
oportunidad.
Por ejemplo, debe ser capaz de realizar tareas básicas: escribir una cookie, conectarse
a un endpoint REST, realizar una consulta en la base de datos, etc. Un siguiente paso
sería, poder construir nuevas habilidades sobre las anteriores mediante la adición de
nuevas herramientas y nuevas abstracciones con el tiempo.
En el entorno actual apostar por el full stack es en realidad una oportunidad para
enriquecer nuestra visión como desarrolladores. Full stack propone un viaje motivante
y necesario para adaptarse a la evolución constante del mundo, la tecnología y el
mercado. Adquirir una visión holística y más acorde con nuestra propia naturaleza del
desarrollo.
Cuanto más te expongas a diferentes tipos de pensamiento, cuanto más sabes sobre
otras disciplinas que no son las tuyas, más eficaz serás - tanto porque comprenderás
cómo colaborar con tus colegas, como porque tendrás un amplio repertorio de ideas y
conceptos para ayudar en tu propio trabajo.
Como empresa, potenciar y motivar esta opción es una gran oportunidad de ser más
óptimo y competitivo; generar mejores y más valiosos productos; así como aportar una
opción motivante y más humana a los miembros de tu equipo.