SCRUM funciona!

En esta oportunidad quiero compartir mi muy agradable experiencia de implementar Scrum como metodología de gestión de proyectos en OLX.

ScrumCycle

Introducción

Empezaré presentando algunas definiciones para ponernos en tema:

  • Scrum es un proceso ágil de desarrollo de software, iterativo e incremental. En cada iteración se hacen variadas actividades de análisis, diseño, desarrollo, testing, implementación.
  • Scrum está enfocado a la gestión de los procesos de desarrollo y puede o no estar implementado en conjunto con otras prácticas ágiles como ser Extreme Programming (XP), Continuous Integration, Test Driven Development, etc.
  • Scrum suele vincularse al desarrollo de software, pero su aplicación es adecuada dentro de las especialidades más variadas que podamos imaginar.
  • Scrum es “liviano”, presenta simplemente un modelo de referencia que describe un conjunto de prácticas y roles que puede tomarse como punto de partida para definir el proceso de desarrollo.

Roles que Scrum propone:

  • El Scrum Master: Se asegura que se sigan los procesos, trabajando de forma similar al director de proyecto.
  • El Product Owner: Representa a los Stakeholders (clientes internos o externos).
  • El Team: Incluye a los desarrolladores, testers, diseñadores, analistas, etc.

Prácticas que Scrum propone:

  • Se realizan ciclos (o iteraciones) de duración fija llamadas Sprints. Se recomienda que la duración de un Sprint sea de 2, 3 o 4 semanas.
  • Durante el Sprint el objetivo del equipo es generar un incremento visible, utilizable, entregable.
  • Al inicio de cada Sprint se realiza una Planning Meeting durante la cual se revisa el Backlog de proyectos (listado de requisitos de alto nivel pendientes, previamente priorizados por el Product Owner). En esta reunión el Product Owner identifica los proyectos que quiere resolver y los describe al equipo. Entonces, el equipo determina cuáles de estos proyectos pueden ser comprometidos para el Sprint.
  • Durante el transcurso del Sprint no se puede modificar el alcance del mismo, es decir, se intentará mantener congelados los requisitos hasta que el mismo finalice. En la práctica, nos hemos reservado parte de nuestro tiempo para lidiar con urgencias que no pueden esperar un ciclo para ser resueltas.
  • Diariamente se realiza una Daily Meeting que no debe durar más de 15 minutos, donde cada persona del equipo comparte las tareas realizadas, lo que piensa hacer hasta la reunión del día siguiente y si se ha topado con algún impedimento que no le permita avanzar de acuerdo a lo comprometido.
  • Al final del Sprint, luego del Deploy / Release / Incremento en el producto, se realiza una Retrospective Meeting durante la cual el equipo comparte libremente opiniones sobre las cosas que salieron bien (y desean repetirse a futuro) y las cosas que salieron mal (y deben evitarse a futuro).

Ahora si, pasemos a mi historia…

Continuar leyendo “SCRUM funciona!”

Ejemplo de evaluación de desempeño a un líder

Cuando me encuentro evaluando el desempeño de un líder de equipo, existen algunas características adicionales que suelo considerar, como ser:

  • Establece acuerdos con otros líderes de la organización o es un jugador solitario?
  • Asume los compromisos o los esquiva?
  • Más allá de asumirlos… logra cumplirlos?
  • Se muestra en sintonía con el Norte de la Compañía o tiene sus intereses particulares que no lo hacen un jugador 100% leal?
  • Cumple con los procedimientos establecidos?
  • Da visibilidad sobre sus acciones y decisiones al resto de la compañía?
  • Es bueno motivando a su equipo?
  • Se comunica adecuadamente con pares, superiores y poderdantes?
  • La relación Productividad-Calidad de su equipo es la esperada?
  • Es realista y pragmático o pierde buenas oportunidades en búsqueda constante de la perfección absoluta?

En este post comparto con ustedes una versión del ejemplo de Evaluación de Desempeño, personalizada para evaluar a un líder de proyecto.

La estructura es bastante simple.

  1. Revisar la Guía de Evaluación donde se enumeran las características a evaluar. Ajustarla, asegurar que los evaluadores entiendan la descripción de cada uno de los aspectos que se consideran.
  2. Completar una planilla de Evaluación de Desempeño por cada persona evaluada.
  3. Completar la planilla de Ponderación de Métricas para reflejar la importancia relativa entre distintos conceptos (esto varía dependiendo de los valores y objetivos de la organización).
Para facilitar el ejemplo, he coloreado de amarillo las celdas que deberían completarse.
Espero que les resulte de utilidad.

Diferencias entre programadores Junior, Semi Senior y Senior

¿Cuáles son las principales diferencias entre un programador junior, un semi senior y un senior?

Durante las últimas semanas recibí algunas consultas sobre este tema, lo que me motivó a escribir este artículo.

No es un tema de simple respuesta. Incluso buscando en Google no se encuentran respuestas maravillosas sobre el asunto.

Lo que sucede en realidad es que las diferencias entre los distintos “niveles” dependen de las necesidades y la cultura de cada organización y de cada equipo. En distintos entornos lo que diferencia a un senior de un junior puede variar.
En algunas organizaciones la diferencia solo está dada por la cantidad de años de experiencia laboral que la persona tenga, en otros casos depende del grado de conocimiento técnico y en otros está asociado a la capacidad de la persona de gestionar proactivamente su trabajo.

Lo que no tiene cuestionamientos es que se trata de una temática sumamente sensible. Habitualmente la remuneración del ingeniero de software se asocia a su nivel de seniority, así que seré lo más cuidadoso posible al presentar el tema.

En este artículo comparto algunos de los criterios que pueden ayudar a definir el nivel de seniority de una persona. Cada uno de los indicadores puede tener más o menos importancia de acuerdo a cada organización (al final del artículo incluiré una encuesta para conocer tu opinión).

Si el lector es el Gerente del equipo, podría asignar una ponderación a cada uno de los indicadores antes de aplicarlos.
Si en cambio es un programador, mi sugerencia es que intente dominar todos los aspectos, aprovechando las oportunidades que se le presenten para su desarrollo.
Si el lector es el Gerente de Recursos Humanos, mi consejo es que ayude a comunicar dentro de la compañía cuáles son los aspectos que más se valoran. Continuar leyendo “Diferencias entre programadores Junior, Semi Senior y Senior”

Ejemplo de Evaluación de Desempeño para Programadores

Ya mencioné en este otro post que al momento de encarar un proceso de evaluación de desempeño hay factores humanos fundamentales que van más allá de los indicadores que se elija evaluar, el formulario que se utilice o el proceso en sí mismo.

Sigo opinando que lo más importante para maximizar el resultado de la experiencia – tanto para el evaluado como para el evaluador – es que la misma esté bien enfocada. El evaluador debe tener en cuenta que el objetivo fundamental de la evaluación es facilitar la comunicación y el entendimiento con su evaluado, generando un espacio formal para conversar sobre expectativas, fortalezas, puntos a mejorar y plan de acción para lograrlo.

En esta oportunidad supondremos que esto sucede y que cada evaluador ha recibido formación básica para poder conducirse durante el proceso.

El ejemplo que presento está orientado a evaluar a 90 grados (de arriba hacia abajo) el desempeño de programadores, analistas, líderes de proyecto… pero bien podría adaptarse para otras especialidades.

Continuar leyendo “Ejemplo de Evaluación de Desempeño para Programadores”

Consejos para entrevistar programadores

Con el correr de los años y trabajando para distintas empresas, he entrevistado a algunos cientos de postulantes para ocupar posiciones de analistas de sistemas, programadores, diseñadores, testers y líderes.

Entrevista Laboral

La práctica, el método y la atención que destino a esta tarea me han ayudado a perfeccionar la efectividad de mis entrevistas laborales, logrando en la actualidad muy buenos resultados en la selección de personal técnico.

Considero que una entrevista laboral, desde el papel de un entrevistador, es similar a una evaluación de desempeño ficticia. En muy poco tiempo, y solo compartiendo unas horas con el entrevistado, se debe resolver si una “asociación” con la persona será beneficiosa para ambas partes.

Intentando reflejar algunos de los criterios que utilizo, es que me vi motivado a escribir este post. Voy a dividir el mismo en tres secciones:

  1. Preparación
  2. Ejecución
  3. Conclusión

Preparación

Antes de entrevistar a un postulante, si cuento con el tiempo necesario me gusta estudiar su CV, realizando anotaciones sobre aspectos que me llaman la atención.

Algunas cosas a las que les presto atención:

  • ¿La persona se postula para un puesto de programador pero está estudiando veterinaria? O lo que es más llamativo aún, ¿Inició la carrera de sistemas para suspenderla al segundo año y dedicarse a la química?
  • ¿El postulante duró menos de 1 año en los últimos 5 trabajos?
  • ¿El CV no es prolijo, tiene faltas de ortografía, no está organizado adecuadamente, no está actualizado?
  • ¿No se incluyen referencias de trabajos anteriores?

Continuar leyendo “Consejos para entrevistar programadores”

12 pasos para programar mejor

Como puede verse en los links de este blog, uno de los sitios que frecuento es el blog de Joel.

Hace varios años escribió un artículo sobre cómo evaluar si se están usando buenas prácticas para desarrollar software. Me pareció tan interesante que en esta oportunidad voy a traducir partes del artículo y modificarlo para reflejar mis opiniones. Más allá de alguna ironía que pueda usar, deben saber que me considero desde siempre un programador (aunque ahora esté algo oxidado), así que cuando hablo de programadores también me refiero a mi persona :-)
12 pasos para programar mejor

¿Alguna vez escucharon hablar de SEMA? Es un sistema bastante esotérico para medir cuan buenas son las prácticas utilizadas por un equipo de desarrollo de software. No, esperen! No sigan ese link! Les tomará cerca de 6 años entenderlo. Por eso Joel ha desarrollado su propio – y simplificado – test para evaluar la calidad de un equipo de desarrollo. La parte buena de esto es que lleva solo unos minutos entenderlo. Me tomaré el atrevimiento de modificarlo para reflejar también mis puntos de vista.

El Test de Joel (levemente modificado):

  1. Estás usando adecuadamente una herramienta de control de versiones?
  2. Podés realizar una implementación en un solo paso?
  3. Cada programador actualiza diariamente su versión local de desarrollo?
  4. Tenés una herramienta para registrar y administrar los bugs?
  5. Aprovechás todas sus oportunidades para arreglar los bugs existentes al escribir código nuevo?
  6. Contás con un cronograma de trabajo actualizado?
  7. Escribís especificaciones antes de desarrollar cualquier funcionalidad?
  8. Los programadores tienen un ambiente de trabajo adecuado?
  9. Usás las mejores herramientas de desarrollo que el dinero puede comprar?
  10. Tenés un equipo de testers independiente del equipo de desarrollo?
  11. Cuando se evalúan nuevos postulantes, les pedís que escriban código durante la entrevista?
  12. Realizás tests de usabilidad?

Continuar leyendo “12 pasos para programar mejor”

Evaluación de Desempeño

En dos de las empresas para las cuales trabajé, los momentos más estresantes del año sucedían durante las evaluaciones de desempeño semestrales.

Performance Review 1

Por alguna razón estas empresas deben haber copiado su sistema de evaluación de performance de algún libro de management en oferta, porque ambos funcionaban de una forma muy similar… y me siento un poco responsable por no haber podido sugerir algo un poco mejor en ese momento.

El tema funcionaba de la siguiente forma: Continuar leyendo “Evaluación de Desempeño”

Checklist de Proyectos

Hace aproximadamente 8 años, mi profesión me llevó a liderar un equipo de desarrollo de 40 personas en el Banco Hipotecario, que atendía los requerimientos de todas las gerencias y tenía como responsabilidad el mantenimiento correctivo y evolutivo del sistema principal del banco.

BH

Tengo recuerdos muy intensos de esa época, pero lo que más destaco es que la responsabilidad que asumí entonces y los obstáculos que superamos con mi equipo, fueron los disparadores concluyentes en mi carrera laboral.

A partir de ese momento, en todas las compañías y cargos que he ocupado, una gran parte de mi atención es dedicada a los procesos que se ejecutan para asegurar el éxito de los proyectos. Le he dedicado algo de atención al tema, he leído diversas publicaciones y asistido a varios eventos, aprendiendo sobre las recomendaciones del PMI (Project Management Institute), las certificaciones CMMI, los procesos y herramientas sugeridas por Rational – UML -, metodologías ágiles, XP, Scrum, etc.

Probablemente más adelante dedique un artículo a mi comparación entre las distintas propuestas y las ideas que se pueden aplicar para combinar las ventajas de cada postulado, pero en esta oportunidad quiero abordar el tema desde un punto de vista 100% práctico. Continuar leyendo “Checklist de Proyectos”

Debate sobre outsourcing de desarrollo

Hace un par de días hice un post en el blog de Jordi.

Jordi Castelló es un exitoso emprendedor español experto en Web 2.0 con el cual tengo el placer de trabajar en OLX. La energía que contagia puede apreciarse rápidamente al navegar su blog, pero esto es solo una porción del efecto que logra cuando se lo conoce personalmente.

En el artículo en cuestión, se abre el debate sobre algunas diferencias que he podido apreciar entre compañías de India y de Argentina respecto al outsourcing de servicios de desarrollo hacia empresas de estados unidos.

El mejor lugar para participar en este intercambio de opiniones es en el sitio de Jordi. Se puede acceder al artículo mediante este link.