La ingenieria informática

Estaba contestando un post de Galli y la respuesta me ha salido interminable, así que lo he convertido en un articulo.

Yo nunca me he imaginado la profesión de programador similar a la de arquitecto, ingeniero de caminos, ingeniero industrial, etc. Siempre he considerado un error garrafal separar el desarrollo del concepto de su producción, es cierto que la implementación tiene diferentes niveles de abstracción y que seguramente se requieren conocimientos del dominio que no pueden estar en posesión del desarrollador y que por tanto se deberá colaborar con otros expertos, pero no a alguien que crea un plano y otro que lo ejecuta de forma totalmente inconexa; a grandes rasgos yo identifico más a la informática con la práctica sanitaría. Espero ser capaz de explicar mi punto de vista.

La medicina tiene muchísima información y conocimiento sobre el cuerpo humano su estructura y funcionamiento, su misión es hacer que funcione adecuadamente. Para ello existe un lenguaje formal que permite que dos médicos se entiendan. Ahora viene mi vuelta de tuerca, el programador no es un médico, sino un farmacéutico capaz de generar mediante ese lenguaje formal soluciones a determinadas necesidades, por ejemplo reducir la presión sanguínea de la cabeza que genera dolor. Otro farmacéutico es el que vende esa solución al paciente y el médico que mantiene el hardware funcionando.

Nadie en su sano juicio exigiría al médico que crear un fármaco, por más que usen el mismo lenguaje formal y que la formación de uno y otro sea similar, nadie espera de una empresa farmacéutica que tenga proyectada la creación de un fármaco, no obstante si se debe exigir que haya una sistemática de trabajo que reduzca los errores, que se pruebe, que se contrate a los mejores y que se dedique el tiempo necesario a hacerlo lo mejor posible.

Creo que la explicación no ha sido brillante, pero espero haber transmitido los fundamentos de la idea, el ordenador es un instrumento complejo, para el que crear una solución depende de muchos factores no controlables fácilmente a priori y que si hay una profesión similar esta sería la sanitaria (en general) y no desde luego la construcción, simplista en demasía,  ya sea de edificios, carreteras, puentes o la fabricación de maquinas.

Según este paradigma deberiamos diferenciar entre los que crean soluciones (farmaceuticos-programadores), los que las implantan (médicos-ingenieros de sistemas/consultores), los que controlan su implantación (enfermeros-tecnicos de sistemas) y los usuarios (auxiliares, celadores -helpdesk). Es una metafora que a mi me sirve mejor para entender nuestra profesión.

Anuncios

4 comentarios en “La ingenieria informática

  1. Con tantas analogías deberías leer en ensayo de Dijkstra, porque ya lo decía. Intentamos describir el futuro con el lenguaje del pasado. Por eso usamos analogías y está bien, pero las analogías no dejan percibir los grandes cambios.

    El abuso del razonamiento por analogía es el gran problema de la informática, en 1988 y ahora mismo.

    Otra cosa peligrosa: ser programador es fácil, ser un buen programador –un buen programador es también diseñador, no pica código– es muy difícil. Un buen programador se puede aprender une metodolgía en pocas horas. Un “experto en metodología” no creo que pueda aprender a progamar en pocas horas. Ya hay una diferencia bestial.

    Puedo estar equivocado pero muchos tenemos la impresión que cuando un informático insiste en que para diseñar un sistema no hace falta saber programar, o que un programador tiene un “grado inferior”, en realidad lo que está diciendo es “no sé programar”.

    Por eso es muy difícil que un buen programador defienda estas definiciones pirámidales sin sentido que pare justificarse lleva las analogías a extremos insostenibles.

    También lo resumió Dijkstra: el objetivo de la ing. del software se parece a “cómo programar si no sabes”.

  2. A un ingeniero informático que no sepa programar no me gustaría tenerlo de compañero de trabajo en la vida. Además esos ingenieros deben haber estudiado en la universidad de cucamonga, porque no conozco a ninguno.

  3. Pues personalmente conozco a un buen puñado de “ingenieros” informáticos que ni papa de programar. Puede que conozcan los lenguajes de programación, pero programar es otra historia. No es conocer cuatro algoritmos, patrones y metodologías de gestión de proyectos, que es lo que aprendes en la universidad (por otra parte imprescindible), sino ser capaz de transformar todo eso en una solución a un conjunto de requerimientos funcionales, mediante un lenguaje de programación que se ejecutará en un ordenador (con toda la complejidad que los que nos dedicamos a esto conocemos y que Dijkstra explica mucho mejor que yo).

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s