Hace algunos días ya que estoy muy ocupado con temas que nada tienen que ver con el software,  o esperen, sí tienen que ver, y creo que son los mas importantes en lo que al desarrollo de software se refiere, y son las personas. A muchos que les haya tocado, sabrán el tiempo que uno tiene que invertir en las personas es directamente proporcional al ambiente de trabajo que un líder genera, y también directamente proporcional a la calidad del código generada por el equipo.

Comencemos entonces preguntandonos ¿hacemos software profesional? ¿software de calidad? ¿software artesanal? ¿Queremos hacerlo? ¿Nos interesa? ¿Amamos lo que hacemos?

Lo primero que tendríamos que hacer es mirar para dentro de cada uno de nosotros mismos y pensar si verdaderamente creemos y queremos que el software que generamos sea apreciado y respetado. Pensemos si nosotros mismos creemos y queremos jerarquizar la profesión que elegimos, y que muchos amamos.

Y allí es donde uno le da vueltas y habla con gente y pasa el tiempo y piensa como generar un entorno donde la creación del software sea apreciada y respetada y además algo muy importante, que sus creadores también lo sean.

Sabemos que en el siglo en que vivimos la creación del software es una artesanía y no es como muchos piensan una creación industrial. Por ellos podemos decir que la artesanía consiste en:

  • Tomar responsabilidades
  • Aprender en forma continua
  • No a la especialización
  • Orgullo por el trabajo bien realizado
  • Transmitir el conocimiento
  • Cumplir con los estandares de la profesión

Veamos los que me parecen mas importantes en mayor detalle.

En el caso de los estándares nos referimos a las técnicas y buenas prácticas que todos a esta altura deberíamos conocer (patrones de diseño, estilos de código, TDD, integración contínua, etc)

Podríamos comenzar a recorrer este camino por los siguientes 3 pasos:

  • Evaluar
  • Educar
  • Medir

Quizás es algo que todos hacemos inconcientemente, sería bueno igualmente repasar que en el primer caso hablamos de la "materia prima" con la que contamos. Antes de proponer cambios, es necesario conocer con que se cuenta, y para ello nos podemos ayudar de entrevistas, cuestionarios (para conocer las prácticas -ya sean buenas o malas). Luego de ello, nos podemos enfocar en establecer métricas que las podemos obtener a través del proceso de integración continua. Acá también vale aclarar, que alguna de estas métricas que resulte interesante, podemos guardarlas en base de datos, y así luego poder obtener otro tipo de información con ellas.

Una parte muy interesante y que hace un año nos da vuelta por la cabeza en el lugar donde trabajo es la cara Educativa. Algunas iniciativas que hemos tomado son estas:

  • Programación en pareja
  • Recursos centralizados (como wiki, foros, bibliotecas, etc.)
  • Sesiones educativas
  • Mentor del equipo
  • Proyectos internos con nueva tecnología

Luego Dillman propone algunas muy interesantes alternativas para las sesiones educativas (algunas hacemos o hicimos).

  • Teasers (que se traduce por bromas o rompecabezas), son breves consejos (más o menos prácticos) que idealmente caben en una página.
  • Lightning talks (o "charlas relámpago") que, en apenas media hora, deben introducir un tema muy por encima. (a algunos les sonará a la charla de los lunes no?)
  • Tech talks (o "charlas técnicas") son presentaciones de una hora en las que se explica con algo más de detalle un tema, pero sin llegar a profundizar "hasta el fondo". (a algunos les sonara las charlas que hicimos con Leo no?)
  • En los Workshops (o talleres) se trabajan los conceptos en la práctica.
  • Un Coder's Dojo (es como un gimnasio de programación) donde se aplica el lema "Para mejorar debes practicar". Consisite en poner a prueba nuestras habilidades como desarrolladores (desde el análisis y el diseño hasta la programación) mediante sesiones cortas en las que se trata de resolver un problema concreto y acotado.

Bueno, como conclusión.

Desde el liderazgo de equipos tenemos que hacer mucho por que crezcan las personas que trabajan con nosotros, y en cada uno de nosotros tiene que nacer esa necesidad de profesionalizar lo que hacemos, lo que amamos, y no dejar que las 'picadoras de carne' nos ganen en esto de hacer lo que nos gusta de la mejor manera que se pueda hacer, y siempre seguir aprendiendo y mejorando.

De la idea de la presentación en InfoQ "Fostering Software Craftsmanship in a Corporate Setting"

 

Inspiración.

"Si tú tienes una manzana y yo tengo una manzana e intercambiamos las manzanas, entonces tanto tú como yo seguiremos teniendo una manzana cada uno. Pero si tú tienes una idea y yo tengo una idea, e intercambiamos las ideas, entonces ambos tendremos dos ideas"

Bernard Shaw