TDD para educación

TDD (Test Driven Development, Desarrollo basado en pruebas) es una metodología de programación que consiste en elaborar primero una prueba de lo que se quiere programar, y luego recién ponerse a programar, pero dando pasos de bebé, los más pequeños y simples posibles, justo lo necesario para pasar la prueba.
¿Por qué se hace así? Bueno, en el desarrollo de software ocurre con frecuencia que uno no sabe cuando detenerse.
Algunos programadores tienden a hacer un superconjunto que contenga la solución y eso, aunque a primera vista parezca bueno, es en realidad contraproducente.
Como cada paso que se dá es un lugar de error potencial, minimizar el número de cosas que hay es una manera de minimizar también el número de cosas que pueden fallar.
Además, si el cliente no lo pidió, significa que estamos contaminando su conjunto de requerimientos con los nuestros o los de alguien más. Al final le entregaríamos opciones que posiblemente no usará y estarán, ya sea estorbando entre las otras opciones que sí son usadas, o relegadas en una esquina.
El hacer primero la prueba y luego el desarrollo favorece el foco del desarrollo y es también un modo objetivo de expresar lo que el cliente desea. Si el cliente desea algo, se expresa como una prueba, y se desarrolla lo necesario para cumplir la prueba.
Cuando uno repara una cosa, a veces suele pasar algo inesperado en alguna otra parte. Si tenemos pruebas que podemos correr automáticamente después de dar cada paso, podemos avanzar con bastante seguridad.
Ahora, en el sistema educativo formal, uno se inscribe en un curso, estudia el material que le dan, y luego da una prueba. La prueba es una muestra al azar de todos los posibles problemas que debería poder resolver una persona en ese punto.
Uno puede notar que esto tiene algunos defectos. Que una persona pase una prueba no significa que sepa lo necesario. Y a veces no se pasa una prueba simplemente porque está mal diseñada y no mide lo que se supone debería medir.
Imaginese llevar un curso usando TDD. Usted es el cliente, así que iría a un tutor o asesor para que le entreviste y determine qué es lo que usted desea aprender. El traduciría esos requerimientos en pruebas. Usted también sería el programador, entonces lo que haría es usar los recursos disponibles para aprender hasta que logre resolver esas pruebas. Los libros, videos, profesores, compañeros, etc que haya ahí o cualquier lugar a su alcance. Cuando completara las pruebas sabría que puede detenerse allí, y estaría listo para aprender otras cosas más que desee.

De modo similar a como los programadores aprender primero a programar, buenas prácticas, etc, un estudiante recibiría una capacitación sobre cómo estudiar y resolver problemas.

Pienso que usar el TTD en educación podría ser una forma eficiente de aprender.

Alguien podría decir que tener la prueba de antemano no es conveniente, ya que, tradicionalmente, cuando un estudiante tiene las preguntas, aprende sólo las respuestas necesarias para obtener una calificación excelente sin dominar en realidad todo el tema.

Pero esto es una falacia. Por un lado, un estudiante puede aprobar una prueba por azar si justo le lanzan las preguntas cuya respuesta conoce. Por otro lado, cuando un estudiante busca las respuestas también aprende algo, de algún modo. Si las pruebas fueran diseñadas del modo correcto, el estudiante aprendería todo lo que se requiere en su búsqueda de las respuestas.

Así, lo que el método tradicional oculta es que hay una deficiencia en la elaboración de pruebas. Precisamente porque estan hechas como muestreo de casos al azar, y no pensadas para ser usadas como herramienta de aprendizaje, que es lo que podrían ser.

Comentarios

Lee también

Cardumen de conocimientos

Email con más opciones

Polvos Virtuales

unobstrusive web dev

Sistema con convención en lugar de configuración

Los recuerdos ahí afuera, o la mente antena

Imagino... imaginemos

Planificación e Impulso

Pintando como en el mundo real