Por Alvaro
21/04/2009
Enviar esta pagina a un amigo.
Es 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. Visto aqui y aqui.
|