¿Se puede enseñar a programar en 8 horas?

¿Se puede enseñar a programar en 8 horas? Ese es el reto y la pregunta que nos hacemos hoy.

scroll

Sonia Alemany es una chica joven, simpática, inquieta y con ganas de aprender, que trabaja como Social Media Marketer. Hay bastantes chicas jóvenes, simpáticas, inquietas y con ganas de aprender, pero Sonia es especial. Sonia quiere aprender a programar.

Las intenciones de Sonia me hicieron reflexionar: hay mucha, mucha gente trabajando alrededor de Internet que no sabe programar y que ve el desarrollo como algo oscuro e inaccesible. En Estados Unidos, es más corriente que la gente de gestión -desde product managers a comerciales- tengan conocimientos técnicos o provengan del área de desarrollo, pero, en España, negocio y desarrollo son, normalmente, dos mundos que conviven y se ignoran mutuamente.

Yo creo que toda la industria se beneficiaría enormemente si dichos mundos dejaran de ser compartimentos estancos y empezáramos a construir vasos comunicantes. ¿Y si organizáramos un evento de un día? ¿Podríamos enseñarles a programar en 8 horas?

Tarjeta Perforada

La respuesta es evidente: no. Se tardan meses en formar a un desarrollador novato y años en conseguir adquirir la destreza y conocimientos necesarios para darte cuenta de que… debes seguir aprendiendo.

Pero no me refiero a enseñarlo todo, sólo lo básico, lo imprescindible. Olvidémonos de la compilación y el linkado, del diseño de base de datos en quinta forma normal, del TDD o los algoritmos de ordenación más eficientes. Hablo de lo realmente básico.

Si el público objetivo -comerciales, gurús del marketing, consultores, community managers, diseñadores, analistas, directivos de empresas informáticas o, ¿por qué no?, hasta mi mujer- conociera de una manera básica qué implica la programación, ¿no creéis que sería más fácil que nos entendiéramos todos? Si un gerente supiera cómo hacer un CRUD simple, podría explicarle de una forma más sencilla por qué tengo problemas con la gestión de hilos. Si un emprendedor conociera cómo se crea un formulario, sería más fácil que comprendiera el alcance de su proyecto.

¿Cómo les enseñaríais?

Vale. Imaginemos que nos lanzamos como valientes y montamos nuestro curso. ¿Qué les enseñamos? ¿Cómo les enseñamos? No debemos perder de vista nuestro público objetivo, gente que tiene otro trabajo –su trabajo- y con la adolescencia ya superada. Para mantenerles motivados, necesitamos que su esfuerzo obtenga una recompensa casi inmediata. Por eso, yo apostaría por HTML5 + Javascript.

  • Nos olvidamos de complicadas instrucciones de instalación y configuración «bajaros la última versión de Chrome«
  • Podrían utilizar cualquier editor de texto para programar
  • No necesitarían compilar ni desplegar aplicaciones
  • Podrían depurar la ejecución de sus programas
  • Verían el resultado de su desarrollo de forma instantánea
  • ¡Crearían una página web! Podrían colgarla en su propio Dropbox y hacerla pública de forma sencilla

Sí, JavaScript puede ser un lenguaje proveniente del averno, pero tiene todo lo que necesitamos para enseñarles a programar. Gracias a HTML5 tenemos un almacenamiento local  -toda una base de datos ACID, SQLite– y, por supuesto, posibilidad de trabajar offline con la misma.

Por contra, JavaScript es un lenguaje dinámico y eso una dificultad añadida a la hora de detectar los errores de programación. Tampoco es orientado a objetos pero, es que, ni siquiera tengo claro si habría que enseñar orientación a objetos en ¡8 horas! En cualquier caso, hay frameworks como Mootols que simulan esa orientación a objetos en JavaScript.

¿Qué les enseñaríais?

Apostamos por HTML5+Javascript y, ahora, ¿qué les enseñamos? Si solo disponemos de 8 horas, deberíamos ceñirnos a lo realmente básico para comprender de una forma más profunda el trabajo de un desarrollador:

  • Programación de interfaces y captura de eventos con un formulario HTML
  • Variables y métodos
  • Control del flujo de ejecución de un programa con instrucciones condicionales y bucles
  • Acceso y gestión de datos con la API de datos de HTML5

Con que en un solo día pudieran aprender los conceptos y sintaxis necesarios para completar con asistencia una simple lista de to-dos que se almacenara localmente, creo que todo el mundo se daría por satisfecho… y más de uno no podría creerlo.

¿Me he vuelto loco?

Además de las complejidades técnicas, creo que el mayor problema para diseñar el curso sería acotarse a lo estrictamente imprescindible para que entendieran los conceptos. Que vayas a utilizar lenguaje HTML, por ejemplo, no quiere decir que les tengas que enseñar la etiqueta <img> si no vas a necesitarla.

Y, por supuesto, habría que conseguir que el evento fuera muy dinámico y ameno. Probablemente habría que utilizar mi adorada teoría del juego o gamification. Hay que conseguir vean como cada paso como un reto apasionante o se aburrirán en menos de dos horas. Que un técnico de Recursos Humanos se divierta insertando un campo alfanumérico en base de datos, parece una tarea titánica.

Así que… ¿Me he vuelto loco? Puede. Pero algunas locuras merecen la pena.

¿Qué pensáis vosotros? ¿Creéis que puede hacerse? ¿Creéis que podríamos enseñarle a alguien a programar desde cero en sólo 8 horas? ¿Qué lenguaje o plataforma elegiríais? ¿Qué creéis que sería imprescindible que aprendieran?

Estoy seguro de que hay mucha más gente como Sonia. Gente a la que a lo mejor sólo le hace falta un pequeño empujón para empezar a aprender. Gente que cree que nunca podrá preguntar por qué necesita conocimientos avanzados de física cuántica. Gente que no pretende convertirse en el próximo John Carmack sino aprender un poco más sobre cómo están hechas las aplicaciones y páginas que utilizan cada día.

La verdad es que sería todo un reto ¿Qué creéis vosotros? ¿Creéis que podríamos hacerlo?