Sobre el proceso de desarrollo de software en mi ciudad

Mientras respondía a un post de Douglas, un colega de la comunidad, me di cuenta de que mi comentario se extendía un poco más de lo normal, por lo que decidí mejor publicar un post en mi blog y así extenderme un poco más.

Douglas comenta su interés por conocer si es que realmente el proceso de desarrollo que propone Microsoft a través de Visual Studio Team System podría significar un cambio en el modelo tradicional que se puede ver en una gran cantidad de empresas de desarrollo de Guayaquil y si realmente se obtiene alguna ganancia de adoptar ese tipo de proceso.

El modelo de desarrollo (si se le puede llamar modelo) que usualmente se utiliza acá en Guayaquil (no sé si en el resto del país) carece de incontables falencias y yo lo he experimentado una y otra vez en cada empresa de desarrollo para la que he trabajado. Afortunadamente llevo poco más de un año trabajando para John Galt, una empresa extranjera con oficinas en Guayaquil a modo offshore y acá, por lo menos, no se utiliza ese estilo de desarrollo.

En mi empresa trabajamos utilizando una combinación entre las metodologías MSF for Agile y MSF for CMMI, buscando sobre todo un desarrollo ágil y mantener siempre la más alta calidad posible. Acá no nos complicamos con toneladas de papeles de documentación ni con diseños, ni arquitecturas súper complejos, sino que principalmente nos enfocamos en entender lo que realmente desea el cliente (con feedback constante), tener el equipo de desarrollo de más alto nivel posible (cero programadores junior) y tener un excelente equipo de testers que aseguren la calidad del producto final.

Visual Studio Team System ha sido fundamental para poder implementar el proceso de desarrollo con éxito, porque provee en gran medida de la infraestructura básica para poder integrar el trabajo de todo el equipo y llevar tracking de todo el avance. No puedo decir que sea una herramienta perfecta, pero no me imagino yo en este punto trabajando sin Team System, por la cantidad de facilidades que ofrece y por la forma como se integra al proceso de desarrollo que elegimos.

Cambiar la mentalidad de quienes dirigen los proyectos de desarrollo en esta ciudad es ridículamente difícil y complejo y requiere, sobre todo, cambiar la mentalidad de los líderes de estas empresas, pues son solo ellos quienes pueden dar la pauta para hacer el cambio. En mi empresa nos falta mucho, pero mucho, para llegar a un nivel de madurez de desarrollo aceptable, pero por lo menos creo que ya hemos dado un pequeño paso hacia adelante.

Debo anotar también que, como siempre, pues hay notables excepciones, así que en Guayaquil sí existe una que otra empresa que maneje un proceso de desarrollo más maduro, aunque generalmente son sucursales de multinacionales que vienen a hacer inversión en este país. Así mismo, debo recalcar que no soy ningún experto en metodologías de desarrollo, por lo que lo expuesto aquí es solamente mi apreciación personal en función de lo que he experimentado en mi vida de desarrollador.

Para quienes estén interesados, les sugiero revisen este link, que es el punto de entrada para conocer sobre MSF y Team System, y también el blog de Randy Miller, quien es una de las principales personas detrás de la concepción de MSF for Agile y MSF for CMMI.

Julio.

Published 06 August 2007 08:07 AM por Julio Casal

Comentarios

# vidapogosoft said on 06 August, 2007 02:55 PM
En mi empresa trabajamos utilizando una combinación entre las metodologías MSF for Agile y MSF for CMMI, buscando sobre todo un desarrollo ágil y mantener siempre la más alta calidad posible. Acá no nos complicamos con toneladas de papeles de documentación ni con diseños, ni arquitecturas súper complejos, sino que principalmente nos enfocamos en entender lo que realmente desea el cliente (con feedback constante), tener el equipo de desarrollo de más alto nivel posible (cero programadores junior) y tener un excelente equipo de testers que aseguren la calidad del producto final. estoy de acuerdo con lo comentado en este articulo Pero? Un programador junior no puede formar parte de un equipo de desarrollo de alto nivel? recordar siempre que todos nosostros tuvimos la oportunidad de primero ser programador junior, para despues tener la experiencia necesaria........
# Julio Casal said on 06 August, 2007 04:05 PM

Bueno amigo, tal vez no me expliqué bien al diferenciar a un desarrollador junior de uno senior. Un desarrollador junior es aquel que conoce cuestiones básicas sobre una u otra tecnología, pero que aún está en proceso de aprendizaje. En cambio, un desarrollador senior ya ha logrado adquirir un nivel de conocimiento tal de las tecnologías a utilizar en el proyecto que puede dominarlas y sacarles el máximo provecho en cualquier momento.

Lo más probable es que los desarrolladores senior sean aquellos que tienen mayor experiencia trabajando en empresas. Sin embargo, es perfectamente posible que un desarrollador que aún no haya tenido mucha experiencia, sí se haya preocupado por estudiar a fondo la plataforma y practicar mucho, aún con proyectos universitarios, y eso podría convertirlo en un desarrollador senior.

Esta diferencia se puede comprobar fácilmente durante el proceso de selección, en el cual deben hacerse preguntas que demuestren el nivel de conocimiento de la plataforma del postulante y que demuestren también su capacidad para resolver problemas complejos bajo presión. No importa la edad, raza, sexo ó experiencia previa. Si logra pasar un proceso de selección riguroso, entonces es un desarrollador senior y está apto para entrar a una empresa seria de desarrollo.

Muchas empresas extranjeras también manejan el concepto de "Interns", que sería similar a nuestros "pasantes". Lamentablemente en nuestro medio a los pasantes los mandan a hacer tareas ridículas de papelería ó cosas por el estilo. Pero en países desarrollados ellos forman parte integral de equipos de desarrollo, aunque con tareas de menor riesgo y complejidad, justo para que se vayan preparando para retos futuros más complejos.

Un desarrollador junior debe tener entonces la posibilidad de crecer en su carrera, pero solo en proyectos pequeños y de poco riesgo. Para proyectos medianos y grandes, con alta presión y complejidad, solamente se aceptan desarrolladores senior que tienen un alto conocimiento de la plataforma y las tecnologías a utilizar. En el mundo del desarrollo de software simplemente no tienes tiempo ni te puedes dar el lujo de arriesgarte en un factor tan importante como el recurso humano. Trabajar con personal inexperto es mortal para cualquier proyecto.

Espero haber aclarado mi punto un poco más.

Julio.