• Las entidades vivas de JPA Develamos el misterio: ¿qué relación mantienen los objetos con la base de datos?
  • La fábula de Arturo Un valiente caballero nos enseñará las consecuencias de la deuda técnica.
  • 4 consejos para presentar como un samurai Averiguamos lo que tienen en común un samurai y un presentador efectivo.
  • Cómo alimentar nuestra creatividad Ideas para alimentar la creatividad cotidiana de los equipos de trabajo.

RobotEs importante asegurarse que nos estamos beneficiando lo más posible cuando invertimos tiempo y esfuerzo en capacitarnos y aprender cosas nuevas.

En la siguiente lista veremos las 10 habilidades que deberíamos aprender para que nuestro currículum sea relevante por los siguientes 5 años. Esta lista no es completa ni cubre algunos nichos de mercado (como ser los mainframes). Sin embargo, si aprendés al menos siete elementos de esta lista no te vas a equivocar.

1. Uno de los "3 Grandes" (Java, .NET, PHP)

A menos que ocurra algún cambio radical en el mundo del desarrollo (como ser un asteroide que caiga sobre Redmond), la mayoría de los desarrolladores van a necesitar conocer alguno de los Tres Grandes sistemas de desarrollo: Java , .NET (VB.NET o C#), o PHP. Y tampoco alcanza con conocer al lenguaje principal. A medida que los proyectos crecen y van acaparando más funcionalidad, vamos a necesitar conocer los frameworks y librerías asociadas con profundidad.

2. Aplicaciones Ricas de Internet (RIA - Rich Internet Applications)

Lo pueden amar u odiar, pero en los últimos años Flash se está usando para algo más que animaciones graciosas. Flash también obtuvo funcionalidad adicional en la forma de Flex y AIR. Los competidores de Flash, como JavaFX y Silverlight, también están mejorando en caracerísticas y performance. Los navegadores están mejorando sus motores JavaScript, el cual se perfila como una plataforma de aplicaciones web. Para hacer las cosas más complicadas, HTML 5 va a incorporar montón de funcionalidad RIA, incluyendo conexión a la base de datos, poniendo así el sello formal de la W3C a AJAX. En el futuro cercano, tener experiencia en RIA va a ser un factor determinante en nuestro currículum.

3. Desarrollo web

El desarrollo web no va a desaparecer en el futuro. Muchos desarrolladores hasta ahora estuvieron felices ignorando la web, o sólo quedándose con "lo básico" que les brindaba su framework. Pero las empresas están demandando más y más a quienes realmente conocen cómo trabajar con las tecnologías subyacentes. Así que deberemos mejorar nuestros conocimientos de JavaScript, CSS y HTML para tener éxito en los próximos cinco años.

4. Servicios web

¿REST o SOAP? ¿JSON o XML? Aunque las elecciones y las respuestas dependen del proyecto, cada vez es más dificil ser un desarrollador sin tener que consumir Servicios Web (incluso aunque nuestro desarrollo no sea una aplicación Web). Incluso las área que solían ser terreno de ODBC, COM o RPC ahora están avanzando hacia Servicios Web de algún tipo. Los desarrolladores que no puedan trabajar con Servicios Web van a terminar relegados a tareas de mantenimiento en código legacy.

5. Habilidades humanas

Hay una tendencia que viene ocurriendo hace ya un tiempo: la creciente visibilidad de IT dentro y fuera de la organización. Los desarrolladores están participando más y más de reuniones que no son de desarrollo y de procesos para obtener feedback de ellos. Por ejemplo, el CFO no puede cambiar las reglas de contabilidad sin trabajar junto a IT para actualizar el sistema. Y un gerente de operaciones no puede cambiar el proceso de los call caenter sin que IT actualice el workflow del CRM. De la misma forma, los clientes a menudo necesitan trabajar directamente con los equipos de desarrollo para asegurarse que se cumplan sus necesidades. ¿Va a ser necesario que todos los desarrolladores estudien Cómo hacer amigos e influenciar personas? No. Pero los desarrolladores que lo logren van a ser mucho más valiosos para sus empleadores - y serán muy buscados en el mercado.

6. Un lenguaje de programación dinámico y/o funcional

Los lenguajes como Ruby, Python, F# y Groovy todavía no son muy populares - pero si lo son las ideas detrás de ellos. Por ejemplo, el sistema LINQ en .NET es un descendiente directo de las técnicas de programación funcional. Tanto Ruby como Python son cada vez más populares en algunos sectores, gracias al framework Rails y Silverlight respectivamente. Aprender uno de estos lenguajes no sólo va a mejorar nuestro currículum, sino también que va a expandir nuestro horizonte. Todos los grandes desarrolladores recomiendan aprender al menos un lenguajes dinámico o funcional para lograr aprender nuevos formas de pensar.

7. Metodologías ágiles

A medida que pasa el tiempo, las ideas detras de Ágil se vuelven más definidas y mejor expresadas. Muchas organizaciones están adoptando Ágil o haciendo pruebas de concepto con Ágil. Aunque Ágil no es la bala de plata para evitar fracasar en un proyecto, definitivamente tiene su lugar en muchos proyectos. Los desarrolladores que tengan experiencia en trabajar y comprender los ambientes Ágiles van a ser cada vez más demandados en los próximos cinco años.

8. Conocimiento de dominio

De la mano con las metodologías ágiles, los equipos de desarrollo son cada vez más vistos socios en la definición de proyectos. Esto significa que los desarrolladores que comprendan el problema del dominio van a poder contribuir al proyecto de una forma muy visible y valiosa. Con Ágil, un desarrollador puede decir "Desde aquí, podemos agregar esta funcionalidad muy facilmente, y obtendremos mucho valor", o "Hey, este requerimiento no está acorde al patrón de uso que muestran los logs". Por más que muchos desarrolladores resistan la idea de conocer nada sobre el problema de dominio, no puede negarse que cada vez más organizaciones prefieren (si no incluso requieren) a desarrolladores que al menos comprendan lo básico sobre el negocio.

9. "Higiene" de desarrollo

Hasta hace pocos años atras, muchas (si no todas) las organizaciones no tenían acceso a sistemas de bug tracking, control de versiones y otras herramientas; todo se resumia a los desarrolladores y su IDE preferido. Pero gracias a la creación de nuevos entornos integrados de desarrollo y la explosión de entornos de software libre de alta calidad, ya casi no existen organizaciones sin estas herramientas. Los desarrolladores tienen que conocer mucho más que sólo hacer un checkout del código. Necesitan tener un hábito riguroso de higiene para asegurarse que están correctamente coordinados con el equipo. Los "programadores solitarios" que guardan todo local, que no documentan los cambios y demás, no van a ser bienvenidos en las organizaciones tradicionales, y van a a quedar directamente fuera de lugar en los entornos Ágiles, en donde se utiliza una coordinación fuerte entre los equipos para operar.

10. Desarrollo móvil

Durante los fines de 1990 el desarrollo web creció y ganó adopción general, para así comenzar a desplazar a las aplicaciones tradicionales de escritorio. En 2008, el desarrollo para dispositivos móviles despegó finalmente, y en los próximos cinco años va a crecer de forma constante. Por supuesto, existen varios enfoques al desarrollo móvil: aplicaciones web diseñadas para funcionar en dispositivos móviles, RIAs apuntadas a este mercado, y aplicaciones que se ejecutan directamente en los dispositivos. Sin importar qué camino elijamos, nos va a servir agregar el desarrollo móvil a nuestro grupo de habilidades.

Basado en 10 skills developers will need in the next five years.

Inspiración.

"Si tú tienes una manzana y yo tengo una manzana e intercambiamos las manzanas, entonces tanto tú como yo seguiremos teniendo una manzana cada uno. Pero si tú tienes una idea y yo tengo una idea, e intercambiamos las ideas, entonces ambos tendremos dos ideas"

Bernard Shaw