viernes, 14 de octubre de 2011

Un médico a la derecha, por favor... ¡Ah! Y un Freud a la Gerencia de IT por Eugenia Bahit

Diseñador, desarrollador, programador, Analista Programador, Analista Funcional, Arquitecto de Software, Scrum Master, Líder de Proyecto... ¡Qué va! Si son todos la misma “cosa”: informáticos.

¡Ay, caballero! ¿No le han dicho nunca que la pomada marrón y el dulce de leche solo tienen un color similar pero no saben igual?

Sucede a menudo en el campo de la informática, que la ignorancia institucionalizada de las compañías intelectualmente mediocres, nos gane más de una batalla a los “informáticos”. Parece que todos somos, hacemos y servimos a los mismos fines. Pero ¿a cuáles fines? Es una pregunta que nadie sabe responder con exactitud. Aparentemente el programador debe diseñar, mientras que el arquitecto debe programar y el Scrum Master responder a un Líder de Proyecto.

La terapia de cambio de roles, puede ser algo sumamente divertido - o aburrido -, siempre y cuando se tenga en claro, que solo es “un juego de aprendizaje”. Cuando es llevado al ámbito laboral, ignorando que se están confundiendo los roles, pueden obtenerse resultados caóticos. Y si no me creen, analicemos una escena de la vida real:

Aviso de empleo publicado en Junio de 2011 en uno de los portales de empleo más prestigiosos:

Analista Programador PHP Senior

En [nombre_consultora_IT] estamos en la búsqueda de un desarrollador PHP para importante multimedio.

Requisitos excluyentes:

PHP

MySQL

HTML, CSS

Maquetación

JavaScript

AJAX, JQuery

+5 años de experiencia

Deseable pero no excluyente:

SQL Server

SOAP

Plataformas Mobile

cakePHP, Joomla, Wordpress, CodeIgniter

Conocimientos de Scrum

Principales responsabilidades:

Relevar los requerimientos funcionales y elaborar la documentación de alcance correspondiente y cronograma de entregables

Desarrollar e implementar el sistema

Reportar periódicamente el avance del desarrollo al Líder de Proyecto

Brindar soporte a los usuarios

Y voy a parar acá. Para quienes entiendan, lamento haberles provocado “ese” estado de malestar que están padeciendo en este preciso instante (no me culpen). Reconozco que pude haber elegido un ejemplo menos dañino para la inteligencia del lector, pero me atrajo la idea de ser tan “absurdamente ejemplificador”.

El anuncio, lamentablemente es real. Por ello, me veo en la obligación de preguntarles: ¿notaron cuantos roles debería cumplir el Analista Programador si aceptara el puesto en cuestión?

Confieso que cuando lo leí, me preguntaba si también sería necesario ponerse un plumero en la oreja para quitarle el polvo al mobiliario de la compañía mientras ocupaba las manos tipeando. Admito que al día de hoy, aún sigo con la duda...

Que el verdulero de la vuelta de mi casa, no entienda la diferencia entre un programador y un Arquitecto de Software, no solo es entendible: es claramente admisible. Pero que un “IT Recruiter” (ahora parece que así, les gusta llamarse a los Psicólogos laborales que trabajan en consultoras de empleo especializadas en Sistemas) o peor aún, un Gerente de Sistemas no tenga la capacidad o voluntad de comprender tamaña diferencia, es como mínimo, negligente y cuando no, un acto de “viveza criolla”.

Porque ¿para qué “pecar” de ingenuos? ¿realmente ignoran la diferencia? Da la casualidad que gracias a esta “supuesta ignorancia”, con un único sueldo, pueden cubrir un puesto de Analista Funcional, Diseñador Web, Maquetador, Programador y Analista Programador. Wow! ¡Baritito, baratito! ¿no? Es como salir de Shopping a la feria de La Salada. Eso sí: No vale pedir garantía de calidad.

Pero, como decía la abuela: “Siempre hay un roto para un descocido”. Lástima que “el pato” no precisamente, lo pagan “los rotos”...

Definamos entonces, los roles que mayor controversia generan:

Analista Funcional:

El Analista Funcional es el encargado de relevar los requerimientos funcionales del usuario final del sistema informático que se quiere desarrollar a fin de transmitirlos al Analista Programador.

Desarrollador:

Originalmente, desarrollador se utilizó para englobar las tareas de un Diseñador Web con conocimientos básicos de programación, que le permitieran incorporar funcionalidades del lado del servidor a un sitio Web. De allí, que surge “Desarrollador Web”. El Desarrollador Web no necesariamente programaba, sino que gracias a sus conocimientos generales de programación, podía modificar el código escrito por un programador para complementar el Diseño Web.

Luego, comenzó a emplearse el término “Desarrollador”, seguido de un lenguaje de programación (“Desarrollador PHP” resume la frase “diseñador web con conocimientos básicos de PHP), a fin de “sintetizar” los conocimientos adicionales con los cuales debía contar el Diseñador Web. Sin embargo, a pesar de la ambigüedad del “eufemismo” (pues lo es!), esto NO modifica la función del desarrollador: un desarrollador, sigue siendo un diseñador Web con conocimientos generales de programación, pero no es programador.

Programador:

La Real Academia Española, define “programador”, como la persona encargada de “elaborar programas para la resolución de problemas mediante ordenadores”. El programador es conocedor experto de al menos un lenguaje de programación, y su única tarea, es elaborar un programa informático, es decir, “programar” un sistema informático, utilizando diversos paradigmas y lenguajes de programación.

Analista Programador:

Es quien partiendo del previo análisis efectuado por el Analista Funcional, organiza la información relevada, realiza un ANÁLISIS TÉCNICO global y decide las herramientas necesarias a utilizar para finalmente, programar el sistema informático que le ha sido encomendado. Es decir, es un programador que además, realiza un análisis técnico previo.

Arquitecto de Software:

El rol del Arquitecto de Software es el que más controversias genera, pues en la práctica, cada empresa otorga al título, el rol que más se asemeje a las necesidades del negocio. Lo cual incurre en un gravísimo error.

Así como el Analista Programador realiza un “análisis técnico” antes de programar, el Arquitecto de Software, va mucho más lejos, realizando un análisis físico y lógico de la estructura global de un sistema informático y su entorno, basando su análisis no solo en los requerimientos funcionales relevados previamente por Analista Funcional (como es en el caso del Analista Programador), sino además en los objetivos y restricciones del sistema, definiendo de manera abstracta, los componentes del mismo y la forma en la cual se comunicarán.

Eugenia Bahit

Nota de Rootlinux: Lo mismo pasa en el sector de Tecnología! queremos agradecer a Eugenia por el tiempo dedicado a escribir y regalarnos estos pensamientos.