martes, abril 27, 2010

Curso de Arquitecturas de Software

Hace unos meses, junto con dos grandes profesionales (Ing. Gastón Escobar y Ing. Ulises Martins), con los que curse gran parte de mi carrera, nos pusimos de acuerdo para lanzar un curso eLearning sobre Arquitectura de Software, venimos trabajando muy duro y ya estamos a punto de comenzar, los invito a mirar los contenidos y quien quiera anotarse, es muy bienvenido :)

Creo que luego de dar 5 años APIT y trabajar como arquitecto (cada uno de nosotros) en grandes empresas como IBM, Oracle, Accenture e interactuar día a día con otros profesionales en el ambiente académico y web, contamos con una madurez que nos permite abordar un tema tan crítico con propiedad.

Este curso es dictado a través de la Secretaria de Cultura y Extensión Universitaria de la UTN, y tiene un costo. Aca les dejo el link para más información:

Curso de Arquitecturas de Software

viernes, abril 02, 2010

Y que hace un líder técnico?

A los largo de mis casi 11 años trabajando en IT, los roles que forman mayor parte de mi CV y que realmente tengo formación, están relacionados como Líder Técnico y Arquitecto. Por un tiempo los hice al mismo tiempo pero finalmente me terminé quedando con el de Arquitecto, que realmente es muy diferentes al de liderazgo, y aunque creo que ambos necesitan skills duros que se pueden formar, creo que los factores fundamental para tener el rol es el sentido común y la pasión por lo que haces, de nada sirve ser un referente sin poder transmitirlo en los aspectos y decisiones del día a día, es algo que no puede ser forzado.
Por otro lado, hay algo que podes hacer como líder que no podes hacer como arquitecto. Para ser arquitecto necesitás calle, experiencia, años de vuelo trabajando en diferentes momentos (en la industria), diferentes metodologías, tecnologías... aunque como líder, para hacerlo bien, tenes que tener la vocación y el don para hacerlo. Cuando uno es un líder natural todo es más simple y no fuerza sus decisiones diarias, le salen naturalmente y busca el bien común, no el propio.
En mi caso particular me costó/cuesta mucho más ser Arquitecto que lo que me costó ser líder técnico, quizá por mi inclinación democrática socialista que me hacer ser transparente y realmente creer en lo importante del equipo y no de las individualidades. Día a día yo me esfuerzo para ser arquitecto, pensando mis decisiones en todo momento del día, capacitándose, dando clases, etc. Pero cuando era líder todo me iba más natural.
Ahora bien, hace unos años debí tomar una decisión en la cual tuve que tomar un camino, si el del liderazgo puro/management o arquitecto (técnico), me costó, pero me fui por el del Arquitecto, ya que siendo líder el techo del crecimiento en lo técnico (por algo soy ingeniero) es muy bajo, rápidamente se convertís en un burócrata siguiendo procesos y donde la creatividad se deja de una lado, cosa que no pasa con el arquitecto, o lo que quiero ser en un futuro (ya voy a hablar en otro post).
En fin, hasta acá vengo aburrido con mi vida que no es ejemplo para nadie, pero más de una vez he recibido la pregunta, y que hace un líder técnico? bueno, aca traté de recopilar las actividades y responsabilidades que yo considero importante para este rol. Con respecto a las responsabilidades:
  1. Formar el equipo. Creo que es actividad más importante de un líder es contar con personas capaces de hacer su trabajo y buscar complemente entre las fortalezas y debilidades de cada integrante.
  2. Proveer guía y soporte técnica al equipo. No concibo tener un líder que no sepan lo que hacen los integrantes, tampoco creo que el líder debe ser el mejor técnico, pero si debe tener el conocimiento para destrabar y resolver problemas impartiendo prácticas que mejoren la calidad del trabajo. Repito, no debe ser el mejor técnico, pero si de la media para arriba.
  3. Estimar, Asignar y planificar tareas. Muchos líderes creen que esto es lo único que tienen que hacer, aparte de controlar que se hagan. Definitivamente creo que esta es una de las tareas menos importantes del líder. Un equipo bien configurado no necesita a un pelmazo que lo único que haga es asignar y controlar. Acá es importante emplear sus conocimientos para poder estimar y tener la grandeza para consultar a sus integrantes y generar comprometimiento de grupo.
  4. Coordinar (no controlar) las tareas. Aca hay otro punto escabroso, y es una de las cosas que más odio del liderazgo, el control. Se supone que en software la gente que trabaja es profesional y responsable de su tarea y no debería ser controlada y ser preguntada por el progreso, cualquier desvío que ocurra debería ser notificado en el momento justo para tomar acción. Obviamente no siempre es así, la gente es jodida y no siempre tira a un mismo lado, con lo cual creo hay que ser muy cuidadoso con el punto 1. Acá puedo escribir mucho más, pero no tengo ganas... quizá en otro post :)
  5. Peer Review. Si bien esto es un tema delicado para los agilistas, yo considero que los peer reviews son necesarios y la frecuencia debería varias de acuerdo al nivel del proyecto con el uso de herramientas de análisis de código. Los beneficios de las revisiones de código o trabajo, son buenas desde muchos puntos de vista, no solo mejorar el deliverable sino transferir conocimiento y buscar consistencia, como arquitecto participo y me gusta mucho.
  6. Definición de las normas de convivencia. Cada equipo tiene sus normas, reglas y procesos a seguir, el líder debe coordinar las tareas necesarias para generarlo y asegurarse que sea beneficioso para el equipo. Acá entran temas de la organización, y el ecosistema en el que está inmerso el equipo. Un equipo en donde se pueda generar un ambiente sano de aprendizaje constante donde nadie es penado por equivocarse es difícil de lograr, esa armonía es muy importante y no se puede escribir en un wiki con el resto de las reglas. Pero va a depender mucho del líder y los detalles propios del equipo.
  7. Preocuparse por el crecimiento profesional de los miembros del equipo. Esta es una de las responsabilidades que más me gustaba como líder y donde estoy seguro que di lo mejor de mi por muchos años. Es muy importante como líder saber las aspiraciones de los integrantes del equipo y tratar de unir las actividades diarias con dichas aspiraciones. Obviamente no siempre los integrantes saben sus aspiraciones, con lo cual es importante ayudar a definirla, hablar de visión acá es un poco apresurado, pero importante. Aca también entras técnicas como el coaching, de acuerdo a la urgencia muchas veces es mejor dar la caña de pescar y no el pescado .

En fin, estas son las actividades que todo líder técnico tiene que hacer y precuparse por mejorar, los que estén trabajando con dicho rol, los invito a realizar una auto-evaluación y ver que tan bien están en cada uno de los aspectos listados. Por supuesto si tienen otras responsabilidades para agregar, no duden en comentar.