Ni Ruby ni Rails son para todos ni para todo
Publicado por Aníbal Rojas 29 Octubre 2005 en AJAX, CSS, J2EE, Java, JavaScript, PHP, Patrones de Diseño, Perl, Rails, Ruby. english • españolPor ahí el amigo KodeGeek se intoxicó con muchas imágenes comparativas de de pilas de libros entre Java y Ruby y escribió ¿Porqué me ladilla el fanatismo de los programadores?: Java no ha muerto, y si Ruby es depinga, Ja ja ja, tranquilo “Tómate una Light” ;-)
Echadera de broma aparte, realmente coincido con él al 100% en que los lenguajes de programación son heramientas, algunos se adaptan mejor para dar solución a algunos problemas que otros. Y cualquier discusión del tipo este-lenguaje-es-mejor-que-el-otro, va a convertir en un debate religioso como dice EGG.
Idealmente, un desarrollador de software o programador que disponga de un buen abanico de lenguajes de programación debe estar en la capacidad de seleccionar la herramienta adecuada para el problema que se le presenta.
Sin embargo, la afirmación anterior es una de esas cosas que se vuelven verdad de tanto repetirlas, y sólo es una verdad a medias.
La especialización es una consecuencia lógica de que dominio del conocimiento humano es cada vez más grande, sólo disponemos de 24 horas al día y sólo leimos las primeras 5 páginas del manual de uso del cerebro porque es resto del tiempo estábamos en algún tipo de escuela empaquetando conocimiento dentro de él.
Yo, por ejemplo me especializo en desarrollo de aplicaciones bajo tecnologías J2EE (Java 2 Enterprise Edition (aunque ya le cambiaron el nombre). Y si bien mis tareas cada vez tienen menos que ver con programar, y más con un teléfono, un cliente de correo y un procesador de palabras, la verdad es que me gusta verme con las mangas arremangadas metiéndole el pecho al código.
Ahora, mis primeros pinitos en el desarollo de aplicaciones web fueron con Perl vía CGI (en esa época PHP no tenía la popularidad que tiene hoy) y rápidamente pasé a Java “pelao” (en esa época no existía la especificación J2EE) ¿Alquien recuerda NetDynamics o SilverStream? Así que pueden entender que “pinto” un poco de canas y nos es de gratis.
Hoy en día un perfil que yo requiero de un desarrollador, para atacar las aplicaciones que hacemos incluye: Java (no incluye cosas como Swing), J2EE (centrado alrededor de la parte web), XHTML (sí, hay validar), XML (el más abusado de los markups), JavaScript (más y más, hello Ajax) y CSS.
No poner los ojos “puyudos” al leer el RFC 2616: Hypertext Transfer Protocol — HTTP/1.1 ayuda bastante, por supuesto, que la capacidad de aprender y aplicar los conocimientos adquiridos son fundamentales.
Entonces vamos a estar claros, eso que acabo de nombrar antes es un equipaje pesado y que no es posible “armar” en un momentico. Otras áreas del desarollo de aplicaciones, administración de sistemas, ventas, etc, requieren de conjuntos de experticias diferentes pero igual de cargadas.
Los geeks de la programación son una tribu pequeña, tiene mucha menos gente que aquella que dice que pertenece a la misma. El programador promedio sale de su trabajo y no se lleva un manual técnico para dejarlo encima del tanque de la poceta, sencillamente es así.
Afortunadamente vinieron los Patrones de Diseño al rescate, y se convirtieron en la lingua franca en la que nos podemos apoyar para brincar de un lenguaje y/o framework a otro, porque necesitamos adaptarnos a las especificaciones del cliente, los sistemas heredados, las decisiones del jefe, un decreto gubernamental, etc, son pocos los casos en que podemos armar nuestra arquitectura de solución como nos dé la gana :-(
De esta forma una implementación del patrón MVC (Model-View-Controller) es una implementación del MVC, punto. Si escarbamos en el código terminaremos por encontrar Models, Views y Controlers, esté escrito en Perl, Java, Python o Cuti*. Los mismo pasa con un Singleton, o un ActiveRecord ¡Gracias! ¡Muchas gracias Christopher Alexander!
Es sábado así que tengo que salir a cortarme el cabello y hacer varias diligencias más, después termino de escribir esto, así que stay tuned ;-)
* Aclaratoria para aquellos que no viven en Venezuela, ni han interactuado con venezolanos: Cuti no es un lenguaje de programación, es un broma que consiste en conversar rápidamente prefijando cada sílaba con la partícula “cuti”.
unexpected end of post found :)