viernes, octubre 26, 2007

Rompiendo el silencio (Trabajo)

Tres semanas en el nuevo trabajo. Es el tiempo que me ha tomado adecuarme al nuevo ritmo, al menos al grado de regresar a mi actividad en twitter y ahora a postear de nuevo. Fuera de los tristes sucesos, me siento a gusto, me siento féliz. Ya ha habido quién me ha recordado la desatención que he tenido con los compañeros y amigos del antiguo trabajo y esto me ha dado pie a reflexionar un poco sobre el tema.

Hasta ahorita me he definido como un "hombre de equipo", esto es, mis amigos son en primer lugar las personas con los que trabajo todos los días. Así, cuando cambio de equipo de trabajo, cambio de amigos. Cambio hábitos de comida, de trabajo y me esfuerzo por no cambiar de trato pero como algunos reclaman, no siempre lo consigo. Una cosa curiosa es mi nuevo equipo: Yo. Actualmente en el proyecto que trabajo soy el único recurso de tiempo completo por parte de mi empresa, así que el equipo soy Yo. Ja.

Dentro de la empresa, veo muchas áreas de oportunidad: metodología, capacitación, proyectos. Ahora necesito conseguir tiempo y concentrarme en mis tiempos "muertos" a ir armando los bloques que traigo en la cabeza.

Me voy re-encontrando con herramientas y tecnologías. Una de las cosas que quiero hacer es buscar espacios para Rails, sin embargo, éste mi primer proyecto está amarrado a .NET al cual le estoy tomando sabor de nuevo. Fueron casi tres años sin tirar código para una UI y ahora al re-aprender ASP.NET influenciado por la visión Rails le encuentro un sabor distinto. Ahora me veo usando componentes que hace un par de años (o meses) veía como objetos de pecaminosa pereza pero desde un enfoque pragmático tienen su valor (y razón) de ser.

Cuando desarrollamos con Rails hacemos usos de una cantidad inmensa de clases y componentes de los cuales aprovechamos toda la funcionalidad sin preocuparnos del detalle de la implementación. De repente nos encontramos usando ActiveRecord a diestra y siniestra confiando ciegamente en que la implementación del patrón de diseño cumple con todos los cánones habidos y por haber. No hay duda ni cuestionamiento, ActiveRecord es un componente que nos permite ser más productivos ¿para qué entrar al detalle de su funcionamiento? Funciona y listo.

En mi regreso a ASP.NET estuve a punto de retomar la complejidad de implementar patrones, armar bosques de clases y aplicar todos los principios de arquitectura existentes; la realidad es que los tiempos comprometidos me están obligando a encontrar alternativas que nos permitan avanzar más rápido y tener elementos visibles, tangibles, que hagan sentido al usuario final del sistema. Se generó en mi un gran conflicto. Siempre peleé por "hacer las cosas bien, más que rápido" y ahora tengo que "hacer las cosas rápido más que bien". Al final, encontré un punto medio. La experiencia con Rails me enseño que no tengo que recrear la complejidad (usar las clases existentes de ActiveRecord en lugar de construir de cero mi implementación del patrón de diseño) sino a usar lo ya existente y confiar en que en su momento lo puedo mejorar (esto último es más "agile oriented").

Tome los componentes ASP.NET que más me latieron y conseguí avanzar un buen tramo en la construcción del sistema sin caer en un "arrastra-controles" ni re-construyendo todo por ser víctima del síndrome "No-Inventado-Aquí". Estoy cierto que de ser estrictamente necesario más adelante puedo cambiar esos componentes así que se redujo parte de mi conflicto interno.

Esta situación también me dejo entrever otra cosa: de manera natural seguimos ciclos (o espirales dirían los dialécticos). En las artes marciales se inicia con el aprendizaje portando un cinturón blanco, signo de ignorancia, conforme se avanza el cinturón se va tornando oscuro hasta llegar al negro representando la "maestría" alcanzada. Al paso del tiempo el cinturón negro se desgasta mostrando la fibras blancas originales. Simple, complejo, simple.

En el contexto del desarrollo nos adentramos con "asistentes" y construimos aplicaciones arrastrando componentes en nuestro ambiente de desarrollo. Luego vamos conociendo nuevas tecnologías que aumentan los beneficios de nuestras aplicaciones a expensas de la erudición necesaria para su uso. Patrones, técnicas, innovación amarrada a la complejidad pero esto tiene que ser así ¿cierto? Entre más fácil para el usuario, más complicado para nosotros.

En ese momento aparece Rails y entiendo el porqué de la migración. Nos olvidamos de las complicaciones. Sabemos que los componentes de Rails son implementación de patrones y conceptos que veneramos y con eso nos basta. No los ponemos en tela de juicio ni criticamos, simplemente los usamos.

Así me paso con ASP.NET, ya no cuestiono ni critico los componentes que ofrece. Aqui y ahora me hace sentido. Sé que de requerirse puedo incluir toda la complejidad que se requiera pero de momento solo necesito una cosa: que funcione y lo estoy consiguiendo.

Finito.