Sunday, May 22, 2011

Quién dice que no hay Corrientes Artísticas y Sociales en la Programación?

Suelo decir que cuando escribes mucho significa que trabajas poco, al menos para un programador. Llevaba mucho tiempo sin escribir en mi Blog y de pronto hoy pues he publicado 2 entradas y ahora una tercera.

Tengo poco trabajo? No, para nada, estoy haciendo estos escritos pasada ya la media noche: es cuestión de que el “cuerpo” me la ha pedido. Quizás sea porque acabo de regresar de la sede del Cliente del proyecto actual (en el cual permanecí durante los últimos 11 días seguidos) y vengo con la tranquilidad que el proyecto va saliendo de maravillas luego de una etapa inicial muy convulsa y delicada, por parte del cliente, aclaro.

Y hablando de este proyecto actual, ahí fue donde hace unos días surgió la idea para este Post. Resulta que estoy compartiendo el trabajo con un colega y en una de sus entregas veo que me había dividido un proyecto de Visual Studio en dos.

Cuando le pregunto que para qué? Pues me dice que al él le gustaba hacerlo así porque bin bin y bin ban… y que reconoce que pertenece a la famosa escuela (entre nuestra comunidad de amigos y programadores) del IPerson.

Para los que no conocen la historia, se trata de una añejo debate, tratado en blog, discusiones, etc, sobre hasta qué punto debemos hacer un software o no basado en la super separación de capaz, interfaces, y los patrones que se nos ocurran. Y dentro de este debate el ejemplo más clásico es que si vas a hacer una clase Persona pues deberíamos hacer una interface IPersona, aun cuando más nadie la herede ni la use, pero, para un futuro! (Esto es una exageración con intensión de burla de los críticos de dicha filosofía).

Bien, volviendo a la conversación con mi colega, y como soy de los que da libertad para los estilos individuales cuando trabajo en equipo (salvo alguna excepción, jeje) le dije:

- Está bien, no sé si sea lo mejor, pero es tu decisión. Al menos cuando alguien vea el código dirá: Joder, como hay proyectos en esta solución!! Debe estar compleja.

A lo que me responde, sonriendo:

- Si, si, tu sabes, EL IMPRESIONISMO.

Ahí mismo comencé a reírme porque le puso nombre a toda mi idea y más aún: la sintetizó en una palabra y en una tendencia artística (del código fuente de los programadores)

Le dije, hare un escrito con esto y de inmediato dejamos volar la imaginación hacia las diferentes corrientes artísticas que podíamos recordar. Les comento algunas y serán bienvenidas las que aporten:

El IMPRESIONISMO:

Ya lo conocen, se trata de impresionar con muchas, muchísimas líneas de código más de las que realmente son necesarias para una decorosa ejecución de proyecto. Se trata de hacer Interfaces para todo lo que sea “Interfaceable” (esta palabra ni debe existir, ok?), de utilizar cuanto Patrón nos venga a la mente, de dividir los proyectos “siempre que sea necesario”.

No importa cuán complejo o grande se haga el proyecto, más prestigio tendremos ante los ojos de nuestros colegas que le den un vistazo al código, que dirán: Joder, estos socios sí que saben, jeje.

El FUTURISMO:
Es aquel que agrega cuanta mierda se le ocurre porque en un futuro puede usarse. Y aclaro que no hablamos de un límite permisible de previsión a corto plazo que es admisible, sino de previsión a Procesos que ni siquiera existen en ese momento.

Esta técnica incluye crear campos adicionales en las tablas de las BD por si se usan. Lo interesante del caso es que casi nunca se usan y si se usan pues quedaría tan diferente el nombre del campo de su “objeto social” que no hay Programador que sea capaz de leer el código de darle una mirada simple como debería ser. También incluye crear clases con propiedades y métodos superfluos, o como dicen un chiste cubano, super fulas, jaja, y asi una larga lista de lo que puede ser.

Pensando asi deberíamos programar a todos nuestros software la capacidad de dirigir a los humanos cuando ya se vuelvan locos de tanto pensar en lo que será el futuro, y bla bla bla

El ABSTRACCIONISMO:

Aunque esta tendencia o corriente pueda asemejarse a la primera (impresionismo) la diferencia es sutil: Los abstractos no pueden hacer las cosas de otra forma, utilizan interfaces para todo lo que sea posible, protocolos sobre lo que no tiene protocolos, pero solo por convicción y porque son así. No les interesa impresionar a nadie.

Los ECOLOGISTAS:
Les pongo este nombre porque los Ecologistas son los que más se preocupan por reciclar, usar el mínimo posible de recursos de cualquier tipo.

En el caso de los programadores serían los tipos que son capaces de crear variables, clases y métodos con los nombres más cortos posibles, por ejemplo: a, x, e, i. Minimizan al máximo las teclas que presionan, gastan poco papel si imprimen su código, etc.

Pero para mayor semejanza, estos programadores ecologistas reciclan dichas variables tanto como sea necesario. Son capaces de usar la variable a para un objeto de tipo integer y después para un objeto de tipo File. Son capaces de crear un método X que sea para disparar un Laser y después crear otro X que lo que haga se reproducir una canción.

Si a alguien se le ocurre un mejor nombre para este grupo? Pudiéramos llamarle los Cerdos, pero no tendría relación con tendencias artísticas o sociales.

Alguna tendencia más?