Una reflexión rápida sobre la situación de la informática.

Hace tiempo que quería escribir sobre este tema, y una discusión en el canal de Slack de BCNEng ha sido la mecha que me ha animado a escribir y reflexionar sobre nuestra profesión, sobre si es necesario regularla o sobre la utilidad de un colegio de Ingenieros Informáticos.

Por una parte están los que piensan que hay que regular la profesión e impedir que cualquiera pueda ejercer como Ingeniero Informático y por otra parte hay gente con una visión liberal que cree que podemos y debemos controlarnos a nosotros mismos.

Changas

Seamos honestos, a día de hoy nuestra profesión es un cachondeo.

Esto puede sonar muy brusco, pero es que la Ingeniería Informática, y concretamente la programación tal y como la conocemos hoy en día, ¡no tiene ni 30 años! Cada día estan surgiendo nuevas herramientas y metodologías que cambian totalmente nuestra forma de trabajar.

Estamos aprendiendo, no hay nada malo en reconocerlo. Somos los primeros programadores de la historia, y es comprensible que nuestro día a día este lleno de chapuzas y changas. La cuestión es si hacemos lo suficiente para cambiarlo o estamos cómodos con la situación.

El pasado

Para ponernos en contexto, podemos poner como ejemplo un campo tan establecio y respetado como la medicina, concretamente, la cirugía.

En los siglos XIII y XIV los cirujanos no eran considerados médicos y generalmente era al barbero (o, mejor dicho, el cirujano-barbero) al que se acudía para, entre otras cosas, quitarte el exceso de sangre o a romperte un cacho de craneo para aliviar tus dolores de cabeza.

Durante esta época coexistian los cirujanos-universitarios, también llamados de “bata larga”, con los cirujanos-barberos. Estrictamente hablando, los primeros eran unos intrusos laborales excediéndose de sus funciones. Pero a la gente le daba exactamente igual, dado que independientemente de que fuese un cirujano o un barbero el que te atendía, el resultado iba a ser un desastre parecido.

Con el tiempo, la profesión de cirujano fue evolucionando y sus técnicas y estudios se fueron volviendo más formales y efectivas.

Irónicamente, fue un barbero, y no un médico, uno de los padres de lo que hoy conocemos como cirugía moderna. Y aunque a partir de los siglos XVII y XVIII se empiezan a fundar escuelas en España, no fue hasta 1857 cuando por primera vez se regula la profesión de cirujano, expulsando a los barberos y eliminado las enseñanzas de cirugía menor.

Hoy en día, aunque algunos reemplazan a los médicos por pseudo-profesionales que tratan enfermedades con agua y azúcar, independientemente de lo que diga la ley, a nadie se le ocurre ir a operarse a un barbero porque sabemos que un cirujano, por el mero hecho de serlo, va a hacerlo mejor gracias a sus estudios basados en más de 500 años de profesión.

El presente

Ya no estamos en el siglo XIII, tenemos un método científico, unas matemáticas desarrolladas, muchas otras ingenierías de las que tomar ejemplo y, sin embargo, seguimos siendo unos changas. Hemos llegado a un punto en el que se habla de fallo informático como si se tratase de algo etéreo e irremediable y donde rara vez se buscan responsables.

Esto es especialmente sangrante en la administración pública, donde no hace falta ni que el software falle para darnos cuenta que algo estamos haciendo terriblemente mal.

Pensemos en el caso LexNet: una herramienta que ha costado más de 7 millones de euros con grandes fallos de seguridad y que en 2017 recomienda no actualizar al “nuevo” java 1.9. O la web de Renfe que hace una década ya llevaba quemados 80 millones de euros y que hoy en día sigue siendo complicada de utilizar desde un teléfono móvil.

Ni siquiera las empresas con los mejores programadores del mundo se libran de esta maldición. En Octubre de este año saltaba la noticia de que Google cerrará su red social por fallos de seguridad.

Aun sabiendo todo esto, yo me mantengo optimista. Creo que evolucionaremos, y al igual que ocurrió con los cirujanos, las empresas solamente querrán contratar Ingenieros Informáticos porque el hecho de tener un título garantizará un trabajo de calidad (uno de los problemas que tenemos hoy en día es que el título es papel mojado y no es garantía de nada, llegando a hacer que empresas cómo Facebook eliminen cualquier requisito académico y pongan sus propios “exámenes” para evaluar a los candidatos).

Por suerte, hasta ahora no había (demasiadas) vidas en juego en todo esto, y un software de mierda causaba como mucho frustración en los usuarios. Sin embargo, las cosas están cambiando y cada vez dependemos más del software en nuestro día a día, por lo que es nuestra responsabilidad pisar el acelerador y empezar a hacer las cosas mejor lo antes posible siendo el primer paso ser conscientes del problema.

El futuro

Por desgracia, no hay una solución sencilla y tenemos un mogollón de agentes implicados, cada uno con sus propios intereses y todos igual de perdidos. Por otro lado, me atrevo a decir que serían más felices en un mundo con una Ingeniería Informática consolidada y bien considerada, pero mientras eso no ocurra, nos toca hacer autocrítica y preguntarnos qué podemos hacer para mejorar.

La universidad

Todo empieza aquí, la universidad es la “culpable” de que a las empresas no les importe el título a la hora de contratar.

¿Por qué pasa esto? Algunos dirán que es que la universidad está desconectada de la empresa y es algo que suscribo totalmente. La universidad y la empresa son mundos aparte, y creo que así debería ser. La universidad tiene que ser un centro de conocimiento a largo plazo, no un cursillo de formación al servicio de la empresa. Para eso ya existe la formación profesional. Si fuera por algunas empresas, con la excusa de la empleabilidad estaríamos estudiando el framework JavaScript de moda en lugar de estadística.

Esta discusión no es nueva. Yo, que fui representante de estudiantes, asistí a una junta sobre el plan Bolonia, donde un profesor que defendía esta clase de argumentos llegó a decir que habia que bajar el nivel de cálculo porque “eso ya lo haces con excel”.

Dicho esto, aunque sobre el papel mi plan de estudios está bastante bien, mi formación ha tenido grandes carencias y tenemos mucho margen de mejora.

En general, las asignaturas “clásicas”, donde los contenidos están más asentados y no varían con el tiempo, como cálculo, álgebra o algoritmos, están bien pensadas y dadas, mientras que las que llamaré “modernas” tocan temas en constante evolución y, como alumno, dependes de que el profesor esté al día.

Desgraciadamente, en mi experiencia muchos profesores no lo estaban y acabé estudiando cosas orientadas al mundo laboral de hace 30 años. No puede ser que se siga dando el proceso unificado de software y ni se mencione el concepto de Agile, que en las prácticas de programación web no exista el concepto responsive, nada de HTML5 o que ni se hable de testing automático.

Llegados a este punto, tenemos las siguientes opciones entre las que tenemos que buscar un equilibrio: O dar solamente asignaturas “clásicas” cuyos conocimientos adquiridos no caducan, sacrificando la empleabilidad y formando graduados que no sabrán hacer una simple web, o forzar a los profesores a mantenerse al día de lo último de lo último en cada campo. Aun suponiendo que logremos esto, la mayoría de contenidos estarán caducos a los pocos años y será responsabilidad de los egresados mantenerse al día.

Para mí, el gran problema, el problema de verdad, es que se ignoran totalmente las buenas prácticas de programación. En toda mi carrera tuve 2 asignaturas centradas en la programación, que fueron un absoluto desastre, y en el resto de asignaturas programar pasó a ser algo secundario mientras el mensaje que llega a los alumnos al hacer prácticas era:

“Haz cualquier changa que funcione más o menos para la entrega. Ni vamos a leer el código, ni nos importa.”

Nos guste o no, normalmente el trabajo de un informático va a ser como programador. Si los Ingenieros Informáticos no van a aportar ninguna ventaja respecto a un teleco, un ingeniero industrial o un barbero a la hora de programar, no podemos quejarnos de intrusismo, y nuestro título no va a suponer ninguna diferencia para las empresas que, recordemos, buscan programadores.

Las empresas

Las empresas tienen un papel fundamental en toda esta trama. Si la universidad va 30 años por detrás de las empresas, las mayoría de empresas van 10 años por detrás de la realidad.

En España hay muchísimas empresas que han adaptado el modelo de la construcción a la informática, inventándose cargos como “Analista, Jefe de Proyecto y Programador”, perpetuando el mensaje de que la programación es algo secundario y que con el tiempo lo normal es dejar de programar y convertirse en “arquitecto”. Mientras este mensaje perdure y la gente reste valor a los picateclas que prefieren programar, será imposible avanzar.

Creo que es hora de romper con este modelo y pensar, por ejemplo, que la programación se parece más a la agricultura que a la arquitectura, y que por mucho que hagas mil planes sobre cómo crees que van a crecer las plantas, a la hora de la verdad todo cambia, y es necesaria gente con cabeza a pie de campo tomando decisiones inteligentes.

Lo curioso es que aun incumpliendo plazos frecuentemente y generando código de dudosa calidad, sigue siendo un modelo tremendamente lucrativo. Como no hay una regulación, puedes facturar las horas de trabajo como te dé la gana y vender a un recién titulado como un “experto en califragilística”. Además, ¡cuanto peor programen tus becarios, mejor! Más tiempo llevará el proyecto, más personal será necesario, más horas facturadas por arreglar errores y por lo tanto, más beneficios.

Además, todo vale, da igual que tu software funcione fatal o que sólo funcione en IE8 con Windows XP. No hay un marco legal que defina formalmente qué es y qué no es una changa, por lo que es inútil reclamar, haciendo que el software de mierda sea un negocio todavía más redondo que, estoy seguro, sería mil veces más rentable con buenos programadores.

La administración pública

Aquí tenemos al elemento más desactualizado y desinformado de toda la cadena. Siendo honestos, va mejorando poco a poco, y ya se pueden empezar a hacer algunos trámites digitales con dignidad, pero sigue teniendo mucho que avanzar.

Lo primero que tiene que hacer la administración es planearse por qué sus aplicaciones son las peor valoradas por los usuarios, aunque pongan unos requisitos bastante estrictos en la licitación de los proyectos que, por cierto, casi siempre suelen adjudicarse a empresas de las mencionadas anteriormente.

Puede que una mayor regulación ayude a solucionar el problema, pero en el caso de que se haga mal, va a ser mucho peor el remedio que la enfermedad. Yo personalmente creo que es difícil en este punto crear una regulación efectiva, dado que ni nosotros mismos sabemos la forma óptima de hacer las cosas, y al final lo único que conseguiríamos es ralentizarlo todo todavía más. Por poner un ejemplo exagerado siguiendo los tiempos de la administración pública, no sería raro que por ley las aplicaciónes de hoy en día tuviesen que estar desarrolladas con JavaScript con jQuery y Backbone.

En mi opinión, publicar una regulación a día de hoy sería cómo si los cirujanos de la época legislasen sobre la forma correcta de colocar sangijuelas. Creo que lo primero que tenemos que hacer es avanzar, y una vez tengamos clara la forma correcta de hacer las cosas, legislar para que todo el mundo las haga bien.

En lugar de poner límites prematuramente, la administración tiene que ayudarnos a evolucionar y aprender junto a nosotros cómo dejar de ser unos chapuzas. Sin embargo, repasando por encima la Agenda Digital de España y sus objetivos no he encontrado ninguna mención a algo que tenga que ver con reducir el número de changas en el software.

Además, pequeñas cosas como obligar a que los desarrollos contratados sean de código abierto, dar bombo a un repositorio nacional centralizado que evite contratar el desarrollo del mismo software 1000 veces, o impulsar políticas de datos abiertos con formatos realmente estandarizados ayudarían a dejar de perder tiempo reinventado la rueda y permitirían destinar esos recursos a mejorar la calidad del software.

Los programadores

Los programadores somos, en última instancia, los reponsables de todo esto, y al final somos los únicos que pueden cambiar la situación. Debemos asumir nuestra responsabilidad, entender que nuestra profesión evoluciona cada día y que lo mínimo que deberíamos hacer a cambio de un paro inexistente es tratar de mantenernos al actualizados y colaborar con la comunidad.

Tenemos que empezar a ser serios y entender que nuestro trabajo va a afectar cada vez a más sectores críticos de la sociedad. Ya no estamos en la edad media, existen las matemáticas, el método científico, tenemos Internet para consultar información fiable y, a pesar de todo esto, seguimos copiando y pegando código de StackOverflow a ciegas y escribiendo reglas CSS aleatoriamente hasta que alguna funciona. Muchos de nosotros ni nos hemos molestado en saber cómo funciona el lenguaje en el que programamos cada día, ¡los hay que han aprendido solamente viendo tutoriales de YouTube! ¿Os imagináis a vuestro médico formado íntegramente a base de tutoriales en YouTube? La gente nos lo permite porque no tiene alternativa, pero somos barberos operando sin lavarnos las manos.

Me gustaría terminar con un texto de Nikita Prokopov sacado de su artículo “Desencantado con el Software”, que trata este tema y en el que hace un manifiesto por un mundo mejor al que me quiero suscribir.

I want to see progress. I want change. I want state-of-the-art in software engineering to improve, not just stand still. I don’t want to reinvent the same stuff over and over, less performant and more bloated each time. I want something to believe in, a worthy end goal, a future better than what we have today, and I want a community of engineers who share that vision.

What we have today is not progress. We barely meet business goals with poor tools applied over the top. We’re stuck in local optima and nobody wants to move out. It’s not even a good place, it’s bloated and inefficient. We just somehow got used to it.

So I want to call it out: where we are today is bullshit. As engineers, we can, and should, and will do better. We can have better tools, we can build better apps, faster, more predictable, more reliable, using fewer resources (orders of magnitude fewer!). We need to understand deeply what are we doing and why. We need to deliver: reliably, predictably, with topmost quality. We can—and should–take pride in our work. Not just “given what we had…”—no buts!

I hope I’m not alone at this. I hope there are people out there who want to do the same. I’d appreciate if we at least start talking about how absurdly bad our current situation in the software industry is. And then we maybe figure out how to get out.



#no_more_changas