Una preocupación que tengo para cuando acabe de estudiar y me encuentre en el salvaje y desconocido mundo laboral, es si me gustará mi trabajo. Desde que entré en la carrera de informática he estado intentando averiguar cómo es el trabajo de los informáticos. Por un motivo muy sencillo, durante la carrera me he encontrado con muchas asignaturas que no me han interesado lo más mínimo.
Por suerte o por desgracia para mí, la programación era un hobby antes de empezar la carrera. Aprendí a programar muy temprano cuando me compraron mi primer ordenador al empezar la ESO. Cuándo llegué a la universidad ya sabía programar más que lo que me han exigido en cualquier asignatura. Soy una persona que le gusta entender muy bien cómo funcionan las herramientas que utiliza. Tengo una forma de mirar las cosas muy de “ingeniero”, y no entiendo por qué la imagen del informático moderno está muy lejos de estas preocupaciones.
Me gusta reinventar la rueda*. Me gusta hacer las cosas a mano, hacerlas yo. Me gusta conocer las bases y los fundamentos, conocer al menos un nivel por debajo de lo que se requiere. Saber de matemáticas, saber de hardware, entender de algoritmos y estructuras de datos. Valoro mucho los conocimientos fundamentales de cualquier área porque son aquellos que se van a poder aplicar siempre, son verdad.
No me gustan las modas, dan lugar a un conocimiento pasajero. ¿Hay conocimiento valioso en saber usar la última librería que está se ha puesto de moda? Para mí ese conocimiento es efímero. Cuándo se pase de moda o aparezca algo mejor, el tiempo y el esfuerzo invertido en eso no vale nada. Sin embargo, si aprendes como funciona internamente, cual es el problema que resuelve y cómo lo resuelve, entonces ese conocimiento lo podrás aplicar a la nueva librería que se ponga de moda, porque conoces los fundamentos.
Desafortunadamente mi experiencia es que incluso entre profesionales y profesores hay demasiado hype. Entusiasmarte demasiado por una herramienta nueva es un poco absurdo siendo ingeniero. O sea, un martillo nuevo puede estar guay, pero sigue siendo un martillo. Igual te permite hacer algo de manera más fácil, pero hará otra más difícil. No he encontrado mucho pensamiento crítico en una disciplina que se hace llamar ingeniería. Funciona por modas, por “me apetece probar X”, “¿usamos X?”, “he leído que nosequien ha usado X”. Rara vez veo que se valoren los pros y los contras de una tecnología antes de usarla, o que se valore el coste de las dependencias de los componentes.
Creo que mi caso es bastante poco frecuente, los temas que me interesan y la profundidad a la que me gusta entender las cosas es muy distinto a la materia que se da en la universidad — tal vez se deba a que el nivel tiene que ser mucho menor para que lo pueda seguir la mayoría de los alumnos — y la que al parecer se exige en las empresas.
Además se intentan abarcar tantas áreas que casi todas las asignaturas se pueden ver como “introducción a X”. Porque no hay tiempo para profundizar.
Por eso, más de una vez me he parado a pensar y he anotado algunas de las cosas que me incomodan o me gustan menos y las cosas que disfruto haciendo.
Para hacer este análisis es fundamental que te conozcas a tí mismo. Hay muchas maneras de conocerse, pero si no quieres pasar muchas horas reflexionando recomiendo que te bases en tus experiencias pasadas.
Durante años de psicoanálisis se han distinguido 5 rasgos de personalidad principales en las personas. Conocer cuales son estos rasgos y en qué rango de cada uno nos situamos nos proporciona algunos indicadores sobre los cuales enfocar el análisis y a comprender a otras personas.
Quiero matizar que estar en un extremo u otro de los rangos no es mejor que estar en el otro, ambos lados tienen sus pros y sus contras, y debemos ser conscientes de esto.
Apertura a las experiencias: Es la disposición natural de las personas hacia las ideas nuevas y la curiosidad, disfrutan del arte, son creativos y enfrentan cuestiones complejas. La gente menos abierta suele demostrar actitudes más tradicionales, prefieren lo conocido, simple y obvio. Internamente se puede dividir en intelecto y apertura o creatividad.
Responsabilidad/Conciencia: Este rasgo mide la capacidad de una persona de organizarse y trabajar. La gente que puntúa muy alto en este rasgo “no pueden estarse quietos” en un sentido literal, sienten que si no están haciendo algo están perdiendo el tiempo y no son capaces de soportarlo. Se puede dividir en la habilidad de ser organizado y ser trabajador.
Extraversión: Como de introvertida/extrovertida es una persona. La forma más sencilla de clasificarte en esta categoría es preguntarte si estar rodeado de gente o de fiesta te da energía o te drena. La gente introvertida tiende a fatigarse con las interacciones sociales y necesita “recargar”. Los extrovertidos sin embargo buscan interacciones y reciben energía de estas. Se puede dividir en entusiasmo o excitación y confianza o asertividad.
Amabilidad (cooperativo/competitivo): Como los paréntesis indican la gente que puntúa alto en este rasgo son gente cooperativa que trabaja bien en equipo y que se preocupa por los demás y que no se suele meter en problemas (También se puede ser demasiado amable y eso acarrea sus propios problemas). En cambio la gente que puntúa al otro lado del espectro tiende a ser más egocéntrica, competitiva, más exigente. Se divide en compasión y en cortesía o cordialidad.
Neuroticismo: O estabilidad emocional según se mire, es el rasgo que define cuanto se ven afectadas las emociones de una persona. La gente que puntúa alto en esto suele tener niveles de ansiedad mayor y más emociones negativas. Por el contrario la gente que puntúa bajo tiende a no tener grandes cambios en sus emociones. Esta se puede dividir en la tendencia evitar la incertidumbre (no existe palabra en castellano para esto) y volatilidad.
En estas dos últimas categorías las mujeres suelen puntuar más alto que los hombres. Se cree que esto se debe a que la psique de las mujeres está adaptada a la mujer con hijos y por esto detecta más peligros y es más amable.
*Todas las parejas de subcategorías están fuertemente correlacionadas entre sí, o sea que es raro puntuar muy alto en una y muy bajo en la otra.
Desafortunadamente este tema como tantos otros tiene vocabulario que es mucho más compresible en inglés que en castellano.
Enthusiasm (spontaneous joy and engagement) and Assertiveness (social dominance, often verbal in nature) for Extraversion.
Withdrawal (the tendency to avoid in the face of uncertainty) and Volatility (the tendency to become irritable and upset when things go wrong) for Neuroticism.
Compassion (the tendency to empathically experience the emotion of others) and Politeness (the proclivity to abide by interpersonal norms) for Agreeableness.
Industriousness (the ability to engage in sustained, goal-directed effort) and Orderliness (the tendency to schedule, organize and systematize) for Conscientiousness.
Openness (creativity and aesthetic sensitivity) and Intellect (interest in abstract concepts and ideas) for Openness to Experience.
Hay que remarcar que no se sabe si estos rasgos se pueden alterar, o sea que intentar ser alguien que no eres es muy complicado. Lo que sí se cree es que se puede estirar el rango o zona en el que nos sentimos a gusto en cada uno de los rasgos. Es decir, que una persona introvertida puede entrenar y mejorar su extraversión de manera que se sienta más a gusto rodeado de gente que al principio.
Conociendo cómo puntuamos en cada una de estas escalas nos puede ayudar a discernir qué trabajo se ajusta más a nuestra personalidad, sin tener que hacer una gran introspección (que es necesaria, pero un test online de estos cinco rasgos nos puede ayudar a enfocarlo de una manera más acertada).
A continuación, una lista de algunas de las cuestiones que he encontrado útil a la hora de decir que tipo de trabajo me gusta hacer.
- ¿Construyes o mantienes?
¿Te gusta crear, hacer cosas nuevas, cambiar las cosas, programar o es algo que no te preocupa y lo que quieres es tener un sistema que funcione y dedicarte a su mantenimiento?
Se traduce en cuanta creatividad quieres en tu trabajo. Si quieres que tu trabajo sea creativo o no lo sea.
- ¿Que uses tus habilidades actuales o tengas que aprender nuevas habilidades?
Casi siempre vas a tener que aprender cosas nuevas cuando empieces a trabajar pero deseas tener que seguir aprendiendo o una vez domines las habilidades seas eficiente y no te requiera el trabajo que aprendas más cosas, que sea decisión tuya.
La distinción radica en si usas mayoritariamente las habilidades que ya posees o si cada proyecto te va a exigir habilidades nuevas y que estés aprendiendo constantemente.
- ¿Cuánta autonomía tienes?
¿Cuántas decisiones tienes la libertad de tomar? ¿Cuántas quieres tomar? Puede darse el caso de que estés realizando un trabajo creativo pero que no puedas tomar todas las decisiones que quisieras. O al contrario, que prefieras tener alguien que te guíe y te dé instrucciones claras.
- Interacciones con otros
- ¿Cuánta interacción?
Este punto trata sobre encontrar la cantidad de interacciones que mejor funcionan para tí. Si prefieres trabajar solo y tener poco contacto con los demás o te gusta trabajar en equipo y hacer muchas tareas juntos. - ¿De qué tipo?
También es importante cómo se da esta interacción, que tipo de relaciones son. Interactúas de cara al público con muchos desconocidos; interactúas con un selecto grupo de personas entusiasmadas con lo que hacen; como es la interacción con tus compañeros, con tus superiores; creas materia para otros o les enseñas directamente.
- ¿Cuánta interacción?
Hay muchísimos aspectos en esta pregunta. Cuánta gente, qué tipo de gente y, de qué manera se da la interacción.
- Nivel de autoridad sobre otras personas
Se explica solo. Hay gente que le gusta tener más autoridad y gente que no se siente cómoda teniendo mucha autoridad en un grupo.
¿Quieres dirigir personas, equipos o proyectos? Igual no es para tí, igual estarías más cómodo trabajando dentro de un equipo que dirigiendolo. Hay gente para todo.
- ¿Te gusta ser el centro de atención?
Cuánta atención quieres y a qué quieres que se deba esa atención. Igual quieres que se te preste mucha atención en aquellos temas en los que eres experto, o igual quieres tener siempre la última palabra. O quizá, cuanto menos atención haya sobre tí significa que has hecho mejor las cosas y no te sientes cómodo con mucha atención puesta en tí o lo que haces.
- Conciliación entre la vida laboral y la personal
¿Cuánto tiempo libre te permite el trabajo? ¿Qué disponibilidad se te exige? Hay gente cuya vida gira entorno a su trabajo y gente que desearía trabajar lo menos posible y tener todo el tiempo libre posible para hacer lo que le gusta — Seguramente porque no les gusta mucho su trabajo, para eso están estos puntos!
¿Qué tipo de persona eres? ¿Qué buscas?
Incluso dentro del mismo trabajo casi siempre hay maneras de tirar más en la dirección en la que más a gusto te sientes. No es cuestión de encontrar lo que te gusta sino de hacer que te guste lo que haces. Además, hablando se entiende la gente. Si demuestras ser responsable y la gente confía en tí, puedes pedir como quieres hacer tu trabajo y rara vez te encontrarás oposición.
Enlaces de interés:
Modelo de los cinco grandes (Wikipedia):
https://es.wikipedia.org/wiki/Modelo_de_los_cinco_grandes
Hierarchical structure of the Big Five (Wikipedia):
https://en.wikipedia.org/wiki/Hierarchical_structure_of_the_Big_Five#Subcomponents_of_the_Big_Five
How to figure out what to do with your life:
https://www.youtube.com/watch?v=jVA-tr_euKU
*He movido esto aquí porque la “rant” se me estaba alargando mucho, creo sinceramente que lo más importante son los links que dejo al final.
Reinventar la rueda. Es un término muy utilizado en el mundo del desarrollo de software que aboga por reutilizar todo lo que se pueda. Entiendo lo que pretenden pero creo que se ha llevado demasiado lejos y además ni siquiera es una buena analogía. ¡Como si solo existiera un tipo de rueda! ¿Son iguales las ruedas de un coche y las de un patinete? ¿y una bici?
El software moderno intenta meter ruedas de camión en coches de Hot Wheels. De esta manera se piensa que se está ahorrando tiempo de desarrollo y que se está mejorando la fiabilidad de los productos que desarrollan. Sin embargo, lo que se consigue es que los desarrolladores no saben lo que está pasando “bajo el capó” de su aplicación. No entienden los fallos, ni el rendimiento, y aunque quizá tengan menos bugs, seguro que les lleva más tiempo arreglarlos que si hubieran hecho ese componente ellos mismos.
Da la impresión de que desarrollar software hoy en día consiste en coger componentes que ya están hechos y en juntarlos para hacer algo nuevo. Y sinceramente, escribir el glue code es de las tareas más aburridas que hay para mí. Porque no estás pensando, lo único que hace el código es copiar datos de un lado a otro.
Otra de las cosas que me incomoda es que los componentes se tratan como cajas opacas y, si el proyecto es majo, tarde o temprano vas a querer saber lo que está pasando. Ya sea por temas de rendimiento o por bugs llegará el momento en el que tengas que mirar dentro de la caja y es algo en lo que no se suele pensar. Las dependencias tienen un coste enorme en los proyectos. Especialmente si se introducen librerías o componentes enormes de los que solamente se necesitan unas pocas funciones, que se podrían haber implementado a mano en un corto periodo de tiempo. Entonces, ¿la mayoría del software que se desarrolla es sencillo? No me veo haciendo software trivial en el que no haya que aprender nada interesante. Y tampoco me veo haciendo software en el que me voy a tener que pegar con las librerías por rendimiento o funcionalidad.
El rendimiento es otra de esas cosas que me flipan. Me cuesta creer que haya páginas web en las que hacer scroll ralentice el ordenador y por otro lado tenga un videojuego que dibuja millones de triángulos por segundo en pantalla. Algo se está haciendo mal. ¿Es que a la mayoría de desarrolladores no les importa el rendimiento de su aplicación? La mayoría de la gente que he conocido no es capaz de razonar sobre el rendimiento de una aplicación, de un algoritmo. No saben, ni quieren saber de las cosas que pasan a bajo nivel.
No entiendo el miedo que veo en muchos desarrolladores cuando se trata de temas de bajo nivel. Los punteros no muerden. A menudo se piensan que no se tienen que preocupar por estas cuestiones que sus lenguajes de alto nivel les abstraen de esos detalles. Sin embargo, esos detalles son igual de prevalentes en todos los niveles. La diferencia está en cuantos detalles están bajo tu control. Y la diferencia en los resultados es abismal.
La falta de preocupación de todos estos aspectos cristaliza en el desarrollo web. Que con lo que me han dado a probar en la carrera y con lo que he trabajado en ello he llegado a aborrecer. Hay una combinación desastrosa entre los tiempos de iteración por las malas herramientas y un afán por usar lo último de lo último que todavía no funciona del todo ni ha sido probado lo suficiente. Además es un área que cuando algo no funciona lo que hace es poner capas y capas encima, parches y parches en vez de corregir los problemas de base. Lo cual, de por sí, ya me parece una actitud fundamentalmente errónea.
Todo es más complejo de lo que debería ser. En el mundo del desarrollo se glorifican las herramientas no la solución; las metodologías y los paradigmas sobre la solución; se cree que añadiendo más se consigue algo mejor; no se entiende lo que está pasando; se valora la complejidad en vez de la simpleza; tiene poco de ingeniería. Y todo esto me frustra, siento que el propio sistema que quiero desarrollar me pone trabas, no me deja expresar lo que quiero, me limita y no me da el control que quiero. No me veo haciendo nada de esto por un periodo largo de tiempo.
Recomiendo mucho estos links. Si tienes tiempo, échales un vistazo:
Thirty Million Line Problem:
https://www.youtube.com/watch?v=kZRE7HIO3vk
When programming became a chore:
https://itnext.io/when-programming-became-a-chore-a0be2b9919c0
NPM & left-pad: Have we forgotten how to program:
https://www.davidhaney.io/npm-left-pad-have-we-forgotten-how-to-program/
The mess that is the web:
http://www.nilunder.com/blog/2013/04/15/the-mess-that-is-the-web/
Package manager mess:
http://www.nilunder.com/blog/2016/03/27/package-manager-mess/
“We don’t really care how long it takes”:
https://www.yosoygames.com.ar/wp/2014/10/we-dont-care-really-how-long-it-takes/
Twitter and Visual Studio Rant:
https://www.youtube.com/watch?v=GC-0tCy4P1U
Why we at $FAMOUS_COMPANY switched to $HYPED_TECHNOLOGY: https://saagarjha.com/blog/2020/05/10/why-we-at-famous-company-switched-to-hyped-technology/
Casey on Software Quality:
https://www.youtube.com/watch?v=6azav9sXK_4
imanolramajo
Latest posts by imanolramajo (see all)
- Sobre la industrialización del código - 5 enero, 2021
- Propiedad intelectual, apuntes y retrospectiva - 24 noviembre, 2020
- Propiedad intelectual, controles y auditoría - 23 noviembre, 2020
Imanol, me ha gustado el post, toca muchos de los temas sobre los que estoy hablando últimamente de cara al año que viene:
– reutilización: creo que la labor como desarrollador ha de cubrir una tarea previa de definir parte de la arquitectura, definir el diseño técnico, ser capaz de dibujar cómo será la solución antes de empezar a programar. Pensar que partes desarrollar en capas para ser reutilizadas.
– rapidez: surge el dilema entre dedicarle tiempo para hacer una buena solución o desarrollar algo que funcione y que dé respuesta lo más rápido posible a las necesidades de negocio. Cada día en las empresas se piden productos y servicios con mayor rapidez puesto que es un punto diferencial en un momento en el que todo es copiable, se suele decir que el que llega primero es que el coge mayor parte del mercado. Pero tampoco vale hacer productos poco fiables porque llegar primero y fallar puede tener consecuencias severas. Hay que buscar el equilibrio y pactar una calidad mínima
– conocimiento exhaustivo: es importante la especialización en temas concretos pero también es importante el tener conocimientos medios de una amplia gama de conceptos ya que te permite tener una visión global muy interesante y te permite tener las bases para especializarte en un futuro en las áreas que te gusten.
Imanol enhorabuena por la cantidad de temas que tratas y por como lo haces.