sábado, septiembre 22, 2007

El arte de programar

Estos dias me estoy dedicando sobre todo a programar la nueva version de hipoqih. Programar es un trabajo (o una artesania) que me encanta, llevo haciendolo desde hace 25 años y me gustaria compartir algunas reflexiones sobre el tema:
  • Es un hecho de sobras conocido y estudiado que en los proyectos de programacion no se pueden acumular "personas", si un proyecto de desarrollo con un equipo de seis personas lleva retraso (algo habitual, claro) cuantas mas personas incorpores al equipo mas retraso acumulara. A pesar de esto todos los gerentes de empresas de TI se empeñan en acumular gente en los proyecto en vez de estudiar el problema.
  • La productividad de un programador es un misterio casi indescifrable. Segun algunos estudios en una misma plantilla, con mismos sueldos y mismas capacidades hay diferencias de mas de 20 a 1 entre distintos programadores. Y estoy seguro que si se incluyesen todos los "costes ocultos" (llamadas de soporte, bugs, problemas en el futuro, etc..) que tiene una mala programacion todavia habria mayores diferencias de productividad entre un "buen" y un "mal" programador. Sin embargo las empresas no son capaces de detectar a los buenos programadores ni de pagarles en funcion de su productividad. Es mas, a veces la productividad de un programador varia mucho en funcion del proyecto, lo cual complica todavia mas las cosas.
  • Muchas veces es mejor esperar antes de empezar a programar para resolver un problema complicado. Siempre he pensado (y he recomendado) que el lapiz y el papel son herramientas imprescindibles, si te sientas a teclear empiezas a programar, y tu atencion se centra en resolver los problemillas y bugs que te encuentres codificando, no en el "concepto" global del problema. Si antes de teclear, te sienta a pensar en el problema, lo pintas y lo repintas, vas afinando una solucion en tu mente. E incluso, si esperas un par de dias antes de empezar a programar, en tu cabeza vas a ir depurando la solucion, descartando alternativas y buscando nuevos metodos para atacar el problema. Y despues, cuando te sientes a programar, vas a ser mucho mas productivo. A veces, programar es una actividad que necesita una reflexion previa. Eso si, si le cuentas a tu jefe de proyecto o a tu gerente que estas reflexionando ya veras la cara que ponen ;-)
¿Cual es la conclusion de todo esto? Pues que por ahora, la actividad de programar es una especie de arte menor que se escapa a toda posible industrializacion. Podemos usar metodologias, metricas y metodos distintos, pero al final lo que hay es una mente frente a una maquina, y lo que mas vale y mas util es se llama creatividad.

No hay comentarios: