Disclaimer: lo aqui plasmado es mi opinión solamente y no la de mi empleador o algo similar.
A lo largo de mi vida profesional he formado parte de distintos grupos de desarrollo. En ocasiones existe una entidad dedicada a supervisar el trabajo diario (esto se da generalmente cuando se trabaja en empresas de desarrollo de software) para así llevar un control sobre lo que se entrega y, más importante, lo que se cobra.
Existen distintas métricas para el cobro, aunque una de las más difundidas es el cobro por hora. La premisa es la siguiente: el empleador lleva una supervisión del trabajo del desarrollador, quien se dedica extenuantemente a crear codigo para cumplir con sus tareas asignadas. Al cliente se le entregan regularmente reportes sobre el estado de su aplicación, tal vez puede probarla y hacer comentarios. Por su parte el desarrollador debe documentar sus actividades detalladamente… en un tracker de tiempo.
Un tracker de tiempo es básicamente una aplicación en donde el desarrollador puede indicar las horas en las que lleva trabajando en un proyecto, actividad, tarea, etc. En qué ocupa su tiempo pues. La aplicación después genera reportes con los que se le cobra el tiempo. Para que los reportes sean lo más detallados posibles, la aplicación debe incluir todas las tareas que el desarrollador realiza. Por ejemplo, vamos con una aplicación Web sencilla en la que se puede crear, editar y borrar un documento de texto y se guarda a una base de datos. Las tareas pueden ser:
- Programar funcionalidad de edición de texto y guardar en la base de datos
Pero eso no es muy detallado. Entonces lo cambiamos:
- Crear consultas SQL para las operaciones CRUD asociadas
- Probar las consultas
- Diseñar la interfaz gráfica
- Implementar el código HTML de la interfaz gráfica
- Implementar el código CSS de la interfaz gráfica
- Programar funcionalidad de interfaz gráfica (DHTML, JavaScript)
- Probar interfaz gráfica
- Implementar código del lado del servidor para ligar la interfaz con las consultas
- Probar la aplicación completa
Aún así mi descripción se queda corta, pero igual ilustra el punto. Es tedioso, consume tiempo, y los desarrolladores odian este tipo de sistemas. Desarrollar es una combinación de tareas y es difícil documentarlas todas y cada una de ellas, especialmente al final del día o al inicio del día siguiente.
En mi opinión, existen maneras más fáciles e igual de efectivas para hacer estos reportes. Por ejemplo, que tal si utilizamos un sistema similar a twitter, donde el desarrollador solo tenga que enviar un tweet con un tag especial y la actividad que está realizando, por ejemplo:
#edittext Analizando cómo alinear los controles de la aplicación en una manera que funcione en todos los navegadores.
Si integramos esto con una herramienta tipo Gnome-Do o Quicksilver para enviar los tweets, el desarrollador pierde virtualmente 0 tiempo, puede estar enterado de lo que hacen los demas desarrolladores (y potencialmente ayudando en otros proyectos con problemas que él puede resolver) y se obtienen reportes con mayor nivel de granularidad, incluyendo el tiempo en el que se comenzó a trabajar (al recibir el tweet) y cuando se termino (al recibir el siguiente tweet).
Después el sistema tomaría estos datos para generar reportes, o se le puede dar acceso al cliente para recibir notificaciones en tiempo real de su proyecto. Un sistema así no lo odiaría, sería como tweetear en horas de trabajo solo que para algo provechoso.
You’re welcome.