Soy un desarrollador. No enseñaré a mis hijos a codificar, y usted tampoco debería.
Por Joe Morgan | SlateUn padre mirando a su hijo mientras se da cuenta de cómo armar una silla para un escritorio con una computadora.
Natalie Matthews-Ramo
En una reciente sesión de fórmula nocturna, pasé por una gran muestra de libros sobre cómo enseñar a los niños a codificar. He visto estos libros, pero nunca una exhibición tan grande dirigida a niños de edad elemental. Estos libros son parte de una avalancha de recursos (campamentos de codificación de verano, clubes de código extracurriculares, aplicaciones diseñadas para enseñar los rudimentos de JavaScript a los niños de jardín de infantes) destinados a equipar a los niños con habilidades a prueba de futuro.
Es fácil ver por qué los padres empujan la codificación en sus hijos. ¿Qué mejor manera de preparar a nuestros hijos para un futuro regido por el software que entrenándolos sobre cómo construirlo? Si todo va a ser automatizado, es mucho más seguro ser el que realice la automatización. Y si aprender a codificar es bueno, entonces aprender antes es mejor. Pero si bien estos productos pueden enseñar a los niños lenguajes de codificación específicos, en realidad tienen muy poco que ver con el trabajo de crear software.
Un antiguo compañero de trabajo fue entrenado en un campo de entrenamiento de codificación con el lema "Codificar es la nueva alfabetización". Ese sentimiento está en el corazón de todos los libros y juegos de programación. La descripción en un libro popular dice que comenzar a programar con anticipación es "esencial para preparar a los niños para el futuro". Esto da la impresión de que no enseñar a los niños a codificar es de alguna manera equivalente a no enseñarles a leer.
Eso es, por supuesto, ridículo. La codificación no es la nueva alfabetización. Si bien la mayoría de los padres saben leer y escribir y saben leerle a sus hijos, la mayoría no son programadores y no tienen idea de qué tipo de habilidades necesita un programador. Los libros de codificación para niños presentan la codificación como un conjunto de problemas con soluciones "correctas". Y si sus hijos solo pueden dominar la sintaxis, podrán hacer las cosas rápida y fácilmente. Pero no es así como funciona la programación. La programación es desordenada. La programación es una mezcla de creatividad y determinación. Ser un desarrollador es algo más que una sintaxis, y ciertas habilidades solo se pueden enseñar a los más pequeños.
Los buenos programadores no solo consiguen que algo funcione. Ellos quieren que sea bueno.
Al principio de mi carrera, escribí un código para configurar y ejecutar un grupo de servidores remotos. El código funcionó muy bien. Al menos eso fue lo que pensé hasta unas 18 horas más tarde, cuando mi teléfono sonó en mitad de la noche y me dijo que un grupo de servidores había fallado. Asombrándose de la cama a mi computadora portátil, volví a ejecutar el código para reemplazar los servidores rotos. Horas más tarde, un grupo diferente falló.
No hubo un problema de sintaxis. Si hubiera habido, los servidores nunca se habrían construido en primer lugar. El problema era mucho más profundo. Aislarlo y resolverlo tomó varias semanas y muchas noches de sueño interrumpido.
La codificación es así. Intenta algo. A ver si funciona. Inténtalo de nuevo. Si un problema fuera sencillo, se automatizaría o, al menos, se resolvería con algún código de código abierto. Todo lo que queda es la difícil tarea de crear algo único. No hay libros que le enseñen cómo resolver un problema que nadie haya visto antes. Por eso no quiero que mis hijos aprendan la sintaxis. Quiero que aprendan a resolver problemas, a profundizar en un problema, a ser creativos. Entonces, ¿cómo enseñamos eso?
Un día, a mi hijo le preocupaba que su silla estuviera tambaleante. Lo miramos y él me ayudó a aislar el problema: uno de los tornillos estaba suelto. Encontré una de nuestras muchas llaves hexagonales sobrantes y le mostré cómo atornillarla nuevamente. Después de eso, sintió curiosidad por lo que sucedería si atornillara de la otra manera, lo que hizo hasta que salió el tornillo. Terminamos tomando la silla completamente separada y armándola de nuevo un par de veces, a menudo con piezas que no coinciden, antes de que estuviera satisfecho de que el trabajo había terminado. Intenta algo. Mira cómo funciona. Inténtalo de nuevo.
Por supuesto, hacer que algo funcione es solo el primer paso para crear software. El siguiente paso es hacer que el código sea claro, reutilizable y ordenado. Una vez, al principio de mi carrera, escribí una característica y se la di a un desarrollador senior para que la revisara. Echó un vistazo a mi espacio descuidado, a las líneas desiguales y a las convenciones de nombres erráticas y solo dijo: "Hazlo de nuevo". Estaba funcionando. La sintaxis era válida. Todavía estaba mal. Los buenos programadores no solo consiguen algo para trabajar. Ellos quieren que sea bueno.
Ese sentimiento de calidad es lo más difícil de dominar para muchos desarrolladores. Se siente bien trabajar con un código bien diseñado, y un código feo hará que los desarrolladores se enojen involuntariamente. Los mejores desarrolladores aprenden a fusionar la lógica abstracta con la sensibilidad de un artista. Aprender a confiar en ese sentimiento estético es tan parte del desarrollo como cualquier algoritmo o patrón de codificación.
Mi esposa y yo recientemente hicimos galletas de azúcar con nuestro hijo. Cada vez que mezclamos algunos ingredientes haríamos una pausa y miraríamos la masa y hablaríamos sobre la textura y el color. ¿Fue suave? ¿Conseguimos todas las partes mezcladas uniformemente? Cuando extendimos la masa, mi hijo palpó la superficie y observó cómo mi esposa le mostraba cómo hacer que todo fuera uniforme y delgado. La parte más difícil, sin embargo, fue cortar las formas. Como todos los niños, instintivamente empujó el cortador justo en el medio de la masa enrollada, y cada vez intentábamos explicar cómo colocar las formas una al lado de la otra para maximizar cada rollo.
Cada paso: medir con precisión los ingredientes, medir la masa mezclada para obtener suavidad y consistencia, realizar cortes de precisión para minimizar el desperdicio, le enseñó algo acerca de la calidad. Es difícil enseñar la diferencia entre simplemente ejecutar pasos, como seguir una receta y hacer algo bien. Solo se puede transmitir a través del sentimiento y la experiencia. Y cada vez que involucras a tus hijos cuando trabajas en algo que valoras, les estás enseñando cómo hacer las cosas bien. Los estás preparando para escribir código.
Pero no solo les estás enseñando eso. Les estás enseñando que el mundo está lleno de cosas interesantes que descubrir. Les está mostrando cómo ser apasionados y buscar ese sentido efímero de calidad en todo lo que hacen. La mejor parte es que incluso si no se convierten en programadores, la mayoría no debería y no lo hará, las mismas habilidades se pueden utilizar en casi cualquier carrera, en cada hobby, en cada vida. Cuando obligamos a los niños a aprender la sintaxis, reforzamos la idea de que si algo no es una habilidad descartable, no es valioso. Los adultos pueden aprender la sintaxis. Sólo los niños pueden aprender a abrazar la curiosidad.