Carrera como dev
Unagi nació con el objetivo de que todos encontremos el mejor ambiente (humano y de trabajo) para sacar lo mejor de cada uno. En este sentido, es fundamental que las personas encuentren un lugar de desarrollo personal, que termine apalancando a la empresa y donde todos estemos cada día mejor.
Por esto, hemos creado un programa de carrera dentro de la empresa.
En este programa, detallamos los perfiles a los que puede aspirar una persona que esté interesada en el desarrollo de software dentro de Unagi. Es importante entender que estas categorizaciones no son determinantes ni tampoco funcionan como checklists. Por el contrario, son una guía para poder evaluar y discutir individualmente con cada uno de los que trabajan en la empresa. Todos debemos utilizarlas como guías de referencia para identificar aquellas áreas sobre las que debemos trabajar (y/o mantener) para poder ir desarrollándonos profesionalmente y creciendo.
Además, debe tenerse en cuenta que estas categorizaciones se enfocan en lo que cada persona puede realizar en forma independiente, pero deben verse combinadas con el trabajo en equipo que promovemos dentro de Unagi. En consonancia con la filosofía de la empresa, todos deberíamos intentar sacar lo mejor del otro para lograr ser mejores nosotros mismos.
Asimismo, las cantidades de años mencionadas para cada perfil son a modo de referencia, pero no son requerimientos estrictos. Cada persona tiene sus tiempos y a algunos nos cuesta más o menos adquirir nuevas capacidades.
Por último, en homenaje a uno de nuestros máximos referentes de carrera en la empresa, los perfiles tienen nombres de Star Wars 🌌
Nota: este plan no es estático, sino que puede ir variando a lo largo del tiempo. Como todo lo que hacemos, siempre hay posibilidad de mejoras, así que cada vez que vayamos incorporando cambios iremos avisando a todos.
¿En qué consiste el plan de carrera en Unagi?
Trabajar en Unagi (y desarrollarse profesionalmente) involucra ir adquiriendo aptitudes en forma constante. No nos interesa conformarnos con lo que sabemos, sino que siempre queremos seguir aprendiendo y esperamos que todos compartan esta filosofía.
Por esto, nuestro plan de carrera tiene forma de escalera. La particularidad es que, a medida que vamos subiendo, los peldaños se hacen cada vez más estrechos y altos, por ende, es más difícil subir. Esto es similar a cualquier ámbito de la vida donde, cuando no sabés nada de algo, cualquier conocimiento que sumes al respecto implica un progreso enorme. Sin embargo, cuando ya dominás un tema y/o sos experto, seguir aprendiendo requiere especializarse y profundizar mucho, por lo que el progreso es más lento.
La particularidad del plan de carrera es que contempla dos tipos de aptitudes/competencias que se esperan de una persona: duras y blandas.
Las competencias duras se relacionan con aspectos técnicos que se aprenden con la práctica y son los más fáciles de adquirir. Por ejemplo, programar con buenas prácticas, usar patrones, contemplar aspectos básicos de navegación en una pantalla para ofrecer una experiencia de usuario aceptable, autonomía para realizar tareas, etc.
Las competencias blandas se refieren a aspectos NO técnicos, que también se adquieren con la práctica, pero que son mucho más difíciles de adquirir y dominar. Por ejemplo, se espera que todas las personas que trabajan en Unagi propongan cosas y no esperen órdenes, lograr escribir y hablar con claridad, comunicarse en inglés, gestión de equipos y proyectos, etc.
Acá damos libertad de elegir en qué puntos quiera desarrollarse cada uno, con sus ventajas y desventajas. Las competencias duras son obligatorias para ir subiendo peldaños, en tanto que las competencias blandas son determinantes para acceder a mejores sueldos dentro la escala que tiene ese perfil.
Además, en los escalones de más arriba, las competencias blandas se vuelven mucho más importantes.
En este sentido, hemos agrupado dos tipos de aptitudes que esperamos que todos los miembros de Unagi adquieran a lo largo de su carrera en la empresa:
Duros
- Competencias programando: convenciones del lenguaje, uso de patrones, buenas prácticas, consultas a db, etc.
- Competencias en diseño de experiencia de usuario: no esperamos que todos sean expertos en UX, pero sí que apliquemos el sentido común y nos valgamos de las técnicas que se proponen desde la empresa antes de saltar a programar.
- Años de experiencia frente a un dominio: no es un indicador estricto, puesto que mucha gente está años haciendo algo y no aprende nada, pero generalmente suele haber correlación entre años trabajados y experiencia adquirida.
- Autonomía para realizar sus tareas: grado de dependencia de otro para poder afrontar sus tareas y responsabilidades.
- Alcance de tareas que puede cubrir: ¿puede trabajar en tareas de alcance limitado o puede hacerse cargo de un proyecto completo?
- Responsabilidades que puede absorber
- Estimación de tiempos: ¿puede estimar cuánto llevará realizar una tarea con precisión?
Blandos
- Enfrentar problemas
- Trabajar en equipo
- Idioma
- Gestión de proyecto
- Gestión de equipo
- Priorización de tareas
- Comunicación (escrita y hablada), tanto interna como externa
- Elaborar un criterio para saber cuál es la mejor solución a un problema
- Posición frente a la crítica
- Versatilidad y capacidad de adaptación
- Capacidad de embarrarse para encontrar una solución si es necesario
- Proactividad
- Entiende las necesidades del proyecto y adecúa sus propuestas y decisiones en base a eso
- Generoso con los compañeros y da el ejemplo
- Puede supervisar a otros
- Buen criterio al tomar decisiones balanceando con interés de los stakeholders
- Promueve la crítica constructiva, tanto propia como para otros
- Respeta las metodologías y las promueve desde el ejemplo
- No piensa sólo en el resultado
- Toma iniciativa
- Contempla aspectos no técnicos de una solución (humanos, costos, tiempos)
- Sabe cuándo pedir ayuda
Es importante notar que las aptitudes blandas no son fácilmente medibles, por lo que siempre habrá un factor subjetivo al momento de evaluarlas. Para ello, hablaremos con cada uno individualmente y estableceremos los puntos que consideramos necesarios trabajar para mejorar. No hace falta volverse un experto en un tema, pero sí demostrar compromiso e interés para esforzarse en mejorar en ese aspecto. Por ejemplo, sabemos que todos tenemos diferentes niveles de inglés y no esperamos que todos hablen como nativos. Pero sí esperamos un compromiso y esfuerzo de su parte por mejorarlo, por lo que vamos a beneficiar a aquellos que así lo demuestren.
Perfiles
Trainee
- Sin experiencia laboral en la industria.
Youngling - Junior Programmer
- Poca experiencia desarrollando. No domina patrones, buenas prácticas, convenciones, etc.
- Poco dominio de consultas a la base de datos.
- Su código necesita ser revisado, con muchas idas y vueltas antes de hacer el merge.
- Debe ser guiado para seguir procesos y buenas prácticas.
- Le resulta difícil estimar tiempos.
- Trabaja sobre tareas con alcance limitado o en entornos controlados. Busca solucionar lo inmediato, pero todavía no está listo para mirar a largo plazo.
- Se enfoca más en solucionar el problema técnicamente sin considerar la experiencia del usuario.
- Necesita ayuda para las microdecisiones (de implementación, sobre a quién consultar, dónde buscar).
- Le resulta difícil diferenciar lo urgente de lo no urgente.
- Usualmente tiene menos de 2 años de experiencia.
Padawan - Programmer
- Domina un lenguaje, aunque sin llegar a ser experto.
- Se da maña para hacer consultas complejas a la base de datos pero sin prestar atención a la performance.
- Las revisiones de su código no necesitan ser exhaustivas, aunque ocasionalmente hay comentarios sobre cambios de lógica o implementación.
- Puede revisar código de otros, agregando sugerencias básicas.
- Puede implementar tareas de mediana complejidad, sin la necesidad de que alguien lo dirija permanentemente.
- Tiene una opinión madura en al menos un área del código: arquitectura, estilos, patrones, etc.
- Puede estimar tiempos pero con poca precisión.
- Contempla la experiencia de uso de sus desarrollos, aunque no dedica mucho tiempo a analizar en detalle.
- Identifica mejoras a realizar pero necesita discutirlas con alguien antes de animarse a ejecutarlas.
- Sabe priorizar aunque aún no se siente seguro y necesita una segunda opinión.
- Puede enseñar temas puntuales a devs con menos experiencia.
- Usualmente de 2-4 años de experiencia
Jedi - Senior Programmer
- Domina al menos un lenguaje en profundidad.
- Su código no necesita ser revisado, aunque puede recibir comentarios sobre el enfoque general de la solución.
- Realiza consultas complejas a la base de datos, sin perder de vista cuestiones de performance.
- Puede revisar código de otros, sugiriendo mejoras, el uso de patrones y/o soluciones alternativas.
- Puede llevar adelante funcionalidades completas, desde el análisis hasta la implementación en forma autónoma (o liderando un equipo).
- Tiene conocimiento básico de al menos otra tecnología.
- Puede levantar y configurar un ambiente de desarrollo.
- Sabe estimar tiempos con poco margen de error.
- Presta atención a la experiencia del usuario, apoyándose en convenciones o estándares. Ocasionalmente, incorpora criterio propio.
- Identifica mejoras del proyecto y se encarga de llevarlas adelante o proponer mejoras.
- Es el principal referente a seguir en un equipo. No sólo por cualidades técnicas, sino por cómo lleva adelante responsabilidades y procesos.
- Lidera y promueve buenas prácticas y procesos dentro de sus proyecto.
- Sabe priorizar.
- Puede capacitar a devs con menos experiencia en conceptos generales más allá de una tecnología determinada.
- Usualmente entre 4 y 6 años de experiencia.
Jedi Knight - Lead Programmer
- Domina varios lenguajes y su trabajo ocurre casi en forma autónoma, sin necesidad de revisión o supervisión.
- Domina completamente las consultas a la base de datos y se enfoca en mejoras de performance y escalabilidad.
- Puede liderar un proyecto entero, incluso con tecnologías cruzadas, y dirigir varios equipos.
- Ayuda a definir y mantener estándares dentro de la organización.
- Es capaz de entender información y procesos de distintos dominios (diseño, ux, negocios, marketing), y logra traducirlos a su dominio específico para entender cómo impacta en el desarrollo de software.
- Puede liderar proyectos que requieran tecnologías cruzadas.
- Puede levantar y configurar diferentes ambientes, y tiene conocimientos básicos de servidores.
- Puede estimar en forma precisa.
- Está capacitado para comparar y elegir entre diferentes stacks para resolver un problema. Está capacitado para proponer nuevas tecnologías.
- Entiende la motivación y deseos de su equipo y se esfuerza por mantener un buen ambiente.
- Lidera y mantiene los estándares de buenas prácticas y procesos en la organización.
- Identifica mejoras de proyectos y las extrapola a la organización.
- Es un referente a nivel empresa.
- Usualmente 6-9 años de experiencia.
Jedi Master - Master Programmer
- Es un colaborador directo de la cultura de la empresa y principal motivador de los procesos de ingeniería y desarrollo.
- Tiene una visión macro, más allá de los proyectos puntuales en los que pueda involucrarse.
- Participa en la toma de decisiones estratégicas con criterio y visión de negocio.
- Es líder desde el ejemplo, no por imposición.
- Tiene la capacidad de hacer simple lo complejo.
- Sólido conocimiento de las necesidades del negocio, tanto internas como de clientes.
- Está capacitado para presupuestar soluciones integrales, contemplando todos los aspectos de una proyecto: stack, costos, capital humano, marketing, etc.
- Es capaz de llevar adelante unidades de negocio nuevas, así como incorporar nuevas tecnologías a la empresa.