• tech
  • thoughts

La situación crítica del desarrollo frontend. Una burbuja que hemos de parar

By@devictoribero,.

El objetivo de este artículo es concienciar a la gente del desarrollo frontend de la alta auto-exigencia, del bombardeo de contenido y el ritmo insostenible que hay nuestra comunidad. La urgencia de cambiar las cosas y adoptar una actitud "me-first" que garantize un bienestar personal.


Llevo casi 4 años en esta profesión y aunque no es mucho tiempo, ha sido suficiente para darme cuenta de varias cosas que me preocupan seriamente de nuestro sector y que nos incumben a todos.

En el desarrollo frontend hay demasiado que abarcar

El primer problema que tenemos los desarrolladores frontend 👨‍💻 es que hay demasiado que abarcar. El aumento de responsabilidad que se está trasladando a nuestro rol y el ritmo frenético que tiene el ecosistema Javascript son los dos motivos principales.

Tal es así, que ya ha surgido una especialización dentro de nuestro rol nombrada UX Engineer, que es una posición que está más enfocada a conocimientos de diseño, experiencia de usuario y la implementación de éstos.

¿Qué es ser un desarrollador frontend en 2019 🤔? Pregunté a la comunidad acerca de qué conocimientos creen que están relacionados con el desarrollo frontend y resultó la siguiente lista 📃:

  • Jerarquía de contenidos.
  • Html semántico.
  • SEO.
  • Schema.
  • Accesibilidad.
  • CSS y sus mil millones de funcionalidades.
  • Preprocesadores y sus millones de funcionalidades.
  • Imágenes y sus formatos (jpg, png, svg, etc...).
  • Animaciones.
  • Accerelated Mobile Pages (AMP).
  • Maquetación de correos electrónicos.
  • Javascript.
  • ECMAScript y sus nuevas funcionalidades anuales.
  • Transpilar código con Babel.
  • Hacer bundles con Webpack y Parcel.
  • Entender la asincronía.
  • Programación reactiva.
  • React / Vue / Angular y sus nuevas funcionalidades periódicas.
  • Redux, Redux-thunks, Redux-sagas para el state management.
  • API Rest.
  • GraphQL.
  • Web Sockets.
  • WEBRTC.
  • Renderizado lado servidor (SSR) y lado cliente (CSR)
  • Mil millones de librerías para cualquier tontería.
  • Herramientas de analíticas como New Relics, Sentry, etc...
  • Principios SOLID aplicados a micro y macro diseño.
  • Patrones de diseño.
  • Testing (unitario, integración, aceptación, etc...) tanto visual como de lógica.
  • Test-Driven Development (TDD), Domain-Driven Design (DDD).
  • Paradigmas: Programación funcional y programación orientada a objetos.
  • Performance (css, javascript, npm, network, http petitions, etc...).
  • Aplicaciones Web Progresivas (PWA).
  • Node.
  • Node Package Manager (NPM).
  • Docker.
  • Metodologías ágiles.

Y como podemos ver, tenemos un problema. Con tantas cosas "que debemos aprender" es imposible centrarse. Es imposible decidir qué aprender. Es imposible no autoexigirse demasiado. Es imposible no acojonarse.

Un ritmo frenético en la profesión

¿Cuántos de vosotros os habéis planteado saber casi todo de la lista anterior? ¿Y cuántos creéis que deberíais saberlo casi todo?

La rápida y constante evolución del desarrollo frontend es una arma de doble filo 🔪. Es tan afilada que hasta tiene su propio nombre: fatiga Javascript.

Si bien es cierto que estamos contentos por el incremento de nuevas funcionalidades 🆕, herramientas 🛠️ y librerías 📚 que enriquecen el ecosistema, eso también significa que las hemos de entender, interiorizar y saber usar para poder estar en este sector.

Aunque todas estas mejoras son algo bueno, estamos pasando por alto una parte muy negativa. La satisfacción instantánea la cual la sociedad nos está sometiendo junto a la sensación de obligatoriedad de estar "a la última" en nuestra profesión, hace que seamos muy críticos con nosotros mismos 🧐.

Las personas que llevan más años en el sector se ven menos afectadas pero, los que acaban de empezar y tienen tanto que aprender... Están altamente expuestos a:

  • Estrés.
  • Ansiedad.
  • Falta de confianza en uno mismo (síndrome del impostor).
  • No valorar el proceso de aprendizaje.

Es estresante ver cada dos por tres en Twitter o Linkedin de nuevas librerías, nuevas funcionalidades, conceptos nuevos, metodologías nuevas, nuevos nombres... Esto, envía un mensaje a nuestro subconsciente de: ¿Aún no lo conoces 😱? ¡Ponte ya! Y esto, es malo de narices porque aunque sea muy poco a poco, afecta e influye a nuestra felicidad y paz interior.

Linkedin y Twitter, entre otras cosas, son redes sociales de postureo profesional. No todo el mundo se ha leído el artículo que está compartiendo. Así que no te castigues a ti mismo por no leerlo.

Pese a que te guste o no, todos somos los que con más o menos ritmo hemos de ir aprendiendo todas las cosas que van saliendo principalmente por dos motivos:

  • Satisfacción propia
  • Optar a un mejor puesto laboral

Y a diferencia de otros sectores, el desarrollo de software es de los pocos con muy alto porcentaje que nos dedicamos a esto lo hacemos por vocación. Esto significa que:

  • Leemos
  • Estudiamos
  • Tenemos algún o varios proyectos personales
  • Asistimos a meetups
  • Miramos conferencias
  • Creamos contenido

Y ojo, ¡Que todo esto está muy bien! Pero ¿A qué precio ⚠️?

Necesitamos un ritmo sostenible

Hemos llegado a tal punto, que queremos aprender a como organizar la semana para ser productivos 🗓️ con el objetivo de tener el máximo de horas disponibles para dedicarlas a crecer profesionalmente 👨‍🎓.

¿Crees que puedes aguantar con este ritmo hasta el fin de tus días ☠️? ¿Serás feliz con tu vida a este ritmo 🤔? ¿No crees que habrías perdido otras muchas cosas 😔?

Entre muchas de las cosas que mi amigo Ignacio comenta en su podcast 🎙️, está el hecho de que nos forzamos cada "X" tiempo a compartir conocimiento en las redes sociales o a estudiar, en vez de hacerlo cuando realmente nos apetece. Y desde mi punto de vista, estamos ignorando aspectos que también deberíamos atender:

  • Socializar más.
  • Descubrir nuevas experiencias como pintura, música, baile, jardinería...
  • Estudiar comunicación.
  • Desarrollo personal.
  • Meditación.
  • Ética.
  • Filosofía.
  • Inteligencia financiera.
  • Inteligencia emocional.
  • Practicar actividad física.

Estas actividades nos aportan distintos tipos de excitación mental 🧠. Ayudan a conocernos mejor, probablemente a ampliar nuestra círculo de amistades y por ende, además de ayudarnos a desconectar, nos aportan felicidad 😄.

Deberíamos entender que cada uno tiene su vida y que por tanto, tiene diferentes contextos y obligaciones. Eso significa que algunos tienen más tiempo que otros para sus actividades y que por eso, no debemos compararnos. Vivamos como a nosotros nos apetezca y no como la corriente nos quiere llevar 🌊.

Síndrome del impostor

El síndrome del impostor es un fenómeno psicológico en el que la gente es incapaz de internalizar sus logros y sufre un miedo persistente de ser descubierto como un fraude.

¿Crees que fulanito sabe 100 veces más que tu? ¿Que tu deber es también saberlo? ¿Que todos tus compañeros saben más? ¿Que no mereces estar ahí? Estos son pensamientos que en el mundo del desarrollo se dan mucho independientemente del tiempo que uno lleve trabajando, aunque es más común en la gente que lleva poco tiempo.

El síndrome del impostor es un problema real que hemos de combatir si nos queremos evitar problemas psicológicos mayores y precisamente, el panorama actual del desarrollo frontend no ayuda en absoluto, sino todo lo contrario 🙎.

El fuerte ritmo de recursos compartidos en la red crean una fuerte corriente que parece ser que todos hemos de seguir porque si no, nos quedamos fuera del panorama.

Aunque tampoco es que las ofertas de trabajo con miles de requisitos ayuden 🤷. ¿Te ha pasado alguna vez que vas andando por el metro, y quieres andar más despacio pero hay tanta gente a nuestro alrededor andando mucho más rápido que es imposible ir al ritmo que queremos? Pues con esto pasa lo mismo.

Solución: Aplicar la Ley de Pareto

La ley pareto dice que el 20% de nuestro esfuerzo consigue un 80% del resultado. (los porcentajes varían según la actividad)

La gran cantidad de temario a aprender y el poco foco que tenemos hoy en día son los problemas principales pero, quizás no estamos siento prácticos.

La ley de Pareto se basa en el pragmatismo en cualquier aspecto de la vida. ¿Para qué invertir un 80% de nuestras energías con tal de aprender el 20% restante de los conocimientos un tema?

Si aplicamos la ley de Pareto a la lista 📃 que hemos mencionado al principio de este artículo ⬆️, quedaría tal que así:

  • Html semántico.
  • Accesibilidad.
  • CSS.
  • Preprocesadores.
  • Javascript.
  • ECMAScript y sus nuevas funcionalidades anuales.
  • Entender la asincronía.
  • Un framework (React, Vue, Angular).
  • API Rest.
  • Principios SOLID aplicados a micro diseño.
  • Patrones de diseño.
  • Testing (unitario, integración, aceptación, etc...) tanto visual como de lógica.
  • Programación orientada a objetos.
  • Performance (optimización imágenes, selectores CSS y acceso al DOM y/o variables en Javascript).
  • Comandos básicos de NPM.
  • Metodologías ágiles.

Como podemos ver, la lista se ha reducido bastante 👌. Siendo honesto, hay elementos en la lista que aunque aportan muchísimo, no deberían ser del interés de una persona que acaba de empezar en el sector, pues debería tener otros objetivos en mente. Por este motivo, vamos a reducir más la lista:

  • Html semántico.
  • CSS.
  • Javascript.
  • ECMAScript y sus nuevas funcionalidades anuales.
  • Entender la asincronía.
  • Un framework (React, Vue, Angular).
  • API Rest.
  • Testing (unitario, integración, aceptación, etc...) tanto visual como de lógica.
  • Comandos básicos de NPM.
  • Metodologías ágiles.

La Ley Pareto en este caso, no solo se puede aprender a alto nivel como acabamos de hacer, sino que también se puede hacer para algunas de las cosas por ejemplo, en el caso de css, tenemos mil cosas a aprender. ¿Cómo aplicaríamos la Ley de Pareto para aprender css?

Podemos decir que el 20% de los conocimientos que aportan un 80% de valor desde mi punto de vista serían:

  • Conocer los selectores más usados.
  • Entender que el navegador interpreta los estilos de derecha a izquierda.
  • Especificidad.
  • Flex y Grid.
  • Mediaqueries (mobile-first)
  • BEM

Aprendiendo estos conocimientos, tendríamos unas muy buenas base de CSS y las habríamos conseguido de manera práctica y rápida.

Y solamente en caso de necesitarlo, me adentraría en el mundo de @support, animaciones complejas o transiciones porque aunque son muy interesantes y útiles para muchas cosas, no creo que vayan a servirte en el día a día en la mayoría de casos.

Solución: Cambio de mentalidad

Otra solución en la que creo firmemente para combatir tanto este ritmo frenético y al síndrome del impostor es un cambio de mentalidad tanto con nosotros mismos, como con los demás.

Algo que me gusta mucho de nuestro sector es que a diferencia de los otros, hay una mentalidad de compartir conocimiento pero esto no significa que no se pueda mejorar (y no hablo en las redes sociales, si no cara a cara).

¿Como actuarías si Pepito 👦 que trabaja en tu equipo, tiene que hacer unas animaciones con css para las nuevas páginas y tu sabes bastante del tema? ¡Siéntate con él y adopta el rol de mentor en esta tarea! Sentaros juntos. Quizás te dice que no es necesario porque o no te quiere molestar, o no quiere que la juzgues, pero insístele un poco más. Quizás te llevas una sorpresa y el que aprende alguna cosa eres tú 😏.

Algunas cosas que podemos hacer para combatir este ritmo frenético y su vez, mejorar la comunidad son:

  • Tener personalidad y saber diferenciar entre: Qué debemos aprender, que quieren que aprendamos y que nos gustaría aprender.
  • Compartir conocimiento (Talleres o charlas en horario laboral de conocimientos que se necesiten en breves).
  • Ser práctico e intentar aplicar la Ley Pareto para localizar qué aprender y cómo hacerlo.
  • Ayudar a los compañeros sin que lo pidan.
  • Tener empatía.
  • No sorprenderse cuando alguien no sabe algo, eso no ayuda.
  • Aprende los conocimiento de ingeniería de software que puedas aprender en distintos lenguajes y/o frameworks.
  • Aprende de manera constante para aplicar el efecto compuesto.
  • Aprende a medida que necesites.

Para terminar, creo que deberíamos reflexionar sobre lo leído y empezar a practicar un ritmo de vida que nos aporte bienestar tanto en el ámbito personal como en el profesional, para así terminar con esta burbuja de presión a nosotros mismos y exceso de exigencias en las ofertas laborales. ¿Y tu, que piensas?

Namasté 🙏,