Está en la página 1de 3

Ingeniera de Software

Mi "da a da" en este mundo de la informtica: Gestin de


equipos, planes estratgicos, concursos pblicos, ingeniera de
software y metodologas (Scrum, eXtreme Programming, Mtrica),
Ecosistema Software, Alfresco, Liferay, Bonita, Drupal...

Home

Sobre m

lunes, 27 de abril de 2009

Lenguajes: Pasado, Presente y Futuro

Escribo este post al hilo del artculo que he leido en dosideas.com. En l, se habla
de las habilidades que debera tener un programador para tener un currculum
relevante en los prximos cinco aos:
1. Uno de los "3 Grandes" (Java, .NET, PHP)
2. Aplicaciones Ricas de Internet (RIA - Rich Internet Applications)
3. Desarrollo web
4. Servicios web
5. Habilidades humanas
6. Un lenguaje de programacin dinmico y/o funcional
7. Metodologas giles
8. Conocimiento de dominio
9. "Higiene" de desarrollo
10. Desarrollo mvil

A partir de este artculo, estuve debatiendo con algunos compaeros y saqu


algunas conclusiones que quiero plasmar aqu.
Pienso que el artculo es un poco mejorable, dada la arbitrariedad con la que se
han escogido los conocimientos a adquirir. De hecho, muchas de esas habilidades
hay que tenerlas en el presente (yo cumplira de 9 a 10).
Me voy a centrar en el punto 1, uno de los "3 Grandes" (Java, .NET, PHP). Antes de
hablar de "grandeza", habra que definir el criterio de comparacin. Si la grandeza
es la demanda de programadores en trminos absolutos (no porcentajes), esos si
son los tres grandes lenguajes, sin lugar a dudas. Pero lo son ahora. De hecho, en
1999, por ejemplo, no lo eran, y puede que dentro de cinco aos no lo sean.
En 1999, Java y PHP estaban en el punto que estn hoy Python y Ruby, y .NET no
exista. Por entonces se demandaba C++, Oracle Forms, Delphi y Visual Basic.
Errneamente hay gente que piensa que la demanda de Cobol era grandsima,
cuando era muy similar a la que hay ahora, Software Legacy y mantenimiento de
aplicaciones crticas (como por ejemplo las de los bancos). Es verdad que por

entonces los lenguajes dinmicos orientados a web (PHP y ASP) experimentaron


un fortsimo crecimiento.
Si miramos al futuro, ya hay mucho camino recorrido gracias a las aportaciones de
los distintos tipos de lenguajes al mundo del desarrollo de software. Creo que el
futuro de Python es muy prometedor, ya que adems de reciclar aspectos que ya
haca bien Java, aporta sencillez y un incremento en el rendimiento de los
desarrolladores que usan este lenguaje. Python va a crecer en proporcin a lo que
Google siga apostando por l. Sin embargo creo que Ruby se quedar en el camino
por muchos motivos (soporte, complejidad, madurez, anarqua...).
Hay gente que opina que PHP es anrquico y ha sido ampliamente aceptado, pero,
qu aporta Ruby sobre PHP? PHP demostr que se podan hacer sitios webs
dinmicos, multiplataforma, y en software libre de forma muy sencilla. Lo que
aporta Ruby sobre PHP aun no lo he descubierto.
Tambin los hay que opinan que Java es el nuevo Cobol o el nuevo C++, y yo
vuelvo a discrepar. En cierta medida es ms que Cbol por el nmero de
aplicaciones que se han desarrollado (ms all de su criticidad). Adems, el cdigo
Java es mucho ms mantenible, gracias a la arquitectura de tres capas (aunque el
patrn es independiente del lenguaje, las aplicaciones Cobol eran desarrolladas por
matemticos y fsicos que ignoraban los patrones de diseo y otras tcnicas de
ingeniera del software), pudindose incluso cambiar la interfaz grfica quedando
la lgica de negocio y/o el dominio como capas que se pueden mantener o no de
manera independiente.
Sinceramente Cobol nunca ha aportado gran cosa. Si no estuviera implantada
como solucin corporativa de los bancos, no nos acordaramos ni de su nombre.
En cuanto a C++ revolucion sobretodo la parte grfica de las aplicaciones. Su
orientacin a objetos era artificiosa por culpa de la retrocompatibilidad con C (Ansi
C est totalmente contenido en C++). Depurar un error a causa de un "puntero
loco", poda consumir semanas, y eso sin contar que nunca estabas totalmente
seguro de que el arreglo no conllevara efectos colaterales. Realmente el lenguaje
"pata negra", y que sigue siendo requerido en muchas empresas (sobretodo de
microelectrnica) es el C.
Aportaciones de Java al mundo del desarrollo software:
Java no se ha quedado estancado, se ha adaptado a la programacin Orientada a
Aspectos (ms all de la orientacin a objetos con el framework Spring, por
ejemplo), y tiene la comunidad de desarrolladores ms amplia del mundo.
Adems Java abarca: aplicaciones de escritorio, web, mviles y servicios. Es decir,
se puede hacer todo.
Si a eso, le sumamos su aportacin en el mundo de la Orientacin a objetos (fue el
primer lenguaje OO puro y que funcionara), persistencia de objetos (Hibernate,
IBatis, JPA), ORM (Hibernate), servicios web (REST, SOAP con Axis), frameworks
grficos (SWT, RCP, AWT, Swing), frameworks MVC (Struts), frameworks web (JSF,
Struts, Struts2), adaptacin total a UML, pruebas unitarias (JUnit, Testng), logeo

en consola (Log4J), dos fantsticos IDEs libres multilenguaje (Netbeans y Eclipse),


y todo ello multiplataforma (de manera transparente al programador), podemos
concluir que la aportacin de Java al mundo del desarrollo software es muy
superior a lo que pudo aportar en su da, Cobol, y C++.
Mercado actual
Ahora mismo el 60% de los proyectos que nos llegan son en Java (Web +
Movilidad). Me ha sorprendido ver como PHP ha crecido hasta el 30% en poca de
crisis. Me gustara encontrar una explicacin a este crecimiento (quizs como
consecuencia de los CMS Drupal y Joomla que han alcanzado un grado altsimo de
madurez). Sin embargo los proyectos en .NET se han reducido. Esto puede tener
sentido como consecuencia del coste de licencias, y debera de paliarse con Mono
(plataforma para desarrollo libre de aplicaciones .NET), pero no termina de
hacerse su hueco, pese a que C# me parece un muy buen lenguaje.
Me gustara tener demanda en Python, para poder tener algo de tiempo para
formarme, pero actualmente no la hay (en mi caso particular, y en Andaluca en
general).
Futuro
Dentro de cinco aos seguir habiendo trabajo para desarrolladores PHP y Java.
El desarrollador mejor formado, y ms maduro, debe abarcar varios lenguajes y
frameworks, eso le dar una perspectiva y una experiencia superior al que solo
domine un lenguaje. Esa ha sido mi experiencia personal.
Creo que cada vez ser menos importante "con qu se programe", el paradigma al
que se tiende es Software as a Service (SaaS) - Cloud Computing (aqu hay una
primera aproximacin). Apuesto por SOA (arquitectura orientada a servicios),
donde lo importante son los servicios y la interoperatividad, no el software de las
"tripas".

También podría gustarte