Sunday, June 8, 2008

Mis colegas me deprimen versión 2.0

En un post anterior comentaba como "Mis colegas me deprimen" y hablaba de la poca "ingeniería" que a mi parecer enseñan aún excelentes profesores y como muchas de las "tecnologías" propuestas por las grandes empresas son "patéticas". A varias personas les pareció muy crítico, por tanto aprovecho a explicarme un poco mejor.

No voy a negar que muchas veces "mis colegas me deprimen" porque ello es verdad, lo que sí creo es necesario aclarar a que me refiero. La conclusión a la que llego al final del post anterior es que en realidad el problema está en nuestra profesión, en la ingeniería de software y no en los profesionales, por tanto concluyo que lo que me deprime es el estado del arte en la ingeniería de software y por extensión me "deprimen" mis colegas aún muchos de los más brillantes y admirables.

La ingeniería de software me parece precaria y deprimente por las siguientes razones:

  • El software es una abstracción, sin embargo nos pasamos la vida reescribiendo aplicaciones todo para que corran en diferentes runtimes o con diverso middleware.
  • El software que escribimos rara vez dura más de diez años.
  • El software no puede arreglarse a sí mismo.
  • Para escribir una aplicación web debo conocer y utilizar al menos tres lenguajes diferentes, todo porque los lenguajes actuales están acoplados a un runtime en particular y no son modulares.
  • Puedo diseñar una arquitectura muy buena para mi software, pero al implementarla dependeré de middleware y runtimes los cuales limitarán el tiempo de vida de mi aplicación.
  • Todavía seguimos aprendiendo todos los años (cada vez que un nuevo fabricante renueva una librería o lenguaje) a realizar lo mismo una y otra vez sin aprender nada realmente nuevo.
  • Las librerías de software que usamos son pasivas, no nos advierten si las usamos mal, tampoco nos enseñan a utilizarlas o de conflictos entre ellas.
  • Seguimos escribiendo la gran parte del software de forma artesanal.
  • Una línea de código sigue siendo capaz de colgar el más complejo de los sistemas en la mayoría de los sistemas.
  • Cada vez que necesitamos trabajar con un nuevo paradigma debemos de usar nuevos lenguajes y herramientas (en los próximos inmediatos años veremos como los lenguajes "main-stream" empiezan a "mutar" para incluir características que faciliten la programación concurrente).
  • Estamos obligados a usar una sintaxis en particular para beneficiarnos de lo único importante en un lenguaje que es su "semántica" y lo que es peor, estamos obligados a usar esa misma sintaxis para leer y analizar los programas.
  • El código fuente no puede analizarse a sí mismo en el común de los lenguajes de programación.
  • Quienes investigan e impulsan la "ingeniería de software" (hablando de metodologías, arquitectura, etc.) cada vez más se separan en sus estudios de los lenguajes y herramientas de implementación, lo cual humildemente me parece errado.

Mi objetivo, no es criticar profesionales, universidades o empresas. El medio es criticarlas, el objetivo es despertar a quienes son jóvenes y hacerles ver que nuestra profesión es primitiva y debemos de contribuir mucho para que algún día podamos estar orgullosos de estar en la industria del software. Creer que hoy día el software es avanzado, que los profesionales de software construimos obras de ingeniería memorables, es en términos generales una mentira a nosotros mismos. LayerD es mi propuesta para encarar muchos de estos problemas, no le quepa duda que no los solucionará a todos, pero humildemente creo que se trata de encarar la realidad con opciones un poco diferentes, al final entre todos o alguna mente brillante encontraremos una solución para estos problemas.

Si hay algo que me cautivo desde siempre del software, es que las posibilidades son cercanas al infinito. No creo que sea posible decir hasta donde se llegará, lo que estoy seguro es que en algún momento en el futuro las generaciones que vendrán mirarán hacia atrás y observarán un panorama primitivo, frágil, vacio, oscuro, pero también encontraran gente que con pasión y trabajo empujo un poquito y en suma a lo largo de las generaciones se logro llegar a algo realmente memorable.

No comments: