🦁 Un safari por el mundo de la programación

Descubre cuáles son los tipos de programadores y los problemas que surgen entre ellos en el ambiente académico y laboral.

Categorías
Sector IT y empleo

Bienvenido a la selva IT

El sector IT es un paraíso laboral en el que muchas personas hemos encontrado nuestra vocación y la forma de ganarnos la vida cómodamente. Pero no debemos olvidar que la naturaleza es cruel y este sector, un lugar hostil.

Profesionales de todo el mundo, con diferentes habilidades tecnológicas, compiten en un mercado, cada día más global y saturado, por las oportunidades laborales a las que cualquier programador aspira.

En esta guerra, es fácil hacer amigos, pero más aún convertirte en la presa de otro animal que, como tú, quiere convertirse en el rey de la selva.

YouTube player

Soy Carlos Sala, desarrollador de software, y hoy vamos a hacer un tour por el mundo de la programación; tanto en la fase académica, en las instituciones que forman a futuros programadores, como en el posterior ambiente de trabajo que se da dentro de las empresas tecnológicas.

¿Qué tipos de programadores existen? ¿Cuáles son los problemas más comunes que surgen entre los compañeros de una misma carrera o compañía? Estas, y muchas otras preguntas, van a ser resueltas a lo largo de este safari.

Coge la mochila porque ¡comenzamos!

La fauna: tipos de programadores

Como no podemos contar una historia sin conocer a los personajes, comencemos presentando a los principales tipos de programadores, según sus habilidades, que podemos encontrar en este ecosistema.

Estoy seguro de que ya conocías a alguno de estos, aunque sea de verlo en un documental de Discovery Channel.

Desarrollador frontend

El primero de todos es el desarrollador frontend. El más común de los desarrolladores.

Un pingüino programando.

Estos programadores, por llamarlos de alguna forma, se encargan de construir la parte visible de las páginas web o aplicaciones móviles con librerías como React, Vue, Angular o Flutter. Se trata de diseñadores venidos a más, que han aprendido un poco de JavaScript, HTML y CSS.

Una de sus características más llamativas es que siempre van equipados con su Mac envuelto en pegatinas de las tecnologías que controlan. Sin él, se sienten desnudos y lo muestran para demostrar a todo el mundo que se dedican a la programación. Como cuando un niño se disfraza de adulto.

Contra todo lo que pueda parecer desde fuera, desarrollar el cliente de una aplicación web o móvil presenta desafíos como los estándares de calidad de la interfaz de usuario o el funcionamiento cuando perdemos la conexión a Internet en el dispositivo en el que se está ejecutando. Así que contar con uno de estos ejemplares con varios años de experiencia en el equipo es totalmente necesario para controlar que se cumplen estos requisitos.

Desarrollador backend

¿Habéis oído eso? Es el gruñido de un desarrollador backend.

Un personaje con capucha de un anime.

Ocultos entre las sombras, los programadores backend o de servidores web se encargan de la programación de APIs y microservicios en lenguajes como Python, PHP o Java. La conexión y consulta a las bases de datos también corre a cuenta de este solitario espécimen.

Al nacer, las crías de backend son abandonadas por sus progenitores a su suerte. Se cree que este es uno de los motivos por los que terminan abrazando la oscuridad que hay detrás de los servidores. Pero sólo ellos saben lo que de verdad hay en sus cabezas.

La solitaria vida de estos programadores les conduce al consumo de sustancias para alterar su estado de consciencia y a la autolesión. Es frecuente ver ejemplares adultos con cicatrices por todo el cuerpo.

Desarrollador de videojuegos

¡No hagas ruido! Eso que veis ahí es un desarrollador de videojuegos.

El chico de World of Warcraft que aparece en South Park.

Los desarrolladores de videojuegos viven en comunidades herméticas en las que solo se relacionan con otros de su misma especie. Dentro de estas comunidades, los game devs se organizan según el motor de videojuegos que utilizan, ya sea Unity, Unreal Engine o cualquier otro.

Los ejemplares de game dev son muy diferentes unos de otros porque ¿quién no ha querido en algún momento de su vida crear videojuegos? En el fondo, este tipo de programadores escriben código porque no tienen más remedio, pero su objetivo vital es hacer realidad esas ideas de videojuegos con las que sueñan despiertos, convirtiéndose en diseñadores de videojuegos.

En general son animales muy territoriales, así que te recomiendo no acercarte a ellos si no estás dentro de su gremio.

Desarrollador de inteligencia artificial

El siguiente es el desarrollador de inteligencia artificial, en latín homo cerebrus. Podemos identificarlos inequívocamente por el bulbo de su cabeza, acorde con el tamaño de su cerebro.

Primer plano de Megamind.

Estos programadores tienen una fijación patológica con Python y rechazan el resto de lenguajes. Sus habilidades son más matemáticas que de programación, limitándose estas últimas a memorizar algoritmos de machine learning y a entender los conceptos que orbitan alrededor de esta disciplina como: redes neuronales, procesamiento de lenguaje natural o modelos generativos. Este remix de términos suena más complicado de lo que en realidad es, ya que la mayoría de estos desarrolladores hacen uso de librerías como Tensorflow que ofrecen capas de abstracción superiores y exponen una API fácil de utilizar.

Intentar conversar con un desarrollador de inteligencia artificial de otro tema que no sea su trabajo es matemáticamente imposible, mejor invierte tu tiempo en otra cosa.

DevOps

Por último, tenemos a los DevOps.

Mr. Increible trabajando en el ordenador.

La gente de DevOps se encarga de mejorar los procesos de desarrollo, integración continua y entrega de software, mediante el uso de Docker, herramientas de automatización y el scripting. La figura de DevOps en una empresa es fundamental para liberar a los desarrolladores de este tipo de tareas y mejorar la productividad, así como para solucionar problemas en la infraestructura de los sistemas.

Cuando nacen, los DevOps son programadores normales, pero en algún momento de su madurez deciden volar del nido y abandonar la programación. Los DevOps son los perfiles más codiciados por las empresas, ya que no son una especie demasiado numerosa.

Vale la pena destacar, que debido al estrés que les produce estar presentes en todos los proyectos de la compañía y a la forma irregular de su cráneo, viven en un estado permanente de enfado y son muy inestables emocionalmente.

Programadores híbridos

Además de estas 5 especies, existen unas cuantas más, menos representativas del sector. Así que no las nombraremos para no hacer esto más complicado de lo que ya es.

Goten y Trunks, de Dragon Ball, haciendo la fusión.

Pero lo que sí veo oportuno decir, es que existen programadores híbridos con características de 2 o más de los tipos que acabamos de mencionar. Estos son capaces de realizar tareas en cada uno de los campos en los que tienen habilidades, pero a cambio suelen tener un conocimiento menos especializado en todos ellos.

Un buen ejemplo de estos híbridos son los desarrolladores fullstack, una mezcla entre un programador frontend y un backend que es capaz de desarrollar sitios web o aplicaciones desde el cliente hasta el servidor.

El ego de los programadores

Además de las características que hemos visto que cada uno de estos tipos de programadores tiene, hay una que comparten en común: todos creen que su especialidad es la más complicada del sector.

Plano de Los Vengadores en círculo.

No importa con cuál de las diferentes especies de programadores hables. Cada una siempre encontrará un argumento para defender que su trabajo es el que requiere a los profesionales más cualificados y le restará importancia al resto de roles. Por ejemplo:

  • El desarrollador frontend dirá que la UI de un proyecto es la parte que está en contacto directo con los usuarios y por tanto con la que más cuidado hay que tener.
  • Por su parte, la argumentación clásica del backend es hablar de la complejidad de las consultas en bases de datos relacionales y arquitecturas como la de microservicios.
  • Los desarrolladores de videojuegos a menudo menosprecian a cualquier otro programador que esté fuera de su gremio diciendo que ?son trabajos aburridos?.
  • Los ejemplares que se dedican a la inteligencia artificial, con la excusa de que tienen que utilizar las matemáticas, aunque en realidad las utilizan las librerías de forma transparente, creen que su campo es el más importante. Además del concepto de inteligencia artificial todo el mundo habla fuera y dentro de la programación.
  • Los de DevOps, directamente, como antes sí que programaban y ahora hacen scripts más sofisticados, sienten su rol como una evolución respecto a los programadores.

¿Quién tiene razón?

En realidad a ninguno le falta razón cuando habla de las dificultades que encuentra día a día al realizar su trabajo, pero se está dejando fuera de la ecuación la variable de que el resto de la gente también tiene problemas como tú que no estás contemplando por culpa del ego.

Con premisas como estas, imagina cuál es el tono de la conversación entre un programador de cada tipo cuando sale la pregunta ¿qué es más difícil? Ya que, a su vez, se está preguntando de forma implícita ¿es tu trabajo más fácil que el mío?, que puede interpretarse fácilmente como una provocación o falta de respeto.

Consecuencias del ego entre compañeros de trabajo

Yo que llevo unos años especializado en frontend, te digo que es muy común que, de broma, algún compañero de trabajo suelte un comentario como ?tu trabajo es muy fácil, solo tienes que pintar botones con HTML y CSS?. Y ya sabemos que entre broma y broma suele haber un mensaje codificado.

Lilo, de Lilo y Stitch, peleándose con una amiga.

Estas fricciones entre coworkers dentro de una misma compañía, aunque son más comunes en programadores junior, es mejor solucionarlas cuanto antes hablando con la otra persona claramente y diciéndole que su comentario te ha molestado. Si en algún momento tenéis que trabajar codo a codo en el mismo proyecto, será importante que la relación esté sana para que no haya problemas de comunicación cuando intentéis hablar, por ejemplo, con la persona de DevOps para solucionar un problema con la integración continua.

Defiende tu territorio en la selva sin tener que recurrir a la violencia.

La competencia en la programación

Me encantaría decir que las disputas entre programadores solo se dan entre especies, pero la verdad es que estos enfrentamientos aparecen con frecuencia también entre ejemplares del mismo grupo, pero por motivos diferentes.

La vida es una competición

Por lo que he podido observar en mis años de experiencia, la competencia durante la época de estudios y en el ambiente de trabajo, es lo que más motiva a un simio a matar a otro simio.

Pelea de monos en un barco en Los Simpson.

Si esto fuera el mundo de la piruleta, todos los programadores nos daríamos la mano y haríamos el corro de la patata mientras cantamos, pero la realidad es completamente diferente.

Desde que somos adolescentes, competimos con nuestras notas por una plaza en la universidad a la que queremos ir. Una vez en la universidad, se compite por ser contratado por la empresa en la que quieres trabajar y, cuando empezamos a trabajar, nos seguiremos riñendo con nuestros coworkers cada vez que aparezca una plaza para promocionar a un puesto de más responsabilidad y seamos varios candidatos.

Vigila tus espaldas y acepta las reglas del juego, porque en el mundo real no hay un final feliz en el que todos podamos ser ganadores. Cuanto más demandado sea el puesto, más tensión y jugarretas habrá entre los competidores, que es lo que pasa, por ejemplo, en la industria del videojuego, donde cualquiera vendería a su madre por el puesto de game designer.

No te compares demasiado

Ya que tenemos que competir sí o sí con nuestros compañeros, hagámoslo de forma respetuosa e inteligente.

Dos personajes de Street Fighters saludándose antes del combate.

Sé que esta frase es un tópico, pero evita compararte con tus compañeros. Y si lo haces, que sea con la intención de aprender de aquellos que tienen más experiencia. A mí me funciona como motor para adquirir nuevos conocimientos cuando siento que me estoy quedando atrás entre mis compañeros. 

Obviamente, cuando te compares con otro programador, va a haber cosas que uno sepa y el otro no, porque cada uno tiene un background diferente. Sólo podríais estar totalmente alineados si hubierais tenido vidas idénticas en el pasado y tuvierais la misma capacidad de aprendizaje. Lo que es totalmente imposible. Así que deja de calcular cuánto de mejor o peor es tu compañero de al lado según los años de experiencia que tenéis cada uno, porque estás fantaseando sin sentido.

La programación en perspectiva

Aun con sus cosas buenas y las no tan buenas, la carrera de programador es en mi opinión muy estimulante para los que nos gusta aprender constantemente cosas nuevas en nuestro trabajo.

Flashes de una mujer programando.

Tendremos discusiones con nuestros compañeros y algunos nos apuñalarán por la espalda para echarnos las culpas cuando no estemos presentes, pero ¿acaso no pasa lo mismo en cualquier otro sector profesional o ámbito de la vida?

Espero que hayas disfrutado de este safari guiado por el mundo de la programación. De nuevo, soy Carlos Sala, desarrollador de software y ¡nos vemos pronto!

Carlos Sala Samper

Handmade software.