Es indudable que en los tiempos que corren donde el hardware se ha vuelto un commodity al igual que la mayor de servicios de infraestructura de red, el saber programar (entendido como un proceso creativo), ha pasado a ser un activo importante en las empresas y los grandes gigantes de la industria como Google o Facebook se disputan los mejores desarrolladores. Es más se ha creado algo llamado acqhiring, que es un proceso a través del cual las compañías con suficientes fondos compran otras más pequeñas para poder tener acceso a sus desarrolladores.
Exitosos semilleros de empresas como Y Combinator, están enfocadas a dar los conocimientos de emprendimiento necesario a los desarrolladores que desean inciar su propia empresa, pero para iniciar una empresa en el sector de las TIC se necesita ser un programador, alguien que puede traducir una idea de negocio en un lenguaje que las computadoras pueden entender.
Para variar las universidades latinoamericanas y las peruanas en particular no están interesadas en la parte "dura" de la carrera de computer science (programación) sino en la parte "blanda" orientada más a metodologías y mejores prácticas, que tienen un valor pero que no son el motor de progreso en este momento. Lo que es evidente es que incluso con los recursos necesarios, no todos pueden aprender a programar, según algunos estudios realizados en universidades americanas apenas la décima parte del uno por ciento de los alumnos interesados en aprender a programar pueden hacerlo, es decir los llamados programadores naturales.
Hay varios factores que han conspirado contra la creación de una mayor masa de buenos programadores en nuestras sociedades, indudablemente los entornos gráficos y la ilusión de que usar una computadora es sencillo es uno de los principales problemas. El programar en la forma como se ve en nuestras sociedades incluso se ha vuelto equivalente a crear GUIs y llenar simples rutinas de callbacks para llenar bases de datos u obtener reportes de las mismas, lo lamentable es que la gran mayoría de personas que terminan una carrera del área así lo cree.
Otro de los grandes problemas para enseñar a programar es en muchos casos el exceso de testosterona y el comportamiento tipo macho alfa que la gran mayoría de programadores exhibe. Profesores y alumnos muchas veces entran en competencia sobre cuál es el código más criptico que resuelve un sencillo problema, en lugar de hacer exactamente lo contrario, como crear el código más simple y claro posible que resuelve un problema complejo. La sencilles es una de las condiciones de la elegancia y más de doscientos años de desarrollos matemáticos nos han probado que incluso manteniendo una metodología que favorece la simplicidad, la claridad y la lógica, no siempre se puede llegar a un desarrollo que todos pueden entender.
Un problema que resulta evidente ahora cuando se intenta enseñar a programar en las universidades o institutos, es que las escuelas están más enfocadas en enseñar como usar la computadora como una herramienta de oficina, en lugar de intentar enseñar el uso de la misma como una herramienta que potencia el desarrollo de nuevas ideas. En los ochenta y principios de los noventa, la introducción de computadoras en las aulas implicaba enseñar a programar en algún lenguaje de alto nivel como BASIC o LOGO, ya que el hardware de aquellas primeras microcomputadoras era bastante limitado como para acomodar muchos programas que ahora consideramos como estándar en los PCs. Este abaratamiento del hardware y la masificación del uso de las computadoras personales incluso ha llevado a la desaparición de los entornos de desarrollo (programación) en las computadoras de nuestros días. Todos aceptamos como normal que en una instalación por defecto de cualquier sistema operativo moderno como Windows, Mac OS X o incluso Linux, no se incluya por defecto un entorno de desarrollo. Esta realidad lo único que está haciendo es hacer la brecha de aprender a programar más grande para las nuevas generaciones que no han sido expuestas a la programación desde una edad temprana. Lo cual hace que la gran mayoría de recien ingresados a las universidades e institutos se enfrenten a una misión casi imposible, aprender a programar en tan sólo 2 o 3 semestres y luego de eso ser lo suficientemente hábilies como para resolver problemas reales.
No creo que como en un extenso artículo de David Brin aparecido en Solon.com, titulado Why Johnny can't code, toda la culpa sea la desaparción de la línea de comando de las computadoras modernas, existen muy buenos entornos para enseñar a programar de manera gráfica como Squeak. Además en nuestros días es basntante sencillo y gratis, el descargar alguno de los múltiples lenguages de script como Perl, Python o Ruby en nuestro PC, independientemente del sistema operativo que usemos que nos permite volver a la línea de comandos si lo deseamos así. El problema va más alla de la no existencia de una lingua franca (como lo fue el BASIC en los primeros años de la revolución de las microcomputadoras) o de que las computadoras sean mucho más complejas hoy que hace 20 años. Estamos como sociedad buscando una solución rápida a los problemas y olvidando que el progreso es un proceso de naturaleza compleja y larga, que se contradice con nuestra visión de querer saltar en el siguiente tren que nos ofresca una salida mágica a nuestras carencias estructurales.
En teoría con un millones de OLPC repartidas hacia finales de este año, es de esperar que en pocos años veamos jóvenes y entusiastas programadores peruanos revolucionando el mercado global de la tecnología, pero eso no ocurrirá. No porque sea un pesimista o porque odie toda iniciativa del gobierno que está por terminar, simplemente no ocurrirá porque si en una escuela no hay baños, agua corriente o un suministro de energía apropiado, donde los alumnos no reciben la ración calórica diaria mínima para ayudar a que sus cerebros en formación se desarrollen normalmente, un pedazo de plástico verde no hará el milagro.
Con tantas facultades de Ingeniería de Sistemas, Ingenierían Informática, Ingeniería de la Computación y tantos otros nombres diseñados más como herramientas de marketing, deberíamos estar en estos momentos produciendo gran cantidad de contenido (papers, blogs, libros, proyectos de software libre, etc.), sin embargo eso no está ocurriendo, ¿por qué?. Una vez más, no existen atajos para el desarrollo y entregarle un diploma de ingeniero a alguien que asiste 5 años a una universidad o 3 años a un instituto no lo convierte en un ingeniero o un técnico versado en el tema. Mientras se tengan profesores universitarios, que ven la cátedra sólo como una fuente de ingresos y deben de tener más de un trabajo para poder cubrir su presupuesto familiar, mientras se tengan profesores universitarios que sólo hablan español a pesar de que la ley universitaria les exige que dominen al menos un idioma extranjero, mientas existan profesores universitarios que jamas hayan tenido una experiencia laboral y toda su vida se haya desarrollado dentro de las aulas (primero como alumno y luego como profesor), estaremos condenados a que el progreso nos sea esquivo.
¿Cómo es posible que teniendo ahora a nuestra disposición tecnología mucho más barata y potente de la que se disponía en los 70s, 80s o 90s, cada vez nuestros resultados sean peores? No puedo estar seguro porque no existe un estudio que lo corrobore, pero me arriesgaría a decir de que ahora es mucho más difícil conseguir hoy un buen programador de lo que lo era hacerlo una o dos descenios atras. Y eso que el número de universidades e institutos hoy en día es muy superior al que existía entonces. Aún sigue existiendo la misma proporción de programadores natos (1 en 1000), la única diferencia es que el sistema educativo está mutilando mentalmente a aquellos que no son programadores natos, de las aptitudes necesarias para poder aprender programación y eso es algo que debemos de cambiar si es que desamos tener alguna oportunidad de competir a nivel internacional.