Introducción a los escenarios ALM con Visual Studio

El desarrollo de proyectos software es una de las labores o profesiones más atractivas de la actualidad. Nunca antes, el desarrollar software, en cualquiera de sus variantes (desarrollo web, aplicaciones tradicionales, mobilidad, etc.) ha contado con tantas herramientas, metodologías e información como ahora. No ha habido un periodo de tiempo en el que el software haya estado más presente en nuestras vidas tanto profesionales como personales. Basta recordar el "claim" de Visual Studio 2010: "Life Runs On Code"

Todo lo que nos rodea, de alguna manera, está relacionado con uno o varios componentes software. Nuestro teléfono móvil, nuestro portátil o el PC de nuestro puesto de trabajo, los aparatos que utilizamos para nuestro ocio diario (consolas, reproductores de vídeo o música, etc.). Todo ello, en algún momento, depende de aplicaciones o servicios construidos gracias al software.

Pero, también es curioso como ante esta época dorada del software, con sus grandes avances y su espléndido horizonte, algunas cuestiones siguen ancladas en el pasado. Una de ellas es, por ejemplo, como se sigue contemplando al desarrollo software como una artesanía o en el mejor de los casos como una maestría. Y a menudo son personas con un tremendo bagage técnico las que siguen viendo así las cosas. Cuantas veces algunos de nosotros hemos hablado con responsables de equipos de desarrollo, o con directivos de departamentos de I+D+i que siguen creyendo que el desarrollo del software que su organización precisa para funcionar y competir en el entorno actual es un conjunto de tareas desempeñadas por equipos de personas que suponen empresarialmente un mero coste para la organización y no una inversión. Que esos equipos de desarrollo no precisan organización, ni herramientas, ni procesos porque son perfiles creativos y no técnicos. Que la inversión en herramientas y procesos para gestionar el desarrollo software no tiene una razón clara para ser tenida en cuenta dentro de sus planes tácticos o estratégicos. Llegando incluso más lejos, que las herramientas con las que esos equipos efectuan su labor son "commodities" y que da lo mismo una que otra, si total desarrollar software es un proceso de escribir código, y para escribir código incluso con el Vi o el Emacs (mis recuerdos a los editores de código en los que más tiempo he pasado durante mi trayectoria como desarrollador) se puede hacer.

En parte, esta visión que a muchos parecería de otras décadas, está causada por cómo se posiciona todo lo relativo al desarrollo software. Es decir, desde de un punto de vista de marketing de producto, o desde un punto de vista comercial, se comercializan las herramientas de desarrollo o se presentan los modelos de gestión del desarrollo, de la misma manera a cómo se vendían los automóviles hace 4 ó 5 décadas, o a como se ofertaban los primeros ordenadores personales de hace 3 décadas. La oferta se centra excesivamente en las características del producto: "Equipe a sus equipos de desarrollo con la solución X porque podrán utilizar la característica Y, la Z o la W". ¿No recuerda esto a los spots de televisión de automóviles o lavadoras de la de la época?. ¿Cuánto ha cambiado el marketing y la publicidad de esos productos desde entonces?. En la actualidad esos productos se ofertan comunicando a los potenciales compradores los beneficios que supondrán para ellos en cuestiones como fiabilidad, seguridad, comodidad, etc. Incluso últimamente lo que se intenta es asociar esos productos con determinadas sensaciones o sentimientos que puedan resultar atractivos a los usuarios (baste como ejemplo las campañas de marketing de BMW de los últimos años por poner un único ejemplo).

Pensando sobre todo esto, surgió la idea de intentar posicionar el desarrollo software y las herramientas de desarrollo de Visual Studio de una manera similar, para de esta manera intentar comunicar o posicionar mejor la oferta de esos productos. Vaya por delante que no pretendermos ofertar Visual Studio a nuestros potenciales compradores con aquello de: " ¿Te gusta desarrollar? " que decían los spots de BMW, pero si que intentamos salir de la mera oferta técnica o centrada en las características del producto o la solución, para ampliar un poco el enfoque y hacer ver a nuestros potenciales compradores que la compra de soluciones de ALM debía estar fundamentada por cuestiones que resultarían más cercanas a sus necesidades o problemáticas. Posicionar una solución ALM como Visual Studio centrándonos en las características no es tan efectivo como posicionarla indicándole a los potenciales clientes cómo con ella podrían solucionar problemas como la productividad de sus equipos de desarrollo, o el nivel de gestión y seguimiento que podrían tener sus proyectos, o cómo la calidad de sus aplicaciones, y por ende la satisfacción de sus usuarios, aumentaría.

Estas problemáticas o situaciones a las que nuestros clientes o usuarios se enfrentan día a día, es lo que hemos venido a plantear como "Escenarios ALM". Es decir, situaciones que entendemos son comunes en el día a día de nuestros clientes, y que gracias a las soluciones de desarrollo de Visual Studio podrían solucionarse o mejorarse. Evidentemente, cada organización o equipo es único y las problemáticas de cada uno no tienen porqué coincidir con las de otros, pero si que es cierto, después de conocer un poco el sector, que los escenarios tipo no son demasiados.

Por todo esto, creo que sería interesante escribir en este blog, una serie de posts o artículos en los que presentar esos escenarios y también cómo Visual Studio podría ayudar a solucionarlos o mitigarlos.

En una primera aproximación, la lista de escenarios relativos al desarrollo software podría ser esta:

ALM como Proceso Crítico de Negocio

Habitualmente estamos acostumbrados a oir cómo las organizaciones gestionan y mejoran sus procesos de negocio. También es habitual o incluso obligatorio que dichos procesos están soportados por complejos y costosos sistemas de software. Seguro que una organización moderna dispone de recursos económicos y productivos para procesos como la gestión de clientes, el calculo de nóminas, el control financiero contable, y así hasta una extensa lista de sistemas software que dan soporte a los procesos de negocio. Lo que es menos habitual es que esas mismas empresas no vean la necesidad de gestionar adecuadamente sus proyectos de desarrollo software o si lo hacen, que no contemplen al proceso de desarrollar y mantener sus sistemas software como un proceso de negocio más y que debería ser considerado al menos tan crítico como otros procesos dentro de la organización. Si el software forma parte intrínseca de sus procesos críticos de negocio, ¿por qué el proceso de gestión de los proyectos software no es a su vez un proceso crítico?

Gestión de Proyectos o Equipos de Desarrollo Heterogéneo o Multiplataforma

En el panorama actual con una amplia oferta de tecnologías y fabricantes es frecuente que las organizaciones tengan equipos de desarrollo que trabajen desarrollando aplicaciones para diferentes plataformas (.NET, Java, COBOL, etc.). Normalmente esta "dispersion tecnológica" hace que los diferentes equipos y proyectos utilicen modelos de gestión del ciclo de vída diferentes y también sus propias herramientas que los soporten. Todo esto hace que se produzcan ineficiencias en el trabajo de los diferentes equipos, que se incrementen los costes de gestión y soporte de los diferentes sistemas ALM, que no exista un proceso o procesos ALM unificados y controlados por la organización, y en general otros problemas que afectarán negativamente a la organización. Visual Studio y su soporte multiplataforma para la gestión del ciclo de vida del desarrollo puede ayudar a establecer y definir un proceso ALM unificado que permita detectar y eliminar las deficiencias en esos procesos, reduzca los recursos necesarios para gestionar dichos procesos y fomente la colaboración entre diferentes equipos de desarrollo especializados.

Gestión de Equipos o Proyectos de Desarrollo con Equipos Geográficamente Dispersos

Muchas organizaciones se ven enfrentadas a escenarios en los que sus equipos de desarrollo están ubicados en diversas localidades geograficamente separadas. También puede ocurrir que en una organización los perfiles de gestión de proyectos estén en las oficinas centrales de la multinacional y los equipos de desarrollo estén otras ubicaciones donde las condiciones economico-financieras de la zona sean más ventajosas ("off-shoring"). Estos casos y otroso similares pueden ser fácilmente resueltos con Visual Studio, de manera que los proyectos de desarrollo no se vean afectados de manera negativa y puedan aprovechar las ventajas de modelos como "off-shoring" o "outsourcing" sin necesidad de afrontar tareas de gestión adicionales al trabajo habitual.

Aseguramiento de la Calidad en los Desarrollos Software

Hoy en día es importante poder garantizar que nuestros proyectos de desarrollo no solo cumplen los objetivos de tiempo y recursos, si no que además es fundamental garantizar en todo momento que el sistema o la aplicación cumple los requisitos demandados por los usuarios finales, y además también cumple los estándares de calidad técnica que se definen para el proyecto en cuestión o para toda la organización. Un proceso moderno de gestión del desarrollo software debe ser capaz de garantizar la máxima calidad dentro de todas las fases y tareas que lo componen, y también, los equipos de desarrollo deben de contar con las herramientas adecuadas que les permitan construir aplicaciones de calidad.

Gestión Empresarial de Proyectos de Desarrollo

En las organizaciones actuales, desde hace varias décadas, existe una cultura arraigada de gestión de proyectos. Las empresas valoran y seleccionan sus proyectos utilizando técnicas y herramientas avanzadas como Gestión de Portfolio de Proyectos (PPM), Gestión Empresarial de Proyectos (EPM) o utilizan Sistemas de Información para la Gestión Ejecutiva (EIS). Dentro del mundo del desarrollo software, la información del seguimiento y avance de los proyectos debe alimentar los sistemas avanzados de planificación empresarial, lo cual de manera casi constante supone una carga de trabajo adicional a los equipos de desarrollo. ¿Cómo se puede hacer compatible que los equipos de desarrollo se dediquen exclusivamente a lo que mejor saben hacer - desarrollar software - mientras que se sigue suministrando de vital información a los sistemas de gestión empresarial de la organización?. Es sencillo si se cuenta con un proceso de gestión del desarrollo adecuado y que a su vez esté soportado por herramientas, como las que ofrece Visual Studio,  que faciliten el flujo de información con el mínimo esfuerzo.

Administración de la Propiedad Intelectual en Proyectos de Desarrollo

Las organizaciones actuales gestionan cada vez más activos intangiles como patentes, marcas, contratos, etc. Lamentablemente, también es habitual que uno de sus activos intangibles más importantes como puede ser la propiedad intelectual de sus proyectos de desarrollo no esté contemplado dentro de esa gestión de activos, especialmente si los proyectos de desarrollo son externalizados a proveedores externos especializados que normalmente se limitan a entregar los resultados finales del proyecto, dejando aparte elementos críticos como la documentación del proyecto, los entregables intermedios o incluso algo tan vital para el contratista como es el código fuente. Un proceso de gestión del ciclo de vida de las aplicaciones debe ayudar a las organizaciones clientes a poder gestionar, con el minimo esfuerzo, esos intangibles que le permitirán poder afrontar por si mismas el mantenimiento y evolución de las aplicaciones o sistemas contratados.

Aseguramiento del Rendimiento y Escalabilidad en Aplicaciones o Servicios

En este panorama actual de mercados altamente competitivos y con ciclos de desarrollo de productos y servicios cada vez más cortos, los costes asociados a la mal rendimiento de nuestras aplicaciones pueden ser elevados. Además, dichos costes a menudo pueden ser difíciles de cuantificar puesto que impactan sobre activos intangibles como la imagen de marca o la productividad de la plantilla de la organización. Ahora que vivimos en una sociedad altamente conectada y que hace uso extensivo de servicios en línea gracias a internet, es mandatorio que las organizaciones puedan asegurar el correcto funcionamiento de sus servicios y aplicaciones independientemente de los volúmenes de peticiones realizadas por los clientes finales o los empleados de las misma. Una vez más, los proceso e gestión del ciclo de vida de las aplicaciones implantados dentro de las organizaciones deben ayudar a que el rendimiento de las aplicaciones esté de alguna manera garantizado y que esas mismas aplicación o servicios reaccionen de manera flexible a picos de demanda por parte de los clientes o usuarios finales.

Como se suele decir: "están todos los que son, pero no son todos los que están". Habrá organizaciones que se enfrenten a escenarios o situaciones adicionales a estas, o a mezclas de varias de las de la lista. Si ese es el caso, mi contacto está a disposición de los interesados para que comentar sobre el tema y tratar de encontrar la mejor forma de enfrentarse a ellos con las solución de ALM de Microsoft Visual Studio.