4 Habilidades Blandas Esenciales Para Un Desarrollador.

4 Habilidades Blandas Esenciales Para Un Desarrollador.

Photo by Debby Hudson on Unsplash

TLDR; Este post es parte del episodio 12 de la primera temporada de Café con Tech

En toda área de la vida tanto profesional como personal hay una serie de habilidades que se desarrollan, algunas de forma natural y otras por aprendizaje o adaptación que te permiten desenvolverte de mejor manera. El desarrollo de software no está ajeno a ello, pero por muchos años, el desarrollo de habilidades blandas e inteligencia emocional han sido dejadas de lado durante los procesos formativos dejando a muchos abandonados a su suerte en este aspecto una vez terminado su proceso educativo formal.

Por suerte, la industria, el mercado y la formación en si ha ido cambiando, en distintas direcciones, incluyendo la presencia de muchos desarrolladores sin formación académica y una miriada de freelancers que han puesto en la mesa y demostrado como estas habilidades olvidadas por unos han sido una herramienta esencial en sus procesos.

Personalmente, creo que siempre estuve al tanto de este tipo de necesidades dentro de nuestra industria, siempre estuve algo incómodo y disconforme con los curriculums educativos para ingeniería en donde una gran área del mercado de desarrolladores se dejaba abandonada enfocándose en una industria local conservadora de cuello y corbata.

Claramente, no termine en el camino que el curriculum de donde yo estudie dictaba.

Es por eso que en este episodio quiero compartir las que yo creo son las habilidades blandas más esenciales para un desarrollador hoy en día, ya sea para construir tu carrera, encontrar un nuevo trabajo o simplemente mejorar en el rol en que te encuentras ahora. Pero especialmente, me quiero enfocar en aquellos desarrolladores que están comenzando. Aquellos que están escribiendo su primer "Hola Mundo", aquellos que están por iniciar un camino en este basto, acelerado y cambiante mundo.

Para comenzar, la habilidad que creo yo esencial en nuestra área, aunque quizá sea adecuado a todo orden de cosas.

Aprendizaje continuo

El mundo en el que tú y yo nos desarrollamos o queremos desarrollar profesionalmente es un mercado que muta y crece continuamente y una velocidad desesperada que no ha hecho más que aumentar desde sus inicios. En general, nuestra sociedad ha cambiado aceleradamente y ahora nuestro trabajo es parte esencial del como las sociedades crecen, se comunican y organizan, y es por esta naturaleza cambiante y esencial que tenemos que formar y adoptar la habilidad del aprendizaje continuo.

Con esto me refiero a que debemos ser capaz de siempre estar aprendiendo, aceptar que no lo sabemos todo y que no existen tal cosa como un experto. Lo que sabes hoy puede ser el pináculo del conocimiento tecnológico de tu área, pero mañana una nueva implementación verá la luz y lo que sabías, si bien no será obsoleto ya no es la cima que solía ser.

Este proceso de aprendizaje continuo incluye algunas "sub-habilidades" o habilidades relacionadas que permiten que puedas continuar aprendiendo sin importar tu edad ni el rol que desempeñas.

Necesitas tener un pensamiento crítico, y no solo con la información que te rodea, si no, que con lo que crees saber, debes estar listo para aprender y cambiar si los hechos o las evidencias así lo demuestran. Sobre todo al inicio de tu carrera escucharás un sin fin de consejos de personas que tienen mayor experiencia en el campo, y obviamente, escucha esos consejos, pero tómalos con cuidado y recuerda que cada consejo tiene un sesgo, personal, ideológico, o en este caso tecnológico. Es posible que escuches consejos sobre que tecnología aprender o sobre que camino seguir en tu carrera, cuando esta información llega a ti es donde debes practicar tu pensamiento crítico y tu habilidad de investigar. Otra habilidad relacionada es la capacidad de autonomía de aprendizaje. No todo el conocimiento se obtiene en una sala de clases o de libros de autores. En general todo ese conocimiento, si bien útil e interesantes, es de a lo menos unos 5 o 10 años. Un conocimiento que se ha encerrado en las aulas y que poco a sociabilizado con el mundo exterior. Y está bien!. Es claro que las casas de estudio no pueden seguir el paso a este mundo acelerado, deben preparar curriculums para cientos de estudiantes y actualizar a catedráticos que quizá llevan años haciendo investigación de su área. Y esto lleva tiempo. Pero tú, eres tú, te conoces, sabes lo que quieres y cuál es tu proceso de aprendizaje. O al menos deberías. Por lo que el tiempo requerido para mejorar tus conocimientos por cuenta propia es cada día menor. Existen un montón de material allá afuera tanto gratuito como pagado, que puedes consumir en el momento que tú quieras y que te ayudará a mantenerte al día o incluso a aprender más sobre algún tema en específico.

No es necesario que tomes un curso o certificado, la verdad es que no conozco ninguna empresa que pida un certificado en alguna tecnología... bueno las que aún escriben Java ...

Puedes simplemente aprender pequeños trucos o tips que te permitan resolver un problema en particular. No es necesario que dediques cientos de hora a aprender una tecnología, basta con que consumas el contenido adecuado y practiques, y ya estarás aprendiendo.

Y aquí viene otra parte truculenta. Consumir el contenido adecuado. ¿Como saber si lo que estoy leyendo/escuchando o viendo es contenido relevante?

Personalmente creo que hay dos formas:

  1. SI es relevante para ti, entonces ya está definido.
  2. Y dos, si proviene de una fuente confiable ya estás en el buen camino. ¿Qué es una fuente confiable? En toda área del desarrollo de software hay personas que crean contenido al respecto y muchas que son reconocidas por lo que hacen. Es ahí donde hay que poner el foco, en donde la experiencia que se comparte sea de alguna forma comprobable.

Finalmente. Si en este momento estás estudiando para ser desarrollador o ingeniero. Ten claro eso. Hay un mundo mucho más grande que las murallas de tu casa de estudio.

Saber elegir tus batallas y definir objetivos

No sé muy bien como se llamaría este tipo de habilidad, pero puedo definirlo como la habilidad de saber elegir que hacer. Elegir que estudiar, en que enfocarse, que contenido consumir, etc. En general esta elección debe ir alineada de alguna forma con objetivos. Es claro que al inicio de tu carrera el objetivo quizá no es muy claro y elegir que camino tomar en términos de que tecnología debería aprender es bastante difuso y sesgado sobre todo por la necesidad de trabajar. Es por eso que creo importante que si aún estás estudiando comiences tu camino de autoaprendizaje y comiences a definir tu objetivo desde ya para que no salgas al mundo sin saber qué hacer.

Elegir que camino en tecnología tomar es importante, ya que te ayudará a disminuir y limpiar el incesante stream de información que recibes, te ayudará a enfocarte en un aspecto en particular, por ejemplo. Decidir si te gusta más el desarrollo Frontend o Backend o Si te gusta el desarrollo de productos o servicios vs el desarrollo empresarial. Quizá al inicio de tu carrera decidir que lenguaje aprender hasta ser un experto es complejo e incluso contraindicado, si creo que deberías tener alguna preferencia que te permita tener una herramienta que sabes usar de buena manera.

Comunicación.

El desarrollo de software es más sobre comunicación y personas de lo que parece en la superficie. Por mucho tiempo se ha visto a las quienes trabajamos en desarrollo de software como obscuros ermitaños sobre un teclado alimentándose del brillo de la pantalla como si una planta a luz se tratara. Se nos ha estereotipado como huraños, apáticos y antisociales, pero eso no es así. O al menos ya no. Como comenté al principio. Estamos en una sociedad en donde nuestro trabajo cobra cada día más importancia y en donde se ha entendido que no solo bebemos café y producimos código, si no, que nuestra labor es producir valor al usuario, valor, por medio del desarrollo de un producto, de una experiencia. Y para lograr ese objetivo es necesario trabajar en equipo, es muy poco probable y poco común que un producto sea desarrollado completamente por un ingeniero solo y aislado del mundo.

Es tan simple de ver que comunicación es clave, basta con ver como funciona GitHub y los cientos de miles de comentarios y pull request en los repositorios, los miles de blogs sobre desarrollo de software, los cientos de personas que asisten a eventos sobre software.

Saber comunicar es clave, es necesario en varios puntos.

  1. Comunicar lo que estás haciendo con tu equipo para que así todos puedan visualizar lo que ocurre con el proyecto
  2. Comunicar si tienes un problema y pedir ayuda cuando es necesario
  3. Comunicar que estás en desacuerdo con algún aspecto de como se está haciendo el proyecto, sea este una decisión técnica o no - como las estimaciones
  4. Comunicarte con la comunidad. Participar de la comunidad. Por el medio que sea, es útil para salir del ostracismo. No importa si desarrollaste una solución de software para calcular pi a la precisión si nadie lo sabe y si nadie puede verificar cuál fue tu proceso. Aquí participar de conversaciones en github, twitter, dev.to o meetups locales que se hagan en tu ciudad es no solo útil, sino también entretenido.

Y finalmente, saber descansar.

El desarrollo de software es una criatura compleja. Es una actividad de ingeniería pero con una alta mezcla de creatividad y arte. Es prima de las matemáticas, ciencia exacta, pero también de las artes de contar historias. La resolución de problemas mediante código no es una actividad repetitiva y calculadora, si así lo fuese, ya no estaríamos escribiendo código, sino que un programa lo haría por nosotros.

Y esta naturaleza extraña hace que sea una actividad de alto estrés, todos quieren ese trozo de código en que estás trabajando para ayer. Y al mismo tiempo una actividad que apasiona. Es por eso que saber desconectarte y descansar de esta actividad es necesaria.

Es una habilidad que cuesta en un principio. Debo reconocer que por mucho tiempo mi hobby era seguir escribiendo código, pero esta vez para algún proyecto personal, es decir, me pasaba muchas horas frente al computador haciendo lo mismo pero en diferente contexto. Hoy, sigo muchas horas al computador pero al menos haciendo algo diferente 😅

Aprender a descansar es necesario, quizá en los inicios de tu carrera no se note, pero con el tiempo tu cerebro y tu cuerpo lo agradecerán. En este punto también incluyo el aprender a despejarse cuando estás atrapado por algún problema y el trabajar en tu salud mental y física para así tener más energía y mantenerse en la carrera por más tiempo.