A mi me toca retirar a mi hija del jardín todos los mediodías , así que salgo de la oficina subo al auto y me dispongo a realizar las 4 cuadras necesarias para llegar. debería tardar no mas de 5 minutos, pero resulta que tengo que cruzar un semáforo, una avenida (2 veces) y encontrar estacionamiento; todo esto en el mortal trafico de la vuelta a casa de todo el mundo. Por mas que tenga un vehículo que llegue a 160 km/h y sea un excelente conductor, no tengo forma de evitar los contratiempos que les mencioné!!, por lo menos no comprando un auto mas rápido o haciendo cursos de manejo avanzados
Con el desarrollo de software pasa lo mismo. Se suele gastar mucha energía tratando de aumentar la velocidad de escritura, aprendizaje de atajos y obtención de fabulosas herramientas de programación que nos permiten hacer en un paso lo que antes hacíamos en dos o tres. Todo esto esta bien y es genial tratar de ser lo mas rápido posible mientras que se esta programando. Pero si de productividad hablamos nos estamos olvidando del contexto, de la cantidad de tiempo que el programador pasa sin escribir código
¿Cuanto tiempo pasa un programador programando?. Según estimaciones basadas en los proyectos de Ohloh, un programador “tira” por año 4000 líneas de código. Suponiendo que solo se trabajan 40 semanas al año
, estaríamos hablando de 100 líneas de código por semana, 20 líneas por día, un poco mas de 3 líneas por hora. (quien contrataría a un programador con estos numerillos?!)“El proyecto Mozilla Firefox tiene 6 millones de líneas de código con algo así de 1.500 colaboradores. Eso es menos de 4000 líneas de código por persona escritas durante varios años!!!”
Supongo que a esta altura tenemos que blanquear lo que todo el mundo sabe; la mayor parte del tiempo los programadores hacen otra cosa: atender el teléfono, responder mails, ejecución de pruebas, depuración, corrección de errores (esto puede llevar muchas horas sobre todo cuando la cosas dejan de funcionar misteriosamente y las búsquedas en Google no ayudan), refactorización de código y ni hablemos de integración y grandes cambios de ultima hora. Esta bien muchas de las actividad que mencione están ligada a la programación, pero no se consideran productivas (la corrección de errores no aporta funcionalidad y lleva tiempo = mayores costos $$$$$$)
Con todo queda claro que contar líneas de código es un mal indicador del esfuerzo de programación y que a pesar de que existen un montón de métricas mejores ésta sigue siendo la mas utilizada, es como si se estuviera obligando al programador a usar mas líneas para hacer menos!. Si a esto sumamos lo que dice el Software Engineering Institute: La densidad de errores, en el mejor de los casos es de 12 cada 1000 líneas de código, o sea, que si encontraste solo 1 o 2 errores en tu código de 1000 líneas, busca bien se te están escapando diez o mas. implica que más líneas de código mas errores, mas esfuerzo para que tu software haga lo que tiene que hacer, recordando siempre que para las empresas la calidad del código se traduce en $$$$$
Resumiendo, la mejor forma de mejorar la productividad de un programador no esta en “aceitarle los dedos” o ponerle una súper PC e ir acumulando monitores
, sino en eliminar sus tiempos muertos- Minimizar los cambios: buen análisis por adelantado ???!, prototipos rápidos, control de cambios, gestión de atrasos y así sucesivamente.
- Mejorar la calidad del código: Utilizando todas las técnicas que se disponen sobre todos el entrenamiento para escribir mejor código.
- Evitar, dentro de las posibilidades, las interrupciones: La programación es como el sueño, se tarda un rato en alcanzar la fase más productiva y, si ésta es interrumpida, el proceso vuelve a empezar con la consiguiente caída del rendimiento. Reuniones, llamadas telefónicas, correos electrónicos, mensajería instantánea, etc. son todos los asesinos del tiempo.
Por lo menos así lo veo sho !!