Uso de Lenguajes de Programacion, y soluciones Open Source en la actualidad. (2005)

 

Como introducción es importante mencionar que cuando hablamos de lenguajes de programación, no debemos comparar herramientas con propósitos diferentes, y mas aun con algunas plataformas de software libre.

                                                                                                                                                   
Lenguajes de propósito especifico, como PHP, SQL,  HTML, Javascript, orientados a capas específicas (Web, base de datos, presentación y control de navegador respectivamente)…. Que requieren combinarse en entre si, y con otros mas para reales soluciones informáticas, son comúnmente comparados con sus hermanos mayores sin criterio alguno, con criterios “subjetivos”, resultantes de ausencia de preparación o presiones externas.

Lenguajes de propósito general que han evolucionado de raíces comunes: partiendo de C como , C++, Java, C#, y el nuevo y maquillado Visual Basic (ya que el anterior…. Mejor lo dejamos allí…) que están diseñados para desarrollar componentes de negocio que puedan ser distribuidos en escritorios de trabajo tradicional, aplicaciones web, y demás. A nivel empresarial, ofrecen mayor flexibilidad, robustez, escalabilidad, pero de la misma forma requieren de mayor preparación ….. ya que manejan conceptos y practicas de desarrollo de software que no existían en años anteriores: arquitectura, procesos, estándares, ubicuidad… y que están pensados para soluciones a largo plazo.

Y por ultimo Lenguajes y derivados de estos últimos salidos de ambientes académicos como optimizaciones y reducciones (ó complicaciones ?) para un uso mas especializado como Perl, Python, Ruby, Groovy, que luego son adaptados para otros usos.

Y permítanme usar aquí la analogía de los médicos, y es que un auxiliar de enfermería, que aprende primeros auxilios, no podría compararse con un cirujano especializado cierto ?… hay unos cuantos años de distancia en preparación, y de la misma forma, el primero podrá hacer primeros auxilios, y el ultimo resolver complejos males.

Así las cosas hay una confusión comparando, un Renault 4 con un Ferrari, solo por que son automóviles y tienen 4 ruedas ¡!!. El problema de fondo es sencillo, si bien muchas funciones externas pueden ser similares, su objetivo y maquinaria interna es diferente, y mas aun lo importante, su propósito es diferente.

Comparaciones antiguas como Visual Basic, vs Java, y mas recientes como (AMP (apache, mysql ,php,), vs .NET, vs Java Enterprise Edition, donde algunos pilotos criollos osan poner en el autodromo de Tocancipa, una Tractomula, un Renault 4, y un Ferrari…. Y esperan compararlos al final …. Denotan, una falta de preparación, una falta de conocimiento del negocio, que tarde que temprano, les pasara su factura.

No es que uno sea mejor en general que el otro, no señores… es simplemente que son para segmentos de empresas diferentes (pequeña, mediana y grande), para soluciones de corto plazo, o largo plazo, en el fondo para propósitos diferentes,

Por ejemplo PHP , fue un lenguaje creado para facilitar la creación de aplicaciones Web en sus orígenes, a usuarios sin mucha experiencia (de hay su nombre :Personal Home Pages) ….y de esa iniciativa, por su facilidad de uso ha evolucionado, ha incluido muchas características adicionales, pero de ahí que se construyan aplicaciones financieras, transaccionales, criticas, ó aplicaciones sofisticadas de escritorio tipo Windows, hay una gran diferencia en propósito…. Aunque aquí me fritaran en aceite los fans de PHP ¡!!!.

Si bien hace ya 20 años, y tal vez mas, hablar de lenguajes de programación , era la base fundamental de un desarrollador de software, y comparar COBOL, Fortran, Basic, pascal o C era natural ….(aunque igual muchos no eran comparables), ahora esto es muy diferente.

La empresas de hoy requieren desarrollos de software en tiempos record (léase: 3 a 6 meses), con estándares de calidad, escalabilidad, y flexibilidad, que les permitan adaptarse al cambiante mundo de comercio electrónico globalizado, donde sus clientes, y proveedores… les requerirán intercambiar información y servicios de forma ágil y segura.

Desde esa perspectiva, (tamaño, escalabilidad, conectividad, inversión, en ultimas de forma integral) deberían tomarse las decisiones de que arquitectura (.NET, J2EE, SOA y variantes), procesos de software y demás, se adopta como soporte estratégico para la empresa, y como estas se combinan para dar soluciones reales y eficaces.

Lastimosamente, la educación superior en Colombia no da elementos de decisión aun a muchos profesionales en este aspecto, y como se comenta, las decisiones de trabajar en una u otra plataforma en nuestro país, así como en muchos países desarrollados donde los elementos de contratación, corrupción y demás juegan papeles importantes, se toman por algunas razones como las siguientes (solo por nombrar algunos ejemplos!):

1. Por que es lo que dice el director o jeque de sistemas, que aunque no sea un Guru técnico, es el que manda, y donde manda capitán, pues no manda marinero.
2. Por que el proveedor, de manera muy amable…. Sostiene un matrimonio conveniente con el área de sistemas…. Y pues, entre altas directivas y proveedores, si los estos están contentos, a quien le interesa un programador descontento escribiendo 5000 líneas de código de mas ….. ó unos usuarios quejándose por unos cuantos minutos de procesamiento extra, si para eso existe el hardware ¡!!!
3. Por que el consultor estrella de turno, con una hoja de vida impresionante, y proporcional a la factura de sus servicios, dice hacia donde debemos ir.
4. Por que el Genio Técnico de sistemas, que lee todos los últimos artículos de revistas, dice que la tendencia del mercado (menos frecuente tal vez …)
5. Por que es lo único que sabe el de sistemas…. Y lo que sabe, debe servir para todo.
6. Por que es mas barato conseguir mano de obra,
7. Por que la plataforma es gratis ¡!!

Obviamente muchas más razones existen, nacidas del libro de Aprenda XXXX en 24 horas, y de muchos “visionarios” salidos una de tantas instituciones garaje, pero el resultado es el mismo…. Productos creados con lenguajes de programación que eran para propósitos diferentes a los que fueron usados … y pomposamente mostrados como grandes hazañas, que derivan en grandes fracasos y perdidas financieras resonadas ….

Es real, Millones de dólares se han gastado, entidades del estado y privadas en Colombia, en desarrollos de software, que fueron profundos fracasos…. Y que aun son objeto de profunda investigación… por que en esos contratos demasiados, podrían salir afectados…(incluyendo los directores de sistemas obviamente).

Mi invitación para la comunidad de desarrollo, es a promover el uso un criterio más responsable. Más integral a la hora tomar esas decisiones, aunque todos tenemos un color y sabor de preferencia… esto no implica, que sea lo único que exista, y tarde que temprano la factura nos llegará…

Como referencia soy desarrollador Senior en el área de Java Enterprise Edition, , y después de ejercer como desarrollador empresario y como empleado, más de 10 años en la patria, desde hace 2 ahora ejerzo en Canadá. Y aquí en un país lejano y diferente, viendo también fracasos y aciertos comunes en el área, es donde más aun, veo la necesidad de promover ese criterio, para que las soluciones informáticas, sean acorde la realidad del usuario…. Lo cual implica a veces esfuerzos técnicos (mucho estudio señores …) y de estandarización, pero redunda en beneficios para todos, menos transnochos, mas remuneración, mas productividad para el desarrollador, y una racionalización de la inversión y resultados financieros mas positivos para las empresas.

Aquí en British Columbia la preferencia en empresas grandes es J2EE para las soluciones criticas(backend), pero con una presencia muy grande de .net en escritorios (frontend) … En las empresas pequeñas, mucho .NET, pero mas por influencia de marketing (hay que admitir que Microsoft les lleva la delantera en el tema a los demas..), y geográfica …

Sin embargo es importante anotar que mas del 60 o 70% de empresas que usan arquitectura J2EE, usan todo tipo de proyectos open source (jakarta, jboss, spring, hibernate) … para apalancarse y subir el nivel de productividad.

Open Source es un proveedor como yo lo veo, que hay que evaluar a la luz de todas las variables, y allí podremos encontrar iniciativas en diferentes arquitecturas, y de diferente calidad y niveles de estandarización, una vez mas es el criterio del desarrollador, del arquitecto y del directivo de sistemas, que debe aplicarse forma integral a este proveedor, para decidir su utilización o integración a estrategias en Curso.

El usuario final será en ultimas es el real juez de nuestro trabajo. Y el tiempo dirá cuantos de nosotros permanecemos en el área, o cuantos desarrolladores después de 2 años de trabajo se mueven a otros lares, por que les quedo grande permanecer….o responder por las decisiones y soluciones que ofrecieron.

Desarrollo de software es una disciplina, que aun estamos terminando de inventar, hasta ahora estamos aprendiendo a hacer planos (UML), a construir estructuras reutilizables como columnas, concreto, (frameworks), ciñéndonos a estándares (Unified Process), con criterios de calidad, y productividad …. Y aplicando conceptos de arquitectura, aprendiendo de la experiencia ajena , a no reinventar la rueda cada vez ….

Si somos conscientes de lo que eso implica, y conocemos los juguetes con que contamos, con un buen criterio y preparación, podremos ofrecer sin duda, todo un portafolio de alternativas a nuestros usuarios.