Developer Fullstack

Developer Fullstack

¿Qué es un perfil FullStack? ¿Cuantas especialiades son necesarias? ¿Cuantos años con cada una? Seguro que cada uno pensamos algo diferente. Yo expreso en este artículo mis propias reflexiones, que no tienen que coincidir con los tuyas, pero que podemos debatir y enriquecernos todos :)

Normalmente el Fullstack es un título que se autodeclara el propio developer o "te venden" en un bootcamp. Parece que con solo saber algo de back y algo de front te haces fullstack. Es como si aprendo a decir palabras o frases: Hola, Adios, disculpe..., querria..., cuanto cuesta..., aseo, sí, no, donde está... y ayuda en inglés, fránces y alemán y decir que hablo varios idiomas. No. Defenderse o apañarse no es ser fullstack.

Si has estudiado/aprendido esos idiomas y tienes la oportunidad de practicarlos constamente, por ejemplo un recepcionista de un hotel, podemos decir que es "fullstack speaker". Como se pase un tiempo practicar alguno, le costará mas o menos retomarlo. Y seguro que incluso ese perfil "fullstack speaker" en un juicio o en la firma de un contrato, haya muchas palabras, terminos y expresiones que desconoce y que podrá deducir por contexto. Pero cuidado, si vas a firmar algo, mejor entenderlo todo al 100%.

Hace pocos años, en una galaxia no muy lejana...

Veo con mucha insistencia ofertas y peticiones de desarrolladores FullStack.

Me da la impresión que lo que las empresas buscan es eficientar el coste de los equipos de desarrollo, igual que se ha eficientado el uso de la infraestuctura/servidores con la llegada de "la nube".

Ya no tenemos que tener el "acojoservidor" que pueda soportar los 100 millones de peticiones por segundo en el black Friday, aunque el resto del año no tengamos mas de 100 mil.

Ahora se contrata "la nube", se usan contenedores y gestores de contenedores, que escalan los servidores y los servicios en función de la demanda y pago solo por lo usado/necesitado. Ya no tengo que gastar ingentes cantidades de dinero para tener servidores infrautilizados si mi negocio no lo requiere.

En el desarrollo de proyectos de software hay muchas fases o etapas, por necesidades que van surgiendo o por la propia evolución del proyecto.

A veces hay mas carga de analisis, otras de desarrollo frontend, otras mas de backend, bases de datos o de temas de infra, automatización, testeo... y si tienes un equipo para cada necesidad, cuando haya poca carga de front y mucha de back, tienes a 3 front al 20% y los 3 de back al 150%.

¿Solución? Fullstack. Si todos saben de todo, repartimos la carga, escalamos el equipo y listo!

¿Cómo no se nos habia ocurrido antes?

No hay texto alternativo para esta imagen

Una película

Soy el seleccionador del equipo de atletismo de la selección de Chiquitistán y vamos a los campeonatos mundiales.

Queremos participar en los 100m lisos, en los 3000m. y la maratón (42Km)

Somos un país Chiquitito, como su nombre indica, y nuestro presupuesto no es muy grande.

El coste de 2 atletas de cada categoria se me va de presupuesto.

Solución: Atleta Fullstack! Contrato 3 atletas y ¡los 3 corren en las 3 categorias! ¡Listo!

¿Un atleta preparado y especializado en correr de manera competitiva los 100m lisos puede correr, ya no digo de manera competitiva, digo terminar, una maratón? Es improbable.

Un atleta preparado para correr una maratón muy probablemente puede correr y terminar los 100m lisos, pero ¿será competitivo? Sus músculos están entrenados y especializados en resistencia y no en la explosividad que requieren los 100m lisos.

Si en vez de en las olimpiadas, corriesemos en cartegoria regional, con estos atletas de elite, seguro que uno que corre la maratón también podria ser competitivo en los 100m lisos, pero su sueldo no lo mantiene los ingresos de una competición regional...

Otra película

Cuando siento malestar, fiebre, tos, etc. voy al médico de cabecera.

Si me salen unas manchas en la piel, voy al médico de cabecera.

Si me molesta el hombro, si me cuesta dormir, si tengo ardores de estomago después de comer... voy al médico de cabecera.

El médico de cabecera es un médico generalista, o fullstack, que es capaz de darnos una solución a todos esos pequeños problemas de salud.

Si el médico detecta que las manchas en la piel pueden ser precursoras de un cancer de piel me deriva al médico especialista, el oncologo, que además podria ser especialista en canceres de piel y no en otros.

Si el médico detecta que la molestia en el hombro es debido a una caida y despues de la exploración sospecha que puedo tener algo roto, me deriva al médico especialista, el traumatologo y si puede ser a uno especializado en hombros.

Si me cuesta dormir y sospecha que tengo un problema psiquico, me deriva al psicologo o al psiquiatra.

Es decir, cuando tiene que enfrentarse a un problema que requiere de mayor conocimiento o especialización, el médico de medicina general no se siente capacitado o con seguridad para plantear un tratamiento. ¿Podria hacerlo? Sí. ¿Podría dar con la solución? Sí. ¿Podria equivocarse o no dar con ella? Muy probablemente.

No hay texto alternativo para esta imagen


Mi película: Desarrollo de Software

Podriamos hablar de películas de fútbol, baloncesto... no hay jugadores fullstack. Alguno puede ser muy completo, o puede jugar en un par de posiciones, pero es raro que tengan un gran desempeño en todas. Y si hay alguno, se pueden contar con los dedos de la mano.

Todo esto es sólo una aproximación de lo que trato de reflejar y no refleja la realidad ni se puede comparar con lo que ocurre en nuestro mundo del desarrollo de Software. Ya sabemos que cualquier comparación es odiosa.

Solo trato de visibilizar la problematica de pretender tener equipos fullstack.

Entiendo la necesidad de las empresas de eficientar y optimizar los equipos de desarrollo de SW al máximo y que seria ideal poder balancear los equipos en función de la carga o las necesidades.

Pero es un hecho demostrado que un perfil fullstack no es un especialista, por muy bueno, espabilado, creativo, inteligente, hábil... que sea. Puede aportar hasta un cierto nivel. Los habrá buenisimos y capaces de cubrir con soltura varios roles. Puede aportar soluciones rápidas para salir del paso. Puede ser de gran ayuda para cubrir posiciones vacantes o bajas. Hay algunos muy buenos que aportan incluso a gran nivel. Pero la tecnología cambia y evoluciona tan rápido que es necesaria la especialización. Sobre todo en proyectos grandes y complejos.

Poner a un equipo de back Java a realizar la arquitectura front, aunque sea con Angular y Typescript, es pegarse un tiro en el pie, porque un back Java piensa como un back Java no piensa como un Front Angular, no conoce las problematicas del frontend.

Ahora ¿Un back Java puede echar una mano en el front Angular? sin duda. Está capacitado y le resultará familiar, pero teniendo la guia y apoyo del equipo Front y tareas de complejidad relativa.

¿Un front Angular puede echar una mano en un desarrollo de Java/Spring? sin duda.

Es decir, las personas de los equipos de desarrollo de SW deben ser especialistas y tener las habilidades y disposición de ayudar y aprender de otros ambitos.

Pretender contratar al perfil que todo lo sabe y todo lo puede creo que es absurdo.

Las empresas deben buscar esos perfiles en T, especializados en un tema (línea vertical de la T) y con conocimientos/soltura en el resto (línea horizontal de la T). Pero sobre todo con ganas de coger tareas fuera de su especialización si es necesario.

No hay texto alternativo para esta imagen

Conclusión

Creo que los equipos se deben formar basandose en las especialidades que se necesitan. Y sobre todo tener en cuenta que son personas, no máquinas.

Los equipos deben ser equipos balanceados y equilibrados en todos los aspectos (no solo el técnico), con las especialidades necesarias y la transversalidad necesaria e ir adaptandose a las necesidades que vayan surgiendo.

Y creo también que es bueno contar con algún perfil generalista o fullstack en el equipo. Personas con experiencia, que se han pegado con todo. O con mucho.

Pero lo mas importante de todo para tener un gran equipo y eficientar el coste de los equipos de desarrollo, y que siempre se suele dejar en segundo plano u olvidar es:

  • Saber cómo son, cómo sienten, cómo piensan.
  • Qué les motiva, qué les molesta, qué necesitan.
  • Contar con ellos. Involucrarles. Que sean parte de la solución, no meros ejecutores. Y al menos informar y explicar las razones de las decisiones tomadas donde no están involucrados, pero que les afecte.

Así conseguiras personas FULLSTACK. Dispuestas a echar una mano donde se necesite, a aprender lo que se necesite, a especializarse si es necesario, a adaptarse a los cambios. Y mediante el liderazgo adecuado, hacer el mejor trabajo.

Personas que se adaptarán a la empresa y a sus necesidades y llevarán a buen puerto cualquier proyecto por complicado y dificil que sea.

Jose Antonio Alonso Mayor

Ayudamos a programadores junior sin experiencia a conseguir su primer empleo

1 año

Buen artículo Mánu!! Enhorabuena y gracias a partes iguales!! Respecto a la parte que me toca y que conozco, a los junior del Training les perfilamos un poco como navaja suiza porque en realidad su puesto aún no existe, está por definir y efectivamente como bien dices el empresario intenta captar alguien que le eche una mano aquí y allá ... Pero lo bueno es que a los X meses ese perfil se estabilizará en un puesto (front, back, devops ...). Más por habilidad demostrada y por necesidades del guión que por una planificación porque por desgracia no se sabe al 100% qué se va a necesitar (principalmente por clientes o proyectos que se caen o que aparecen de nuevo...) Si hablamos de perfiles senior tengo menos experiencia, pero efectivamente dicen que "el que mucho abarca poco aprieta" con lo que en ese caso creo que lo de full stack es más complicado. Saludos y te sigo leyendo!!

👏👏👏👏👏👏👏👏 Bravo 👏👏👏👏👏👏👏👏

Inicia sesión para ver o añadir un comentario.

Otros usuarios han visto

Ver temas