viernes, febrero 15, 2008

De Arquitectos y Albañiles

Durante mis años de universitario existía una preocupación (casi una obsesión) de muchos docentes por transmitirnos la importancia de ser “Ingenieros”. Y como suele ser habitual a la hora de diferenciarse, se busca siempre de qué diferenciarse: los “programadores” (léase con tono despectivo, el mismo con el que nos lo pronunciaban a nosotros). No dejaba de parecerme paradójico en una carrera donde gran parte del contenido práctico era la programación nos dijesen que la peor chusma eran los programadores.

Para cualquier discurso hay justificación y en este caso la encontraron en una analogía con otra titulación: la de Arquitecto. Nos formaban como arquitectos y no como albañiles, decían; el programador ponía ladrillos. Nosotros haríamos planos, nada de mancharse las manos con el cemento…

En general (digo “en general” porque nunca se puede ser extremista y en el mundo del software menos) estoy en desacuerdo con esa teoría.

Me cuesta creer que alguien pueda diseñar una arquitectura multicapa, o aplicar buenos patrones de diseño si nunca ha construido eso. Sigo pensando que la mejor forma de entender un diseño o un patrón es haberlo implementado. Hoy, todavía, un buen ingeniero del software, en general, debe ser o ha tenido que ser en algún momento un buen programador.

Quizás dentro de algunos años se logre un nivel de madurez, de ingeniería, en el desarrollo de software permita equipar el trabajo de un ingeniero software a la un arquitecto (arquitecto del mundo físico quiero decir), y quizás estemos dando ya los primeros pasos para ello, pero nos queda mucho camino por recorrer.

Por otra parte, hasta creo cuestionable que la evolución hacía una ingeniería de verdad, o madura (hoy estamos más cerca del trabajo de un artesano) sea necesariamente alejarse del código. ¿Sería posible haber producido Google sólo mediante planos, sin haber tirado líneas de código y haber ajustado los algoritmos a golpe de programación? No, y no hace falta tomar Google como ejemplo..

Por muchas herramientas para generar código y diseñar planos que construyamos en los próximos años, el constante grado de innovación tecnológica que caracteriza al desarrollo del software junto con la propia naturaleza del software requiere ingenieros muy preparados para construir (diseñar y programar) ese software con esas tecnologías. Es esa naturaleza abstracta la que invalida la comparación con arquitectos y albañiles.

Tendremos casos en los que la programación se convierta en algo tan poco diferencial como pueda serlo el agua o la luz, pero también habrá ámbitos en los que la programación no llegue a convertirse en la commodity que llevamos años anticipando. Sí es cierto que cada vez lo será más, pero nunca del todo.

Y esto lo digo yo, que llevo años sin tirar ni una sola línea de código…

5 comentarios:

Rafa dijo...

Totalmente de acuerdo. Aunque mi opinión debe valer poco si lo considera algún purista de la informática o las telecomunicaciones. Por estudios, no soy teleco, ni informático. Soy un ingeniero de Minas que ha llegado a director de sistemas. En ese intervalo he sido agente de CAU, programador, responsable de CAU, analista, jefe de equipo, gerente de consultoría...

De hecho, el caso del arquitecto "físico" sirve para reforzar tu teoría. Es muy habitual que los arquitectos presenten a concursos soluciones que, una vez elegidas, no se pueden llevar a la práctica: porque los materiales no soportan esas estructuras o porque el coste los haría inviables (http://www.soloarquitectura.com/foros/showthread.php?t=13466). Y esto no es aceptable en el desarrollo de software.

vorjales dijo...

Rafa, gracias por tu opinión: cuenta y mucho. La aportación o no aportación de los puristas y no puristas es, sin duda, un tema muy interesante y que dará para otro post, pero de entrada opino, que con el tiempo los "puristas" aportan poco o nada frente a los "no puristas". Termina por hacerse más importante la experiencia (y la actitud, por cierto) que los conocimientos y skills desarrollados en una escuela "purista" frente a una escuela "nu purista" (y que conste que yo he estudidado en las primeras....)

abmapri dijo...

Totalmente de acuerdo pero permíteme una reflexión adicional.

Otra diferencia destacable que también invalida la analogía que planteas, Arquitecto-Albañil versus Ingeniero-Programador, está en la cualificación necesaria para desempeñar dichos puestos, cualificación totalmente diferente en el caso de Arquitecto-Albañil pero casi idéntica en el caso de Ingeniero-Programador.

Esta diferencia resulta crucial para tu teoría, del todo compartida, de que “un buen ingeniero del software, en general, debe ser o ha tenido que ser en algún momento un buen programador”.

Programadores socialmente menos valorados frente a ingenieros software, con una cualificación análoga, provoca su natural aspiración de “llegar a”, aspiración casi inimaginable para un albañil, lo que da lugar la elevada rotación en el mercado de estos perfiles, muy especialmente de los buenos programadores.
Esto se traduce en equipos con programadores de corta experiencia donde la asimilación de buenas prácticas es inmadura. El ingeniero software debería estar capacitado para detectar y reaccionar ante este problema, tarea harto difícil si no se dispone de experiencia en dicho ámbito y, además, en el equipo se carece como empieza a ser habitual de programadores senior (pero de los de verdad) que suplan dicha carencia.

Conclusión:
Se debería valorar y dar más proyección, como ocurre en la UE, a los programadores para que puedan desarrollar su carrera profesional en aquello que les gusta siendo además unos especialistas valorados. Nos iría bastante mejor a todos y nos ahorraríamos costes, disgustos y horas de trabajo. Hasta entonces, todos a ponernos las pilas en la materia!!!.
Por cierto, los albañiles lo tienen mejor en este aspecto… desde peón hasta capataz hay un amplio abanico de especializaciones y reconocimientos, no os parece?

Santiago Pereira dijo...

Completamente de acuerdo con la entrada en el Blog y con los comentarios de los lectores.
Me agrada que se comparta mi opinión de que en desarrollo de software todavía estamos en una época artesanal y que por lo tanto, si quieres hacer bien este oficio de construir/diseñar aplicaciones, tienes que ponerte manos a la obra y experimentar en tus propias carnes de qué va esto.

ovidiov dijo...

Por defecto profesional mi mundo es el de la farmacia y la medicina. Es por ello, que al lerr el post me acuerdo siempre lo que decían los médicos-cirujanos portugueses acerca de los médicos catedráticos...."Los libros no sangran"