Programación. ¿Ciencia o Ingeniería?

mar 09 2012 Published by under Ciencia, Pensamientos

Cuando inicié este blog, además de servir de soporte a algunos artículos técnicos sobre programación que fueran más o menos novedosos, también me movió la idea de aportar reflexiones sobre algunos temas interdisciplinares que constantemente me hacía debido a mi formación científica y que he ido acumulando durante todos estos últimos años. Creo que es momento de empezar con ellos…

En busca de la materia gris

Todavía persiste el mito de considerar que un informático es una especie de chamán que con unos cuantos pases mágicos delante de una pantalla es capaz de hacer que un ordenador tome vida. Muy pocos asumen que un informático pueda tener una formación científica o técnica seria que se encuentre al mismo nivel que un médico o un ingeniero. Y así nos van las cosas.

No tomarse en serio la formación de un informático está llevando a que muchas empresas del sector no valoren suficientemente la destreza de sus empleados. Asumen que siempre podrán encontrar nuevos empleados a los que poder darles una pequeña formación suficiente para encargarse de cualquier proyecto que tengan en marcha. Si supieran un mínimo de ingeniería, sabrían que siempre hay un límite en todo proyecto en el que añadiendo más recursos nunca se consigue acelerar el desarrollo, si no más bien lo contrario. Momentos de dificultad que desemboca en una crisis1, donde prima más la experiencia que la cantidad de manos disponibles.

La actual crisis económica ha venido a agravar más el panorama al minusvalorar aún más a los profesionales de informática. Los buenos profesionales optan por emigrar a otros países donde sean mejor considerados, mientras que aquí las empresas compiten bajando más y más los precios, sin tener en consideración ni la calidad ni la idoneidad del producto que desarrollan.

Estamos inmersos entre sistemas informáticos y de telecomunicaciones que se están colapsando debido a malos diseños y falta de mantenimiento, con usuarios que asumen por normal que un sistema pueda fallar, que los virus puedan entrar hasta las entrañas del ordenador, o que un hacker pueda bloquear cualquier sistema gubernamental y robar identidades,… y lo único que importa a los responsables es que alguna empresa sin escrúpulos asuma la culpa por el menor precio posible.

El fin de la ley de Moore

Es sabido que por la Ley de Moore en estos 50 años pasados, se estaba cumpliendo que cada dos años los ordenadores doblaban su velocidad, mientras se hacían cada vez más y más baratos. Como consecuencia, las aplicaciones mal diseñadas aún se podían sobrellevar gracias a la reducción de costes y mejoras de velocidad que ofrecían los nuevos sistemas.

Lamentablemente, la ley de Moore llega a su final. Se intenta prorrogar su vigencia metiendo más cores en cada cpu, pero si bien se sigue contando con procesadores más baratos y más rápidos, un sistema multicore no es aprovechable por una aplicación mal diseñada. Para aprovechar una cpu multicore, se requiere de nuevas aplicaciones diseñadas específicamente para ellos. Hoy en día, muchos sistemas operativos sólo son capaces de aprovechar un core de todos los disponibles, lo que no deja de ser un engaño para el usuario que piensa que debería ir todo más rápido. Estamos muy cerca de una nueva crisis similar a la crisis del software, pero con hardware esta vez.

Es una burbuja que pronto va a estallar como tantas otras antes.

Poner en valor al programador

Hace tiempo que se perdió el significado de ser un “programador”. Con ese nombre se ha pasado a denominar un puesto técnico de trabajo que está por debajo de analista y un poco por encima de reparador de hardware. Nada que tenga qué ver con un trabajo metodológico y, en cierta medida, creativo.

Y, sin embargo, contar con buenos programadores debería ser parte del activo de una empresa que la ponga en valor. No es entendible que haya empresas que busquen programadores después de haberse comprometido con un proyecto de desarrollo. Debería ser más bien al revés, que para conseguir un proyecto se haya valorado antes qué programadores dispone la empresa en nómina.

Puedo asegurar que hay alguna empresa que cuenta con un núcleo de buenos programadores, normalmente gente joven que montan su propia empresa, que nunca les falta trabajo. Pero son mucho más numerosas las empresas vacías que se dedican a quemar sistemáticamente a toda su plantilla en proyectos difíciles de asumir sin la gente y los medios adecuados.

Contar con programadores experimentados no es tarea fácil. Toda empresa debería asegurar a sus programadores más valiosos, nunca deberían considerarlos inferiores a analistas, ya que asumen roles distintos. Un buen programador puede ser un pésimo analista y viceversa. Un buen programador debería estar bien pagado simplemente como programador, y no verse presionado para ser analista si quiere ascender y cobrar más.

Programación. ¿Ciencia o Ingeniería?

Según donde busques, la programación es parte de la Ciencia de la Computación o es parte de la Ingeniería del Software. Personalmente, me inclino más por que sea una ciencia. Un buen programador siempre intenta comprender el funcionamiento de un programa con el fin de crear nuevos y mejores programas. Usa un ciclo de análisis, desarrollo, prueba y refactorización que tanto se parece al “método científico”, experimentando hipótesis hasta dar con una solución. La ingeniería entraría cuando se requiere que la aplicación se ajuste a determinados requisitos, donde a veces no importa tanto la optimización del programa como el que se ajuste su funcionamiento a los parámetros requeridos.

¿Es posible buscar la belleza entre líneas de código? ¿Evolucionamos hacia mejores lenguajes de programación?

Temas para próximos artículos.

6 responses so far

  • Angel García Cuartero

    Hola, Chema, al respecto de tu artículo, no sé si viste esta charla: http://www.confreaks.com/videos/282-lsrc2010-real-software-engineering

    Me parece muy interesante lo que comentas, también en mi blog escribí algo sobre el tema pero con un tratamiento más ligero.

    • http://ch3m4.org/blog Chema Cortes

      De momento sólo he podido escuchar el principio, pero veo que también trata de lo hablado en mi artículo. Coincido también en que muchas veces que quien habla de “ingenería de software” no sabe ni de ingeniería ni de software; sólo habla de cubrir “formularios” y cálculo de costes.

      Puede que algún día escriba algo sobre las “Metodologías Ágiles”, y porqué sólo son entendidas por los programadores con experiencia.

  • http://joedicastro.com joe di castro

     Chema, coincido contigo en que la profesión de “informático” (entiéndase informático como podría entenderse médico, aunque se parezcan tan poco un podólogo y un neurocirujano, más allá de unos conocimientos generales comunes) en general esta totalmente desamparada en nuestro país. Desde mi perspectiva de administrador de sistemas observo que existen paralelismos en todos los temas que abordas bajo el paraguas de la figura del programador que se pueden extender a prácticamente todas las ramas profesionales que están relacionadas con el mundo de la computación.

    Y aunque considero que el “status quo” es lamentable, incluso en un futuro inmediato la tendencia nos indica que nos dirigimos a una situación aún más deplorable, creo que a medio y largo plazo la situación va a cambiar dramáticamente, pero con un futuro bastante esperanzador para los “supervivientes” de la quema.

    Me explico, creo que estamos viviendo una época de transición similar a la de los 70/80 cuando la micro-informática surgió de forma arrolladora (dejando atrás a los grande mainframes) siendo abrazada por el gran público, lo que conllevo al principio del declive a nivel mundial del estatus de los hasta entonces muy respetados profesionales. La entrada de aquellas máquinas en los hogares propicio que por un lado se le fuera perdiendo el miedo a el hasta aquel entonces, gran misterio al alcance de unos pocos, y por el otro que con el sucesivo incremento en el número y en la facilidad de uso de aplicaciones, se le fuera perdiendo el respeto a una más que digna profesión. A partir de ahí, todos sabemos a donde hemos llegado. Pues ahora creo que estamos inmersos en un proceso que de continuar en la actual tendencia, supondrá una revolución similar que a medio/largo plazo, supondrá una involución en la profesión, hasta llegar a un estatus parecido al que ostentaba en la época de los mainframes (salvando las distancias).

    Y cuidado, estoy hablando de número de profesionales, de especialización y de cierta recuperación del status social. No hablo de elites, ni mucho menos, creo que hoy en día esto se podría decir de muy, pero que muy pocas profesiones. Creo que vamos hacia un futuro con muchísimos menos profesionales, mucho más especializados, más formados y más respetados a nivel general. Y también creo que el panorama se centrara en unas cuantas grandes empresas y en número notable de freelances (o “artesanos”) y pequeñas empresas con profesionales muy cualificados. Creo que la era de las “granjas” que producen “morcillas” con demasiada “grasa” y poca “carne” en cantidades industriales, acabara llegando a su fin.

    ¿Y a que debo semejante reflexión? A como está evolucionando el mercado a pasos agigantados, y a fin de cuentas, el mercado creo está situación inicialmente y el mercado va a cambiarla. Actualmente los ordenadores están comenzando a pasar de ser una maquina para la creación a una maquina para el consumo puro y duro, de ser una herramienta a ser un canal, un medio. La evolución de los smartphones, de las consolas y el triunfo de gigantes del marketing como Apple (hace mucho que dejo de ser una empresa de informática para ser una plataforma de la industria del entretenimiento) ha cambiado, probablemente para siempre, la informática tal y como la conocíamos. Ahora se busca domesticar a la bestia, y simplificarla de tal modo que sea tan aparentemente sencilla de utilizar (vaya si podemos manejarlo todo con el dedito) que el cliente final pase de intentar emplear la maquina para crear nada a pasar directamente a consumir productos listos y acabados para su disfrute (tanto aplicaciones como productos multimedia). Se trata de convertir a la maquina interactiva por excelencia en poco más que en un simple televisor, con la diferencia de que aparentemente podemos elegir lo que queremos hacer (vamos, que podemos cambiar de canal con el mando…). Solo hay que ver las tendencias que las grandes alternativas al mundo ‘chic’ de Apple, como son MS y Ubuntu, han trazado para sus SO, un paso más para reducir la informática a las pequeñas y medianas pantallas (smartphones y tabletas) antes de la implantación de la Smart TV como último paso para desterrar al tradicional PC de los hogares para siempre. De lo que se trata es de tener a consumidores entretenidos que por muy idiotas que sean, con la simple ayuda de sus falanges, sean capaces de tener una satisfacción inmediata de sus deseos, después del previo pago de los mismos. Se acabo eso de emplear horas delante de una pantalla con complejas aplicaciones y tantos quebraderos de cabeza. Y para los más inquietos o con necesidades profesionales poco complejas, ahí estará la nube salvadora, que previa cuota mensual les servirá su plataforma para que procese y almacene cómodamente allí sus datos.

    Y no nos engañemos, esto es lo que busca el usuario medio del PC desde el principio de los tiempos. ¿Y donde nos dejará esto? Pues nos abrirá una brecha que con el tiempo será inmensa entre creadores y consumidores. Y al ritmo que avanza esta profesión, muy pronto la distancia entre unos y otros será la misma que tenemos el público general con un neurocirujano. Ellos ponen la cabeza y nosotros vamos de cráneo, y que virgencita que me quede como estoy… Vamos, que cada día tenemos más divulgación de ciencia y medicina, conocemos más de nuestro cerebro, e Internet nos ayuda a “entender” a nuestro médico, pero a ver quien es el guapo que le pide a su amigo aficionado a las series de medicina, que le arregle un aneurisma o se atreva a examinarle la duramadre a su vecina cachonda del quinto. Pues lo mismo acabara ocurriendo con la informática, y creo que antes de lo que nos podríamos imaginar.

    Esto de un modo u otro acabará afectando a la profesión irremediablemente. De hecho ya está sucediendo, por la parte que me toca, cada vez se habla más de DevOps y menos de SysAdmins. Se trata de que seamos profesionales completos que tengamos una visión global del sistema y que tengamos los conocimientos suficientes de programación para poder integrar todos los ámbitos: hard, SO y software final en un conjunto más eficiente y armonioso. Básicamente, y en parte gracias a la nube y el desarrollo web, se trata de que tanto el hard y el SO estén supeditadas a las aplicaciones, y no como hasta ahora, que se gestionen como reinos de taifas independientes (y cuando no, rivales). Por otro lado, cada vez se necesitaran menos profesionales (la concentración y externalización de servicios) y los menos capacitados, tarde o temprano, acabarán siendo relegados de la profesión, como ya ocurrió en el pasado con los profesionales de los mainframes que no supieron adaptarse al paradigma cliente-servidor y a los nuevos lenguajes de programación y SO.

    Por otro lado, cada vez es más frecuente que los usuarios empresariales quieran imponen sus relucientes smartphones, tabletas u ordenadores supercool de la muerte (esos que llevan como un anuncio de neón en la tapa) particulares en la empresa. Con todas las consecuencias a nivel de gestión y de seguridad que eso conlleva. Y con frecuencia suelen ser el mismo tipo de usuarios con el poder de decisión suficiente para hacer de la vida de los responsables de sistemas un infierno, los que quieren que todo funcione como la seda y que al mismo tiempo se esfuerzan en dinamitarlo a conciencia. Algo que ya comienza a perfilarse como un grave problema unido a los ya problemáticos portátiles no cifrados que se utilizan fuera del ámbito empresarial y los pendrives de varios gigas a los que debes permitir conectarse a ciertos ordenadores de la empresa. Básicamente, que la decisiones de informática en muchas empresas fluyen frecuentemente en una sola dirección, es decir, se les dice, pero no se les escucha. Esto inevitablemente, conducirá a una situación inasumible, que no tendrá más remedio que establecer unas fronteras claras entre la informática profesional para los procesos más complejos y una comodotización de las labores más mundanas, acercando al PC actual a algo similar a una herramienta ofimática más como lo fue la calculadora o la maquina de escribir electrónica en su día. Probablemente empleando la nube para una versión moderna de los terminales tontos conectados a un mainframe.

    Seguirá habiendo nichos profesionales donde el PC continuara siendo herramienta imprescindible y profesionales avanzados con conocimientos profundos de las herramientas que empleen para tal fin, pero que posiblemente huirán de la complejidad en las demás tareas, que delegaran en tablets o herramientas similares con utilidades asequibles con funcionalidades muy concretas.

    ¿Y los compañeros del metal? que haremos? Bueno, cada vez veo que los que vivimos esto como una pasión, seguimos aprendiendo día a día, y al mismo tiempo, muchos estamos haciendo una regresión, un “back to the basics”, huyendo de las aplicaciones cool llenas de pirotecnia y artificio, para volver al core, a la consola, a lo sencillo y simple que funciona y nunca nos deja tirados. Concretamente en el caso de los servidores, mientras vemos como el público general flipa con los colorines, el “orangután glass” y las pinturas de dedo, un gigante como MS claudica y clona ya sin descaro alguno las herramientas y el “way of life” de UNIX, lanzando una versión servidor sin entorno gráfico y una consola con cada vez más “power”. Incluso muchos programadores, sobre todo Web (que será el gran nicho de mercado en el futuro), están volviendo a herramientas básicas y con muchas décadas como la consola y los editores de texto como vim o emacs y huyendo de los complejos y pesados IDEs. Y por otro lado, se observa una corriente en crear aplicaciones más sencillas, menos pesadas y orientadas a una función concreta. Claro que la gran mayoría sigue en la inercia del inmenso, pesado y complejo universo de las ventanas y sus sistemas, pero incluso la casa madre está cambiando de rumbo y poco a poco, y torres más altas han caído. Muchos me tildarán de loco si digo que javascript tiene más futuro que C#, pero estoy convencido que la familia .NET pasará a ser el COBOL del futuro. Seguirá teniendo una presencia muy importante, pero en ámbitos muy concretos y alejados de la tónica general.

    Muchos no lo recordarán, o lo recordarán de otra forma, pero aunque el IBM PC fue toda una revolución en su momento y tuvo un impacto relativo en las empresas, no fue hasta que el gran público lo introdujo en sus hogares, que este sé ganó su lugar definitivo en la empresa, cuando los ejecutivos que lo tenían en su casa, querían tener algo igual en su empresa. Fue un proceso de abajo hacia arriba en la mayoría de los sectores, exceptuando casos muy concretos como la banca u otros que ya tenían experiencia con la macro-informática. Yo siempre he dicho que la nube (al igual que otros intentos anteriores de servicios remotos) no tenía mucho futuro, pero a la vista de la evolución de la informática domestica, creo que si, que estaba equivocado, que tiene su cuota de mercado en el futuro.

    Creo que una vez más, se repetirá el proceso y serán los usuarios quienes una vez más, impondrán la revolución de la informática en la empresa. Algo que por otro lado, lleva protagonizando los sueños húmedos de gigantes como los de Cupertino y Redmond durante muchos años. Por fin podrán cobrar por la informática como un servicio controlando desde sus tiendas de Apps y sus SOs al servicio de las mismas. Y, definitivamente, nunca, nunca… será el año de Linux en el escritorio, seguirá reducido a un público muy concreto, los hackers (en el sentido  original de la palabra), aunque paradójicamente estará más extendido que nunca como plataforma básica para dispositivos digitales (entiéndase como dactilares) para todos los públicos.

    Si has llegado hasta aquí, te felicito por tu paciencia…

    • http://ch3m4.org/blog Chema Cortes

      Lo primero, darte las gracias por el extenso comentario. Por lo que veo, confías más en el brillante futuro de la informática como bien de consumo que en el pesimista futuro de la programación como profesión que daba en mi artículo.

      Reconozco que en ésto, tengo razones para ser pesimista. Desde mis comienzos como programador de macintosh (1985) con conexión a un VAX, pasando por multitud de lenguajes de programación y sistemas operativos, hasta la abundacia de ahora de sistemas conectados con todo tipo de dispositivos, siempre he visto considerar a los programadores como “piezas sustituibles”. Buena parte de la culpa, tal como dices, puede que esté en que el boom del ordenador personal posibilitó la gran abundancia de mano de obra “cualificada” y que es posible que en un futuro cercano se diferencien mejor consumidor y creador (tal como ya pasa en los videojuegos).

      Pero no se justifica el modo de actuar de algunas empresas que parecen ganar más del fracaso de sus proyectos que del esfuerzo que requiere tener un equipo de buenos programadores con el que sacar adelante el proyecto. Si vale el simil, de la popularidad del fútbol a todos los niveles, ahora todos los chavales quieren ser “futbolistas”; pero nadie sustituiría a Cristiano por cualquier chaval de la calle razonando que, al fin y al cabo, cualquiera sabe darle patadas a un balón. Sin embargo, algo así es lo que pasa con bastantes empresas, sólo que en lugar de echar al entrenador cuando pierden partidos, piensan que bastará cambiar todo el equipo por nuevos jugadores para volver a venderse como empresa competitiva. Y lo que es aún peor: hay clientes que se lo creen y vuelven a contratarlos porque son los más “baratos”.

      Me reconforta ver que no todos somos igual de pesimistas. Ojalá que algún día podamos ver programadores tan valorados como los neurocirujanos o, al menos, que sean tan cotizados como los pioneros de los videojuegos.

      • http://joedicastro.com joe di castro

        Yo creo que el lamentable status que los programadores (y la informática en general) tienen en esta país se asienta principalmente en tres pilares:

        1. La visión del empresario de las TI
        2. El modelo económico de las “factorías de software” (aka cárnicas)
        3. La idiosincrasia propia del pueblo español

        Me extiendo sobre cada uno de los puntos anteriores.

        1. Generalmente el empresario español ve al departamento de TI (cuando es un departamento) como un mal necesario o como un gasto. Algo que saben que necesitan para su negocio, pero de lo que prescindirían gustosamente si pudiesen. Muy pocos lo ven como una inversión, menos aún como parte natural e imprescindible de la lógica de sus procesos y menos aún consultan a TI para la toma de decisiones empresariales. Una buena mayoría siguen pensando que es algo que puede hacer milagros presionando cuatro botones, pero que la mayor parte del tiempo no hace más que darle innumerables problemas. Focalizan el problema en la mala suerte que creen haber tenido de topar con profesionales tan torpes a los que trata como si tal fueran.

        Son a su vez los mismos que no dudan un segundo en sacarse el problema de encima externalizando el servicio en las consultoras TI.

        1. Las consultoras españolas de TI han adoptado en buena parte el modelo más “extremo” y “radical” de las peores consultoras americanas. Estas basan su negocio en una economía piramidal, donde los socios ganan enormes sumas de dinero a costa de muchos peones en la base de la pirámide, haciendo cantidades ingentes de horas de forma sistemática y con unos escalones intermedios compuestos de hábiles y descarados “comerciales”. La cultura de la empresa se basa en alimentar la ambición de los mas, digamos desenfadados, y explotar a los más honestos. La manera de alimentar esto de forma continua es construir sistemas “imperfectos”, lo único que importa es facturar y conseguir contratos, a ser posibles de larga duración. Para mantener a la gran masa trabajando de forma enfurecida, se les pasa por delante de las narices de forma absolutamente descarada, los privilegios y beneficios de los que gozan los escalones superiores de la pirámide y que podrán llegar a alcanzar si se dejan el culo por la empresa. De esto modo, en este perfil de empresa, el objetivo para con el cliente pasa a segundo plano, el primero objetivo es facturar horas hombre, y un programa que funciona, deja de facturar esas horas en cuanto se termina.

        Ahora mismo se esta emitiendo una serie en Estados Unidos, “House of Lies”, que toca el tema de las consultoras de negocio en plan desenfadado y sarcástico, pero dejando a relucir la total falta de ética y moral que algunas han demostrado en las últimas décadas.

        1. Por otro lado, tenemos la losa de la historia que pende sobre nosotros. No es que en las demás partes del mundo occidental sean mejores que nosotros, pero si que hay una clara diferencia entre los países católicos y los que son calvinistas, luteranos, anglicanos, etc… Y nosotros somos sistemáticos a la hora de repetir nuestros errores, los mismos que nos hicieron pasar de ser la nación más poderosa del mundo a acabar varias veces en la bancarrota… Somos capaces de luchar de forma encarnizada y hasta la muerte por nuestro orgullo, pero mostramos una absoluta indiferencia por los temas más cruciales para nuestro destino. Despreciamos de forma generalizada temas como la cultura, el conocimiento, etc… Somos un país donde los mediocres ejercen un corporativismo feroz y desalmado, donde el talento es marginado y enterrado con demasiada frecuencia. Donde el clavo que sobresale se lleva todos los golpes. Nuestra clase política actual es un buen ejemplo de nuestro carisma. Ojalá algún día seamos capaces de sacudirnos nuestros complejos y dejemos de ser una nación exportadora (o cercenadora) de talento. Y que aquel, “que inventen otros”, deje de estar de plena actualidad. Nos gusta demasiado coger siempre el camino fácil.

        Por eso, creo que esos aparatitos tan “facilitos” de usar, que tanta acogida están teniendo entre nuestras elites políticas y empresariales, me temo que pueden acabar siendo la solución a los problemas de la informática en este país. Si es que queda alguno para llenarlos de contenidos, claro. Porque también es cierto que si el modelo que triunfa es el de Apple, es muy posible que podamos perder la oportunidad de darle una industria como dios manda a los grandisimos profesionales que aquí han nacido (muchos ya se han ido).

  • http://ch3m4.org/blog Chema Cortes

    Como último pensamiento sobre el tema, recomiendo leer este artículo sobre la lamentable situación de los profesionales de la informática en España: http://bbc.in/HWbARN