Contra la visión mítica de saber programar

Este vídeo con Zuckerberg, Jack Dorsay y Bill Gates (con cita de Steve Jobs incluida) sobre “lo que la mayoría de las escuelas no enseña” es el mejor exponente de una corriente de opinión que, cada vez con mayor fuerza, hace una apología del “saber programar”.

En los últimos días he leído de todo: “Programar te hace más sabio”, “si no eres programador serán un analfabeto del siglo XXI” y la célebre e ingeniosa cita “programa o serás programado” (del libro de Rushkoff). El caso es que las mayores hipérboles se las escucho a la gente con un perfil más alejado de la programación, mientras que mis excolegas de profesión – hace unos cuantos años me dedicaba al noble arte del desarrollo software – suelen ser más comedidos.

Saber programar es una cosa excelente

Echo de menos programar y eso que nunca llegué a ser realmente bueno. De hecho creo que con menos de diez años de experiencia es muy complicado llegar a ser un gran programador. Pero el hacer software es una de las tareas más completas y enriquecedoras que se puede abordar intelectualmente, comprende tanto las facetas creativas – importante: programar es escribir – como el pensamiento abstracto y organizativo. No es en absoluto una tarea rutinaria para cabezas cuadradas como muchas veces se suele pintar, además de ese componente “matemático racional” la programación exige un alta dosis de creatividad, de plantear soluciones nuevas y de conseguir modelar y abstraer la complejidad del mundo que se quiere procesar a una realidad lógico-matemática.

Incluso diría más, diría que como ciudadanos que vivimos cada vez más rodeados, ejecutando y consumiendo software, vamos a necesitar unas nociones básicas de algoritmia para comprender el mundo que vivimos y los compromisos a los que nos invitan a llegar. Desde los que conducirán nuestros coches hasta los que nos filtran y ordenan la información. No tengo claro como trasladar todo esto a la educación, pero intuyo que estamos dejando huérfanos a varias generaciones de un criterio propio con el que afrontar lo que tantos llaman “sociedad de la información”. Sí que tengo claro que quedarse en la herramienta es una visión pobrísima y que nuestra clase política carece de una idea de internet y del software, pero tampoco soy capaz de tener cien por cien claro un plan de estudios que baje a tierra estas ideas.

La visión mítica de la programación

Con todo ello, estoy en contra de la visión mítica sobre la programación que subyace en algunos discursos. Sirva de ejemplo el vídeo que ilustra este artículo, incide y reincide en la excepción (que algunos de los triunfadores del capitalismo tecnológico tienen un perfil técnico / programador) y no en la norma. Y es que el mundo del software muy raras veces produce soluciones universales que utilizan cientos de millones de personas (y que son las soluciones que producen enormes plusvalías por las economías de escala) sino que en su inmensa mayoría resuelve problemas concretos con soluciones no reutilizables.

Ese es el motivo por el que existen miles de factorías software con decenas y decenas de millones de programadores en todo el mundo utilizando Java, .NET o incluso Cobol. Porque por norma el trabajo software es el de desarrollos específicos con rentabilidades ajustadas. Claro que existe la posibilidad de hacer un desarrollo de éxito mundial, pero esto es algo excepcional y, como hablamos sobre Angry Birds y la economía de las apps, no es ni mucho menos la norma.

De hecho con la programación hay un malentendido constante. Es un medio para resolver un problema, siempre se ha tratado de eso. Un cliente (uno puede ser su propio cliente, claro) tiene una necesidad, unos requisitos y para resolverlo se plantea una solución. El recorrido de la programación es justo el que permita dar soluciones a problemas y necesidades, no es un fin en si mismo. Si cuando me dedicaba a ello hubiese podido conseguir los objetivos sin tirar una línea de código, sin pruebas ni despliegues, hubiese sido el hombre más feliz del mundo (aunque quizás con menos futuro profesional también). Añadiría que la visión de la programación como un fin además ayuda a perder de vista algo fundamental: la calidad del software se refleja en su capacidad de satisfacer los requisitos del cliente.

También tendría cuidado con las cualidades – a veces mágicas – que suponemos a los programadores. No son más listos, ni más sabios ni tienen una posición privilegiada para identificar problemas del uso de la tecnología. Al menos no por ser programadores. Mi vecino que nunca ha puesto un huevo sabe distinguir muy bien uno sano de uno podrido y lo mismo sucede con la tecnología en la mayoría de los casos.

Aprenda a programar en siete días

Por último quedan dos aspectos en todo este tema que se suelen olvidar. Uno referido a las expectativas económicas de la carrera de programador o de lo que aportaría saber programar a otra profesión (se habla mucho de periodistas programadores). Aquí haría un esfuerzo de realismo, de entender bien los salarios medios y no los “estrella” y de sopesar de que el éxito de alguien con otro empleo está en ser realmente bueno en él y no tanto en que además pueda tirar unas líneas de código.

El otro aspecto tiene que ver con el proceso de aprender a programar. La mayor barrera de entrada que pronostico para quienes empiezan tiene que ver con que casi siempre tienen en mente la catedral de Santiago y de repente se ven empezando pegando ladrillos: tipos de datos básicos, trabajo con cadenas de caracteres y similares… me pregunto cuantos llegarán a los algoritmos de ordenación o de si alguno llegará a superar la lección de complejidad algorítmica. Quizás desde mis años se haya mejorado mucho la formación de la programación y las nuevas plataformas online ayuden bastente, pero en todo caso me prepararía para un proceso largo y exigente.

No intento desanimar a nadie. Programar es algo que echo mucho de menos y que cada mes me conjuro a retomar. Tiene al final un punto de satisfacción de haber construido algo que funciona y que es útil a otros, tiene un valor de mercado que puede abrir la puerta a un mejor futuro profesional y, quitando los momentos de frustración, es divertido. Me gusta incluso que se esté prestigiando socialmente, llegando a ser cool. Pero no compraría la versión mítica de saber programar

26 comentarios en “Contra la visión mítica de saber programar

    1. Me dejas con la duda, ¿es porque vez muy importante el latín o porque no ves lo de la programación?

  1. Code is poetry. Pero no todos podemos ser poetas. Lo más útil que podemos hacer es intentar que los poetas no se distraigan y pierdan la inspiración.

  2. Estoy bastante de acuerdo contigo. A mí “programar” me parece una habilidad muy interesante. Yo empecé con el BASIC del Amstrad, hice algunas bases de datos con DBASE, me muevo con agilidad en Excel e incluso hago mis pinitos con alguna macro de VBasic. Nunca he sido un “excelente programador”, ni siquiera “mediocre”. Nunca he sido, de hecho, programador ni me he dedicado profesionalmente a ello. Pero he encontrado que mi interés por la materia me ha resultado muy provechoso desde dos puntos de vista.
    Por el lado de lo concreto, he sido capaz de hacerme “pequeñas ñapas caseras” que me han ayudado a ser productivo/autónomo en mi trabajo en un nivel suficiente como para marcar diferencias con el entorno. Desde arreglármelas fenomenal con el tratamiento de datos, el automatizar procesos rutinarios, el darle solidez a determinados análisis eliminando factor humano, o autogestionarme pequeñas cositas en la web.

    Pero a nivel más abstracto, “programar” me ha ayudado (y aquí siempre tengo la duda de si “mi mente ya tenía esta inclinación y por eso se sentía cómoda programando, o si fue la programación la que moldeó mi forma de pensar) a pensar de una determinada forma, a aplicar determinada lógica en el análisis y resolución de problemas, en la estructuración de información… que resulta extraordinariamente útil en ámbitos que no tienen nada que ver con la técnica.

    En definitiva, no sé si “ser un programador” es un objetivo en sí mismo, no lo creo; pero “pensar como un programador” viene bien en muchos momentos.

    1. Tengo la misma duda que tú, valoro esa parte de “pensar como programador” pero es una forma de analizar que muchas veces he encontrado más y mejor en matemáticos, en consultores de negocio…

  3. Felicitaciones. Excelente artículo.
    Me apasiona programar y enseñar sobre el tema, y lo hago cuanto puedo, pero comparto en que hay una visión simplista sobre la práctica.
    Creo que una “visión mítica” similar se observa en la supuesta relación causal entre práctica del Ajedrez e “inteligencia” (y ojo que también me gusta mover los trebejos cada tanto).
    Saludos!

  4. Me encanta la frase “En informática todo es posible con tiempo y dinero”. Esa es la actitud del programador cuando enfrenta problemas y consigue soluciones. Como bien dice Raúl, ·pensar como un programador” es una actitud necesaria y sana para moverse en el mundo de máquinas en el que nos encontramos.

  5. Interesante artículo y muy acertada tu visión, especialmente sobre el esfuerzo que requiere aprender a programar “de verdad” y la idea que tiene mucha gente de que es una forma de ganar mucho dinero.

    Me recuerda a un debate que hubo hace no mucho sobre si todo el mundo debe saber programar o no (disclaimer: el artículo enlazado es de mi blog, pero las fuentes que se citan merece la pena leerlas).

  6. Antonio gran artículo, aunque hay ciertas cosas que pueden llevar a un debate mayor, en concreto el tema de los conocimientos básicos sobre algoritmia en el día a día. Una pena que esté en el trabajo y no tenga tiempo para extenderme :-). Si durante el fin de semana tengo algo más de tiempo comentaré lo que opino (aunque no puedo prometer nada… precisamente estoy haciendo un curso de algoritmos de coursera… ¡no viene mal refrescar y ampliar conocimientos!)

  7. Realmente el hecho de mitificar la figura del programador y presentarlo como una persona con cualidades mágicas quizá sea irreal, pero es preferible mitificar a Bill Gates antes que a los referentes de la sociedad actual.

  8. Magnífico artículo. La programación como una habilidad básica –como, antaño, saber leer y escribir y dominar las cuatro reglas–. Con su punto de creatividad y de imaginación para encontrar soluciones, pero sin mitificar, sin magnificar, sin exagerar lo que debería ser una habilidad más.

  9. Basándonos en puro oferta y demanda, esta claro, que son necesarios BUENOS programadores.

    El problema, es que esta visión que aportas, de que ser programador es una tarea prácticamente sin valor añadido, y no llega mas a allá de una mera integración, es la consecuencia de la visión y orientación que se tiene a la formación y el ejercicio de la profesión en nuestro país. Aquí no hay magia alguna mas que ejercer bien la profesión y ejecutar de forma fiable, algo que no siempre ocurre.

    En este plano, los programadores, como los albañiles, electricistas, o los fontaneros, serán ejecutores de una gran mayoría de herramientas, cada servicio, requerirá de pequeñas personalizaciones y constantes mejoras para mejorar el día a día de las personas, y aquellas personas que por ejemplo, puedan configurar con agilidad escenarios complejos en una hoja de calculo, o formularios de datos avanzados, o herramientas de análisis de información… solo con eso, pueden aportar un gran valor a su empresa, al igual que si conocen ingles, o pueden redactar documentos de forma amena y comercial.

    Pero lo realmente importante, el factor a resaltar de la programación, no es la mera integración sin valor añadido, sino formar realmente a apasionados por su profesión, y por las nuevas posibilidades que brinda la tecnología. La visión sobre estas nuevas posibilidades, sobre la aplicación de tecnologías disruptivas o la ejecución excelente, si que es un alto de competitividad y factor estratégico.

    No paramos de ver día a día, caer a grandes empresas por fallos constantes en la evaluación de la competitividad y planificación tecnológica. Algunos ejemplos claros: Nokia, Adobe, Blackberry.

    Vivimos en una constante evolución tecnológica, que nos brinda de forma continuada enormes oportunidades que para identificarlas, y aprovecharlas, es necesario contar con el mejor talento de programación posible. No solo hay empresas que fracasan, por mala ejecución y planificación de software, lo importante son las que llegan a ser un gran éxito, por implementar soluciones innovadoras de forma exitosa, que satisfagan a su publico.

    En lo básico, por lo tanto, es sano que la gente conozca algo de programación, para que puedan tener una idea de lo que un programador puede hacer por ellos y sus compañías. En lo avanzado, es fundamental motivar a la formación de grandes programadores, que quieran tener una visión mas allá de la mera integración y poder identificar e implementar soluciones disruptivas que resuelvan problemas de la vida real.

  10. Me ha gustado tu artículo, Antonio.
    Respecto a la incorporación de un materia en la educación obligatoria, soy de la opinión que el software (como tú, no llego a visualizar a qué nivel) se incorporará al sistema de enseñanza. Va a ser fundamental. Es igual que aprendemos Física y Química sin necesidad de ser físicos o químicos en el futuro.

    Salu2.

  11. Desconozco la situación de la programación o de la profesión de ing. de sw. en otros países.

    Lo que puedo decir es que aquí, en España, la situación es lamentable. No creo que tenga nada de “cool”. La ing. de sw. se trata de una disciplina totalmente desprestigiada. El idea más extendida es que programar o diseñar (puesto que no existe programación sin diseño) puede hacerlo cualquiera.
    No tiene nada que ver conocer la herramienta con conocer el paradigma. Sin embargo, no parece tener ninguna importancia.
    Por el momento, un ing. en informática es un ingeniero de segunda que muchas veces no se llega a considerar ni como ingeniero.
    Después de 20 años con la titulación de ing. Informático y 7 como jefe de proyectos, esa es a la conclusión a la que he llegado. Tal vez algún día cambie, pero no parece cercano…

    1. El “problema” es que no es lo mismo programar una cosa que otra. Me explico. Casi todos los trabajos de programación, en general, pero especialmente en España son servicios, es decir, son desarrollos internos hechos a medida para empresas. En su inmensísima mayoría, son proyectos repetitivos, en los que además la calidad del trabajo no suele tener mucha importancia. Muchas veces es hacer una única acción (transformar la base de datos X en Y). En este tipo de trabajos, aunque uno sea bueno, no puede “lucirse” y hacer una solución que se perciba claramente como mejor, así que la tendencia es a ir al precio bajo. Viene a ser como Fernando Alonso por la M-30, no va a poder ir mucho más rápido que cualquiera de nosotros. Alguien mediocre te vale perfectamente, así que tampoco vas a apreciar / pagar a alguien bueno.

      Otros trabajos, sin embargo, son productos. En estos trabajos sí hay una diferencia importante en cuanto a lo bueno o lo malo que sea el programador, para tener productos de calidad, así que las empresas intentan (o deberían) tener a trabajadores buenos, motivados y actualizados. Aquí alguien bueno puede verdaderamente aportar mucho más.

      En España el número de productos que se hace es muy pequeño (aunque existe), así que tira mucho del mercado para abajo, tanto en salarios como en percepción. Por mi experiencia (trabajo fuera de España), se nota mucha diferencia si hay un sector dedicado a producto que “agite” el mercado.

  12. Comparto absolutamente tu visión de que la programación es sólo una herramienta.

    En realidad no pasa nada porque haya programadores apasionados con su labor, pero con frecuencia se pierde de vista que lo interesante para la sociedad, y las empresas, es que unas personas puedan comunicarse y colaborar con otras estando en extremos opuestos del mundo, o que una programa de simulación de manejo de aviones facilite que haya mejores pilotos, por ejemplo. Sea con código o sin él. Pero además el éxito de esas herramientas está sujeto a condicionantes comerciales e incluso políticos.

    Lo que suele pasar cuando los programadores no entienden esto es la frustración en la que caen cuando su código técnicamente perfecto, que además es poesía, no tiene valor simplemente porque el producto final no es útil, no interesa, resulta demasiado caro para el público al que va dirigido, ya hay otro producto igual en el mercado o quién sabe qué razón ajena a lo técnico.

    Si no, que se lo digan a los desarrolladores de Windows 8, WebOS u otro fracaso comercial (y puramente comercial) que recuerden.

  13. Sí, el misticismo cae siempre en versiones melancólicas imposibles: especialmente porque la proliferación de lenguajes y tecnologías impide que todo el mundo pueda estar al día de todo: no es aprender inglés y ¡ya!, con una ligera dedicación uno está decentemente al día que un idioma.
    Sin embargo, no se pueden saber todas las matemáticas y no esperarmos que nadie deje de aprender a sumar. O, vaya, a saber lo que es un porcentaje (y te juro que todos los días encuentro gente que no lo entiende ni sabe sacarlos).
    La idea subyacente de “programa o sé programado” no reside en saber programar, sino en la apertura: una cosa es que yo no pueda arreglar el coche porque me faltan conocimientos y experiencia y otra es que yo no pueda recurrir a quien quiera para hacerlo porque tengo el control de la mecánica, es decir, del código.
    Miles de vehículos históricos sobreviven en Cuba gracias a que se pueden montar y desmontar piezas, rehacerlas, cambiarlas de unos coches a otros, etc. etc. Es decir: no tienes que ser mecánico o no muy experto, pero sí saber que puedes cambiar como funciona y decidirlo tú.
    Misticismo, no, pero creo que no se debe desprender – desde luego desde mi ética – el acceso al código a este discurso, porque se le desprende de su esencia: saber lo que es programar y profundizar lo que desees es saber que tienes acceso a que sea programado como tu quieres o necesitas.

    1. Así es: frente a la “visión mítica de saber programar”, muchas veces está la “visión mítica de la tecnología”. Saber programar vacuna contra ésta. Cualquiera con unos rudimentos, por básicos o malos que sean, verá detrás de la tecnología a las personas responsables de su diseño y programación. Personas como tú. El que esto pueda llevar al error de pensar que “tú puedes ser una de esas personas” no me parece tan grave frente a los beneficios.
      Puede haber otros caminos, pero “saber programar”, mínimamente, me parece el más rápido, útil y provechoso contra la mucha más perniciosa visión mítica de que detrás de la tecnología hay magia, y esta pertenece a los hechizeros, que no tienen porqué compartir sus recetas secretas (código).

  14. Dicho todo esto: el vídeo no es más que una campaña para generar vocaciones porque hay escasez de mano de obra en una industria que es la clave de la vanguardia norteamericana en el mundo. Así que a todo el mundo le dicen que es cool saber php o ruby porque trabajarás sentado en una terraza a la que has llegado en un segway.

  15. Para mi aprender a programar en pseudocódigo es más que suficiente para adquirir las capacidades de pensamiento analítico y/o abstracto que se necesita.

  16. Buen contrapunto al hype del vídeo. Aunque entiendo que lo que se busca es que la gente entienda la tecnología, que estará cada vez más presente en nuestras vidas inundando todas sus facetas.

    Yo creo que también hay cierta parte de predisposición mental a esta disciplina, como aquello de dedicarse a ciencias o a letras cuando estudiábamos de peques. Por tanto no espero que toda la sociedad sepa programar en el futuro, pero sí la idea que hay detrás respecto a formalizar un problema y crear una solución. Ahí me parece clave el esfuerzo en esta dirección.

    De hecho, aunque en esto sólo se puede incidir a largo plazo, también necesitamos reorientar nuestra población…menos trabajadores de la construcción y más ingenieros, diseñadores y otras profesiones vinculadas a la tecnología.

Los comentarios están cerrados.