En el desarrollo actual de aplicaciones informáticas nos encontramos con una gran complejidad. Es difícil y costoso hacer un desarrollo de software. Es necesario dominar al menos un lenguaje, varias APIs y especificaciones, herramientas, procedimientos de compilación, empaquetado, despliegue… literalmente miles de páginas de documentación…

En una de las primeras entradas de este blog, ya traté el tema de la “industrialización del software“, o mejor dicho, la falta de “industrialización”. En esta entrada, exponía las que a mi juicio son las causas más importantes para que esto ocurra:

1.- la relativamente joven disciplina de Ingenieria del Software
2.- el alto porcentaje de demanda de software a medida
3.- el bajo grado de reutilización del software

Además de estas causas, o tal vez a consecuencia de ellas, en la construcción de una aplicación de software actual nos damos cuenta de lo tremendamente complicado que es el uso de las herramientas y APIs de desarrollo. Un desarrollador con conocimientos suficientes para programar una aplicación con rapidez y calidad necesita varios años de formación, o mas bien, un continuo aprendizaje diario para poder realizar su trabajo. Evidentemente para que un programador pueda dedicar este tiempo y esfuerzo a su formación se necesita que su sueldo sea acorde a esta cualificación. Sin embargo en países como España se suele menospreciar este perfil considerándolo una especie de de aprendiz, obligado a seguir una carrera profesional en la que pasara con suerte por analista técnico, analista funcional para pasar seguidamente al mundo de la “gestión” como jefe de proyecto o incluso gerente.En este sentido, es clarificador la entrada publicada en en Barrapunto ¿por qué el programador no es la estrella?

Esta es la situación que nos encontramos a diario en las compañías de desarrollo de software. Tenemos una cantidad importante de programadores júniors, mal pagados y seguramente mal formados, que forman la mano de obra que construye estos proyectos “industriales” que son las aplicaciones informáticas.

Si no somos capaces de estandarizar los procesos de fabricación del software, y no fomentamos de verdad la reutilización de los componen, seguiremos ante un “arte” en lugar de una industria. Y no se podrá desarrollar aplicaciones de maner eficiente.
Estamos pues en una situación que esta lejos de ser la deseable, por una parte el desarrollo de aplicaciones informáticas es muy complejo, sin procedimientos estandarizados, y por otro no se tienen profesionales cualificados y con experiencia para realizar estos desarrollos (con frecuencia mal pagados)

¿cual es la solución?
En estos momentos la solución pasa por simplificar el desarrollo, bajando los skills necesarios de los programadores, y aumentando de paso la velocidad de desarrollo (mejorar el time to market). Claro que ¿cómo se consigue esto? En las grandes empresas al menos, esto pasa por que el Área de Arquitectura defina una capa de abstracción por encima de los numerosos y complejos APIs de programación simplificando drásticamente el desarrollo. Por supuesto, debe haber una solución de compromiso entre los componentes propietarios que crea una empresa para poner a disposición del programador y disminuir la complejidad y los estándares imperante sen el mercado. Cuando más cerca de los estándares más complejo será el desarrollo, cuanto más cerca de los componentes propietarios (o esta capa de software que te abstrae de la complejidad) más simple será el desarrollo pero menos personal formado podremos encontrar en el mercado.
Nos guste o no, de la misma manera que en una cadena de montaje de automóviles, no es necesario que sus operarios sean ingenieros industriales, no debe ser necesario que los desarrolladores de software sean ingenieros informáticos. Aunque de la misma manera, si el equipo técnico que diseña los coches son ingenieros industriales ¿no deberían ser ingenieros informáticos los que diseñan las aplicaciones?

Share

Anuncios