Mis notas - Matias Hernández

Post: Que es un Senior Developer

  • tags:: Senior Engineer

    Personalmente no estoy de acuerdo con etiquetar a las personas, no es posible categorizar todos los conocimientos y habilidades de alguien y ponerlos bajo una etiqueta o calificación. Sin embargo, en algo debe decir en tu contrato, de alguna forma deben ubicarte dentro de la organización ya sea para definir tus responsabilidades o tu paga.

    Definir roles es difícil, y esta es, en general, mi visión de lo que es y no es un Ingeniero o Desarrollador Senior.

Comencemos por primero definir lo que no es

Lo que no es un Senior

Muchos creemos en algún punto de nuestra carrera que para ser llamados Senior Engineer debíamos acumular un cierto número de años de experiencia, algo así como una barrera temporal que al día siguiente de cumplirse, tu metamorfósis estaba terminada y saldrías de la pupa ocmo un Ingeniero Senior, pero no, no está relacionado con los años que puedas poner en LinkedIn. Es verdad que podemos de manera sencilla relacionar el número de años con experiencia y quizá con conocimientos, pero no es más que un indicadtivo, una mera correlación.

Un Ingeniero Senior, tampoco es alguien que sabe todo sobre cierto lenguaje de programación o tecnología, esto es altamente improbabla ya que todos los lenguajes estan en constante evolución y el sólo hecho de creer que ya lo sabes todo sobre ese lenguaje te deja inmediatamente obsoleto ya que dejarás de aprender.

Tampoco, es alguien que tiene todas las respuestas, como suele verse desde el punto de vista de un nuevo desarrollador. Y menos aún es alguién que tiene la verdad absoluta sobre como resolver un problema.

Entonces, ¿Qué es un desarrollador Senior?

Para esto no hay una respuesta clara ni directa, incluso las diferentes compañías no tienen una definición clara entre si, pero podemos encontrar ciertos patrones y descripciones que nos ayudaran a definir un concepto estándar.

Primero. ¿Cuál es nuestro trabajo?. ¿ A qué se decida un Desarrollador o Ingeniero?

  • A construir aplicaciones
  • Desarrollador código
  • Convertir JIRA en una aplicación
  • A resolver problemas

Nuestro trabajo es el de resolver problemas mediante el uso de tecnología, esencialmente código. Pero estos problemas que resolvemos son con un objetivo, por ejemplo, un producto.

y este proceso de resolución de problemas, no se trata sólo sobre el código que escribes, la velocidad o calidad de este - calidad que por cierto dada la experiencia, se espera sea considerable - si no, también sobre el código que no se escribe, que muchas veces puede ser aún más importante. Como Senior se espera que puedas pensar en una solución que provea los mejores resultados posibles, y muchas veces eso implica cosas como:

  • No escrbir código y buscar una alternativa

  • Definir una deuda ténica aceptable

  • No usar lo “trendy” y seguir con lo legacy

  • Involucrar a más personas, incluso, fuera del área téncnica.

  • Escuchar a otros. Usuarios, diseñadores, marketing, etc.

  • Decir NO. Y en particular esta es muy importante. Saber decir NO puede permitir al aquipo avanzar más rápido hacia el objetivo.

    Muchas veces durante el proceso de desarrollo de un producto, se nos pide agregar A o B característica, que probablemente sean necesarias para el éxito del proyecto, y es en ese momento donde el desarrollador Senior debe brillar. Brillar siendo capaz de levantarse y dar a conocer y explicar su opinión del por que lo comentado se debe o sobre todo no se debe hacer. Muchas veces decir que NO es complejo, pero saber hacerlo es una habilidad que habla de la experiencia.

    Como Desarrollador Senior debes ser capaz de mirar más allá del ticket, más allá de la tarea y pensar en “the big picture”, pensar en el producto y en sus usuarios. Nuestro trabajo no es con el computador, es con personas, y entenderlo y hacerlo parte de tu trabajo diario es una habilidad esperada de un Senior.

    Algunas de las habilidades no medibles que un Senior debiese poseer son:

Experiencia

Experiencia que, como comenté en un principio, no está dada exclusivamente por los años de trabajo, pero si con la exposición a diferentes problemas y ambientes, esta exposición te otorga la habilidad de reconor patrones en tu trabajo, esos Deja Vu, que te ayudarán a tomar decisiones sobre la marcha. Esta experiencia también se demuestra en ser humilde y reconocer lo que no se sabe y al mismo tiempo saber encontrar eso que no se sabe. Saber investigar sobre un tema que desconoces en particular pero que sabes ayudará a resolver tu problema es una habilidad importantísma. No es sólo copiar y pegar de Stackoverflow, si no más bien, saber que buscar y cómo usarlo.

https://twitter.com/DavidKPiano/status/1255495988661420034?s=20

Liderazgo

Esta es otra característica identificable en un desarrollador Senior, incluso aunque no tenga el cargo explicito de tech Lead, si hay una cierta tendencia natural a liderar, y esta se puede mostrar por medio de la comunicación y de como ayuda al equipo a seguir adelante, de como empodera a otros por medio de decisiones técnicas, code reviews, etc.

Mentoría

Ayudar al equipo a aprender es una habilidad importante, relacionada con el liderazgo y la comunicación. De nada sirve tener al desarrollador con más experiencia del mundo si este es incapaz de traspasar ese conocimiento a otros. Hay distintas y diversas formas en que puedes ayudar a otros:

  • Mentorías directas
  • Charlas
  • Documentación
  • Code Reviews
  • Pair Programming
  • Compartiendo información relavante
  • Participando del Onboarding, etc

Habilidades técnicas

Por cierto que como Senior debes tener habilidades técnicas, pero eso no significa que sea un “Heroe” del desarrollo o que puedas crear todo el producto por ti sólo en tiempo record. Si no, significa que, claramente debes ser bueno haciendo código, pero sobre todo ser capaz de “ponerte al día” con lo que se está haciendo de forma rápida, que eres capaz de aprender el nuevo lenguaje o técnica sin mayores complicaciones.

Conclusión

Finalmente un ingeniero senior es aquel que nó sólo pica código si no quien se convierte naturalmente en piedra angular del equipo, que es empático, que comparte lo que sabe, que ayuda a otros, un desarrollador que hace que el equipo sea mejor. Y todas estas son habilidades difíciles de medir o de descubrir en una entrevista exclusivamente técnica, son habilidades blandas que deben ser demostradas y experimentadas.

Links to this note