Saturday, July 24, 2004

The programmer's endeavour


"La programación es un oficio muy desagradecido" - Hernan Rojas Sr.

Ese era uno de los comentarios que tenía el Post anterior, en el que hatemachine, haciendo gala de su acostumbrada dulzura expresa en las palabras de su progenitor una muy triste realidad. La actividad de programar es una cosa muy divertida. Para mi es totalmente apasionante ver como puedo poner a una máquina a obedecer mis ordenes. Entre a estudiar ingeniería de sistemas porqué me gustaba la programación, aun me gusta. Sin embargo me llena de tristeza ver que el oficio mas noble de la teconologí de información es a la vez el mas vilipendiado y envilecido. En una empresa dedicada a proveer soluciones siempre se pone a programar a los practicantes y a los newbies. Las personas con mas experiencia se vuelven Ingenieros evolucionados, es decir, dejan de programar y pasan a ser arquitectos (si siguen por el lado técnico) o Gerentes de proyecto y hasta administradores, si toman la senda oscura.

No pretendo ni mucho menos ser una Biblia en este asunto, pero creo que la razón de que el oficio este tan vilipendiado radica en el principio del iceberg. Las bellezas internas del código, su simplicidad, su extensibilidad, el hecho de que todas las líneas pares tengan tres palabras, la anidación perfecta, no se ven. Es decir, si yo produzco un mastodonte horrible, desde el punto de vista del ingeniero, pero me demoro 1 hora desde el punto de vista pragmático del cliente (aquel ser que va a correr el riesgo de usar aquello que han hecho los ingenieros) es mucho mejor que el código perfecto que escala hasta el infinito pero que proporciona la misma funcionalidad, pero se demoró seis meses. Triste pero cierto

No todo, sin embargo es tan terrible. La solución simplista es simplemente hacer chambonadas y entregarlas. Es increible la cantidad de orangutanes que hacen aplicaciones Web con el mouse sin saber que es GET y que es POST, que sobreviven en el mercado gracias a este principio. Pero esa no es la solución buena. Eventualmente el castillo de naipes se cae o falla por alguna oscura interacción no planeada entre dos elementos que estan pegados con babas.

A riesgo de sonar como un fundamentalista (estoy lejos, bastante lejos de serlo) creo que la solución ya ha sido planteada muchas veces: Stand on the shoulders of giants.
Por suerte, o por desgracia, el 95% de lo que se llaman Aplicaciones Comerciales no son mas que interfaces glorificadas de bases de datos. Eso significa que ha habido mucha gente antes que uno que ha tenido los mismos problemas, por lo que en algún lugar debe haber una solución ya hecha. El juego esta en encontrarla, entenderla y adaptarla. Ese juego, sin embargo, es mucho mas difícil que simplemente hacer software desde ceros, pero puede ser mucho mas gratificante, porqué ya el precioso tiempo que se emplea programando se emplea programando cosas que si se ven, parte de la punta del iceberg, que es la que otorga medallas y la que se ve y la que produce valor, para ponerlo en terminos de consultor que cobra por horas.

Este pobre cristinao cree que esa es la manera de lograr que el programar sea una cosa valiosa, y no simplemente un pedaleo que se le deja a los que programan por comida.

Friday, July 09, 2004

Work and reward


He descubierto que tengo ética de esclavo. Eso que significa? Que mi psiquis interna necesita una relación directa entre trabajo y recompensa. Resulta que la vida no es así. Hasta ahora pensaba que el trabajo duro, si bien no era un requisito suficiente para que las cosas salieran bien, si era un requisito necesario. Me he dado cuenta que la existencia no necesariamente es así, que puede haber trabajo sin recompensa y recompensa sin trabajo (sin que necesariamente sea ilegal). Bendiciones de los medios de capital como decían los socialistas. En ese caso entonces el juego cambia. Don't work harder, work smarter. Eso es difícil de ver cuando se trabaja como empleado en una parte de un proyecto de una compañía, pero mas facil de ver cuando es uno el que va, por lo menos parcialmente, al timón de la operación.