¿Estuvo involucrado en un proyecto de software que se excedió del presupuesto y no cumplió con todos los plazos? Por supuesto, todos lo hemos estado. De hecho, si no lo estuvo, es un unicornio y me gustaría conocerlo.
En las primeras etapas de mi carrera de desarrollo de software, aprendí la importancia de trabajar hacia atrás a partir de una fecha límite. Si un proyecto debe concluirse en una fecha determinada y las pruebas llevarán cierto tiempo, entonces podemos usar esa información para trabajar hacia atrás y elegir una fecha de vencimiento para nuestro proyecto. Perfecto, ¿verdad?
Bueno, no del todo. Si bien la creación de tiempo para las pruebas manuales redujo algo de estrés en los últimos días de los proyectos, todavía había demasiadas sorpresas.
En teoría, planear el tiempo para las pruebas de control de calidad es una buena idea, pero en la práctica se desmorona rápidamente una vez que se identifica el primer error o defecto.
¿Cuánto tiempo se tardará en arreglar este defecto? ¿Cuánto afectará a la línea de tiempo? ¿Se introducirán nuevos errores? ¿Cómo garantizaremos que cada arreglo se verifique a tiempo para reparar todo lo que descompusimos mientras arreglábamos la primera cosa?
Al final, nunca he podido encontrar la cantidad correcta de tiempo para asignar a control de calidad. Inevitablemente, los arreglos apresurados se hicieron en el último minuto. Aprendí a mantener mi calendario despejado durante un par de semanas luego de los grandes lanzamientos para poder clasificar todos los problemas que no vimos (o introdujimos) en nuestras locas carreras hacia el final.
El problema, finalmente, no era el tiempo disponible para las pruebas, sino el momento de las pruebas. Necesitaba pruebas antes y con más frecuencia. Necesitaba pruebas de desplazamiento a la izquierda.
Si imaginamos nuestro proceso de desarrollo de software como una línea de tiempo que fluye de izquierda a derecha, entonces la “prueba de desplazamiento a la izquierda” se explica por sí sola. En pocas palabras, es la práctica de probar etapas más tempranas, involucrando a los miembros del equipo, incluidos analizadores, desarrolladores y stakeholders en la estrategia de pruebas, e integrando pruebas para características existentes y nuevas con mayor frecuencia en el ciclo de vida del desarrollo.