Consejos para enseñar programación

Este verano voy a enseñar programación a alguien que, aunque tiene alguna experiencia "trasteando" con Python y conocimientos teóricos (muy) básicos, nunca ha hecho nada más allá de algunos Hello World.

Me surge una duda.

El camino que yo seguí en su día, hace varios siglos, fue el de entender primero la sintaxis del lenguaje (en mi caso, C++), las sentencias de control, escribir programas sencillos y no tan sencillos con ese skillset básico, y sólo entonces entrar en programación orientada a objetos y aprender a escribir clases y utilizar instancias.

Teniendo en cuenta el lenguaje elegido (será PHP, el que uso a diario profesionalmente) y la cantidad de herramientas disponibles hoy en día (me refiero sobre todo a Composer y a los frameworks, más o menos "mágicos", pero incluso también a TDD, BDD o DDD),

¿debería optar por escribir los programas con esa persona directamente con un enfoque orientado a objetos, aplicando buenas prácticas y paradigmas modernos que yo he ido conociendo a lo largo de mi trayectoria?

¿O hay algún valor en seguir el camino que yo seguí, introduciendo poco a poco esas técnicas pero partiendo de procedimientos más arcaicos (pero, creo yo, más accesibles para una persona sin experiencia)?

¿Qué pensáis vosotros?

Cualquier feedback será bien recibido, y os agradeceré también los recursos que me podáis linkar/aconsejar.

Un saludo.

Respuestas

#1

La pregunta daría para conversaciones interminables, así que pongo algunos comentarios sueltos sobre lo que dices.

1) No soy nada objetivo, pero me parece que PHP y JavaScript son los dos mejores lenguajes que podrías utilizar para enseñar a alguien a programar. (Python también es una opción popular).

2) Lo bueno de que alguien no sepa nada es que no sabe lo que es bueno o malo, lo que cuesta mucho o cuesta poco. En otras palabras, a un programador de la vieja escuela que nunca ha usado tests, cuando se lo enseñas empieza a protestar porque "es mucho trabajo", "nunca lo he hecho así", "no son tan importantes", etc.

Pero si coges a una persona de nuevas y le introduces los tests como una herramienta más de los programadores profesionales, sí que los verá como algo natural y no una cosa impuesta y que da mucho trabajo. Sin embargo, a menos que la persona sea extremadamente disciplinada, yo no le enseñaría TDD de primeras.

3) Últimamente hay una corriente entre algunos auto-proclamados gurús que consiste en despreciar la programación orientada a objetos y considerar que si no haces programación funcional no deberías ni siquiera llamarte programador. Yo no opino así en absoluto, por lo que creo que empezar con programación orientada a objetos es una forma excelente de introducirse en la programación.

4) Aprovechando de nuevo que esa persona no sabe nada, deberías explicarle solamente la forma correcta de hacer las cosas. En el caso concreto de PHP, echa un vistazo al libro PHP, la manera correcta que explica cómo programar bien con PHP (el libro todavía no está traducido del todo, por eso está "medio oculto" y no lo he publicado en la sección de libros).

5) Añadiría finalmente un pequeño consejo para que lo que le enseñes le resulte más divertido y motivante: pregúntale qué tarea repetitiva odia más y enséñale a automatizarla con programación. Ejemplos: generación de documentos similares, transformación de documentos a PDF, "scrapping" de información publicada en alguna web, envío de alertas y notificaciones, etc.