Tecnología, Buenas prácticas en Software y Diseño, y demás desvaríos

Freddie exponía en un comentario de mis post anterior una palabra clave:

Mercado.

Y, no hay duda alguna, es el mercado el que mueve practicamente todo desempeño y orientación que existe actualmente, como lo fue -y todavía en cierta medida lo es- los avances de guerra en años anteriores. Esto, por supuesto, no tiene nada de malo, y es una práctica saludable sobretodo en una economía abierta en la que nos encontramos.

Pero justamente por la naturaleza de este mercado que los alumnos, de instituto, universidad o estudios personales, deberían tener las capacidades de poder adaptarse a los cambios.

Definitivamente, con el avance de las herramientas de apoyo al desarrollador (aunque a mis amigos Linuxeros no les gusten tanto), no es ya urgente y tal vez no enteramente requerido en algunos casos, conocer los conceptos de que hay detrás de cada generador o constructor de código. Pero eso no quita el hecho que sea necesario conocerlos. Es parte de un proceso de enseñanza y aprendizaje. Cierto, puedes haber aprendido matemáticas utilizando una calculadora pero no podrás entender los conceptos más avanzados si no has entendido bien como va una suma o una resta -ignoremos por el momento el hecho que muchas veces las matemáticas más usadas en la vida real requieren en un 90% sólo el uso de sumas y restas.

Y no simplemente por un mero hecho de estima personal. El mismo mercado nos requiere eso. Antes, el cliente era una persona ingenua, totalmente alejada del entorno arcano de la informática. Era muy sencillo para cualquier persona aprender algo básico de programación y ofrecerle a este cliente una aplicación administrativa de mantenimiento, y ser considerado un Dios Supremo por el cliente. Ahora las cosas an cambiado. El cliente es todavía una persona ingenua, ya no totalmente alejada del entorno arcano: aprendió a usar el Solitario, MSN, Guindous, y el Ofís. (créditos a Emarts por las palabras). Pero también tiene ahora una mayor red de amigos empresarios, los que preguntan si ya tiene sistemas y si ya le hicieron su sitio web. Ahora el cliente es más exigente, ya no se conformará con simplemente una aplicación de mantenimiento. Querrá implementar flujos de trabajo, reglas de negocio más complicadas y confusas y tendrá tanta desconfianza por experiencias pasadas o de conocidos, que exigirá también mayor profesionalismo.

Por supuesto, todavía no entenderá prácticamente menos de la mitad de los conceptos y tareas que pide. Pero tendrá otros conocidos con los cuales comparar.

¿Qué hace entonces el programador en <inserte tecnología aquí>? Ofrece una "solución" sólo en el lenguaje que conoce. Y los lenguajes, IDEs, frameworks y SO NO SON PERFECTOS PARA TODO. Respiremos un poco acá y repitamos: NO HAY LENGUAJE, IDE, FRAMEWORK NI S.O. PERFECTO. Sí, ni siquiera Linux, ni Mac, ni Assembly ni C++. Ok, respiremos de nuevo y volvamos al tema. Nuestro novel programador acaba de ofrecer una solución sobre lo que conoce, sobre lo que le enseñaron. Y dependiendo del lugar o la forma cómo estudió, eso puede no ser suficiente.

Ya otras a veces muchos han usado esta frase, pero es importante utilizarla una vez más: Sí sólo tienes un martillo, todos tus problemas empezarán a verse como clavos. Y ese es el mayor problema con los centros de estudios cuando se empiezan a orientar a utilizar herramientas más que a plantear conceptos. Tenemos entonces un programador .NET y un programador Java, a un programador Linux y a uno Windows.

Existe un libro bastante bueno (aunque su carátula no inspire mucha confianza) llamado The Non-Designer Design Book. El capítulo introductorio nos cuenta la historia de la autora, cuando de niña recibe por Navidad un libro con imágenes de árboles para identificarlos. De estos, encuentra al árbol Joshua uno de los más raros especímenes. Su mayor sorpresa cuando sale a identificar los árboles de su vecindario, es que de diez casas, siete poseían árboles Joshua y ella nunca los había visto en la vida. Pero ahora ya tenía un nombre y ya sabía que buscaba.

Lo mismo sucede en este ámbito. Si sólo nos concentramos o si sólo nos interesa aprender una herramienta, lenguaje, IDE, framework o SO, no veremos más allá de ésto, y no podremos adaptarnos a los cambios de mercado. Hoy puede ser .NET el lenguaje más popular y requerido por las empresas y los clientes, pero mañana será Ruby o D o Malbolge (el día que este lenguaje sea popular, será un día muy interesante :P). Y sí sólo aprendiste -o te enseñaron- a utilizar Visual Studio o C# o una técnica especial, caerás detrás del mercado y no podrás actualizarte. Al menos no con la rapidez necesaria para estar arriba de la nueva ola y tener que conformarte con los rezagos que otros desarrolladores dejen tras de sí.

Un desarrollador no es un lenguaje o una tecnología específica. Es un analista capaz de identificar un problema, revisar las variables que están en su entorno, evaluar diferentes soluciones y elegir aquella que sea la mejor PARA el Cliente y no para él. No hay ningún inconveniente en que uno prefiera, por ejemplo, Linux como plataforma de desarrollo y de uso, pero de partir ahí a ofrecer a sólo soluciones basadas en Linux a un cliente que, digamos, tiene treinta convenios con Microsoft y descuentos, sería no pensar en lo que es mejor para el Cliente. Freddie lo dijo bien, al cliente no le importa como lo desarrollemos, pero exigirá que funcione bien (para su perspectiva) y dentro de lo que conoce, sabe y usa.

Apuntes similares

Comentar

(*)

(*)


* (obligatorio)



Sobre este blog

Espacio propio donde mantengo apuntes y reflexiones sobre buenas prácticas en el proceso de elaboración de Software, Diseño de Sitios Web y Tecnologías modernas. Y'know, the real deal

Sobre el autor

No suelo hablar mucho de mí pero tal vez debas saber que tengo 22 años, vivo en Perú y me puedes contactar en mi correo. O puedes leer más en esta página

Sobre qué escribo