Productividad de los desarrolladores de software

Hola de nuevo.
Llevo tres posts en pocos dias. Estoy consiguiendo todo un record personal. 🙂

Hace un par de dias leí un post de Martin Fowler, gurú del desarrollo agil, sobre que es imposible medir la productividad de un desarrollador. La entradas son:
http://martinfowler.com/bliki/CannotMeasureProductivity.html
o en español
http://www.dosideas.com/liderazgo/439.html?joscclean=1&comment_id=687

Este post habla muy inteligentemente de los problemas que tiene los sitemas de medir la productividad:
Por lineas de codigo: Más lineas de código no significa un producto mejor o con más funcionalidades. En ocasiones incluso es lo contrario. Un par de lineas bien escritas puede ser un trabajo mucho más productivo que hacer copy-paste de varios proyectos a uno sin saber exactamente qué se está haciendo.
Por puntos de función: Un mayor numero de puntos de funcion no significa un incremento en lo que un desarrollo puede aportar al cliente o a la empresa, que es de lo que se trata cuando se quiere medir la productividad.

Entonces, ¿no se puede medir? Hace tiempo que veo de vez en cuando lo que las metodologias como Six Sigma o Lean quieren aportar al mundo del desarrollo. Estas se basan en sistemas de producción tradicionales y estudian el numero de outputs validos respecto a la entrada y numero de outputs no valido (errores). Si no se puede medir el desarrollo, ¿no se puede mejorar?

Realmente si que hay maneras de evaluar la productividad de un desarrollador, pero no son cuantificables de modo sencillo. Voy a comentar una:
En el equipo en el que trabajo hay varios desarrolladores de varia indole: ingenieros en informatica, ingenieros tecnicos y telecos. Cada uno aporta un lobulo de lo que sería el cerebro general que representa al equipo de desarrollo. Igual que ocurre en la serie House, cada integrante tiene una especialidad en la que aporta sus herramientas, pero además debe ser capaz de entender el problema que se le presenta y aportar soluciones racionales que lleven al objetivo final. Es importante la funcion de mentor y de aprendiz en todos y cada una de las materias que se tocan en el desarrollo. Cuando ocurre un problema en su area debe ser capaz de exprimir al maximo todas las posibilidades y pruebas antes de quedarse en blanco. Debe aportar sus conocimiento de testing unitario/refactorizacion/patrones de diseño/punteros/base de datos… ya sea en su propio desarrollo o colaborando en el desarrollo de otro.
Esto… dificil de evaluar cuantitativamente y por lo tanto mejorar. Pero quienes entamos en direccion de proyectos o de departamentos de desarrollo lo vemos dia a día. Quizá de aqui pronto salga un diagrama o tabla en la que poder hacerlo.
Espero vuestros comentarios.