Dec 02 2008

Problemas en gestión de proyectos de software

Hace algunas horas Cristian comentaba acerca del post sobre las lecciones que se pueden tomar del software libre para la gestión de proyectos. Aquí su comentario:

Que tal Rudy te saluda Cristian Villalta acabo de leer el articulo y me parece de mucha utilidad pues justo ando trabajando en una tesis relacionada a la gestion de proyectos y software libre. Queria hacerte un par de preguntas:
Que problemas son los mas comunes, desde tu punto de vista, en la gestion de proyectos … y … cual es el impacto del Sw libre en la gestion de proyectos, desde ya agradecido.

Saludos.

Originally posted as a comment by Criso on a subversive act of playful cleverness using Disqus.

Los problemas que he observado en los proyectos de software tienen que ver generalmente con respecto a la gestión de equipo y recursos. Por otro lado, uno de los temas que presenta muchas situaciones complicadas es la definición del ámbito del proyecto y los requisitos del mismo. De hecho, hoy, existe una rama de software que se dedica específicamente a la ingeniería de requisitos.

Para el primer caso, el software libre tiene la ventaja de que los integrantes del equipo o proyecto trabajan en aspectos que son de su interés, de esta manera el proyecto en global se beneficia teniendo mejores resultados, personas comprometidas y apasionadas con su trabajo. Sin embargo, esto presenta el problema de que, generalmente, se pierde un poco el sentido de visualización integral del proyecto, cosa que se suele mejorar con la incorporación de roles de coordinación, por ejm. lo que hace Linus Torvalds o Andrew Morton en el kernel linux.

Además, gracias a las herramientas que ha adoptado la comunidad de software libre para soportar su desarrollo, los procesos generalmente tiene un soporte adecuado por lo que se hacen, hasta cierto punto, eficientes. A medida de que una organización tenga sus procesos mejor estructurados y estandarizados podrá obtener mejor provecho de las herramientas que tiene disponibles, y no al contrario. Esto último es algo que observo en muchas organizaciones, generalmente adquieren software que puede ofrecerles infinidad de posibilidades, razón por la cual otras empresas lo emplean, sin embargo al no tener la base definida es poco el provecho que obtienen pues no se busca optimizar el proceso a través del empleo herramientas.

Respecto al tema de definición de requisitos y ámbito del proyecto, podemos tomar, del software libre, como aspecto relevante la constante interacción con el usuario final a través de sus procesos de retroalimentación y la publicación de versiones en etapa temprana (beta). Esto permite que el desarrollo se realice a medida que se encuentre una necesidad del usuario. Sea un informe de fallo, solicitud de características nuevas, modificación de funcionalidad, etc. estas incidencias son las que usualmente activan los esfuerzos de desarrollo y mantienen una línea de vida constante en el proyecto de software. Si se pierde el interés en el software o no se obtiene esta retroalimentación, usualmente el desarrollo se estanca y suele quedar abandonado.

Comments

Nov 25 2008

Academia y software libre en la UPC

Published by Rudy Godoy under Academia, Free Software, Talks

El software libre, desde sus inicios, ha tenido un estrecho vínculo con la academia. Proyectos como GNU, FreeBSD, Linux, se han gestado en los claustros de conocidas universidades, por sus estudiantes. Hoy en día, una buena parte del software libre, que podemos encontrar en sitios como freshmeat.net, es desarrollado dentro de entornos académicos. Toda esta producción inicial se ha realizado en un entorno pre-ecosistema de software libre, en el que, además del software, también se construyeron las bases de la cultura y prácticas adoptadas por la comunidad.

Hoy, el desarrollo que ha alcanzado el ecosistema de software libre ha permitido que cada vez más organizaciones, empresas, e instituciones adopten las soluciones de software creadas por éste. Por un lado, estudios recientes, como los de Gartner, señalan que para el 2012 gran parte de los productos comerciales de software emplearán componentes de software libre y que por lo menos una tercera parte del presupuesto de las empresas para software de aplicación se destinará a servicios de suscripción.

IDC said “Open Source is the most significant all-encompassing and long-term trend that the software industry has seen since the early 1980’s.”

Gartner predict that “ By 2012, 80 per cent of all commercial software will include elements of open-source technology.

A survey of nearly 1000 IT staff in the UK, Germany, France and North America, commissioned by Actuate, showed that fifty four percent of businesses in the UK felt that the benefits of open source outweighed any negative aspects

Another Gartners top predictions for 2008 is that “by 2012, at least one-third of business application software spending will be as a service subscription instead of as a product licence”.

Por otro lado, esto también presenta una situación en la que la demanda de profesionales con conocimiento de tecnologías de software libre se incrementa, mientras que la oferta parece ser cada vez más escasa, según demuestran estudios de Actuate.

Research conducted for Actuate found that six in every ten respondents said there “were serious problems finding the right IT skills to implement and manage open source solutions

El pasado sábado 22, tuve la oportunidad de ofrecer una charla en mi universidad, la UPC, en la que desarrolle estos temas. El enfoque tenia como objetivo el saber cómo aprovechar, inteligentemente, como estudiantes de computación, las oportunidades y recursos que existen hoy para desarrollarnos profesionalmente haciendo lo que nos apasiona: software libre. En este sentido, conversamos acerca del programa Google Summer of Code como una manera de avanzar hacia tal objetivo, por los beneficios que ofrece a nivel académico y profesional. Además, presenté el proyecto OSS Watch, cuyo objetivo es fortalecer el vínculo entre la comunidad académica y la de software libre a través del desarrollo de material académico que introduzca prácticas de desarrollo de la comunidad en los cursos de computación. A través de esto el proyecto busca mejorar las capacidades de los futuros profesionales que les permitan desarrollar soluciones basadas en tecnologías de software libre.

La charla estuvo organizada por el grupo GNU UPC, conformado por alumnos y ex-alumnos de la universidad, que está en un proceso de reactivación de actividades y retomando proyectos a futuro, de los cuales seguro tendré algún grado de culpa. Las diapositivas de mi presentación están en el wiki que he creado para publicar mis trabajos academicos y proyectos personales.

Comments

Jul 08 2008

Aprendiendo del ecosistema de software libre

El pasado 24 de junio a invitación del Chapter Lima del PMI ofrecí una charla respecto a los aspectos o practicas de gestión de proyectos que las organizaciones o empresas pueden rescatar del ecosistema de software libre e incorporarlos en sus proyectos, en específico los que tienen que ver con desarrollo de software.

La objetivo principal, más allá de dar a conocer el software libre como tal, era establecer y reconocer prácticas de gestión y procesos que se puedan rescatar e incorporarlos en el desarrollo de proyectos de software de las organizaciones.

La charla inicio ofreciendo un panorama general de los actores que participan en el desarrollo de proyectos de software libre, como podemos ver en el gráfico adjunto, a saber:

Ecosistema de software libre

  • Proyectos en sí,
  • Usuarios finales: que incluye a personas, empresas, sector público, organizaciones sin ánimo de lucro,
  • Asociados de los proyectos, que son las organizaciones que apoyan a dichos proyectos, caso gobiernos o empresas,
  • Partners de los proyectos, que pueden ser empresas u otros proyectos que ofrecen infraestructura base a los mismos,
  • Comercializadores de los proyectos, que son las empresas que se dedican a dar un soporte y canal comercial a los productos desarrollados bajo este modelo de licenciamiento.

Luego de esto explique el esquema de trabajo y gestión de los proyectos de software libre, la forma de organización, su estructura jerarquica, infraestructura de trabajo, interacción entre el grupo humano, etc.

A partir de esta información rescatamos algunos valores o prácticas que las organizaciones que realizan desarrollo de software pueden incorporar para mejorar su gestión y procesos de desarrollo.

Entre estos podemos mencionar a los siguientes:

Confía en tu equipo

Esto se refiere básicamente a que la información acerca del desarrollo, incidencias y progreso del proyecto se maneje de manera abierta, sin ocultar información a nigún integrante del equipo. Todos deben estar claros de lo que ocurre. Un esquema bastante similar al definido por Debian y lo que conocemos como el rol de «dictador benevolente».

Revisa todo, prueba todo

Que trata de resumir la necesidad de incorporar y establecer prácticas de testing en el proceso de desarrollo y aprovechar las herramientas de software, o construir las necesarias, para establecer un ciclo constante de auditoria general y automatización del proceso de pruebas de software. De esta manera a medida que se va desarrollando el proyecto también se tiene a la par un proceso que puede garantizar la validación de su funcionalidad.

Todos los desarrolladores son iguales

Algo que no se refiere a las características personales o de formación, sino a la equidad y valoración de las ideas o aportes de los desarrolladores, sean los más experimentados en el equipo o novatos que se acaban de incorporar. Cualquiera de ellos debe ser escuchandos y sus aportes o ideas respecto al desarrollo o diseño de los proyectos se debe tener en cuenta de la misma manera.

Y finalmente, la premisa que no debemos olvidar:

La mejor manera de finalizar un proyecto de forma exitosa es hacerlo de la forma correcta

Que básicamente nos recuerda que aunque tengamos los procesos definidos, las herramientas necesarias y la infraestructura de soporte para el desarrollo de nuestros proyectos; si los primeros se ignoran y no se siguen desde el inicio del proyecto, por razones de tiempo, urgencia, etc; es mucho más probable que a medida que se desarrolle el proyecto ocurran problemas que si se empieza de la forma correcta.

Esto es lo que cuenta al final del día y puede ser el factor crítico que conduce a pérdidas de tiempo, dinero y time-to-market para una organización. Para que un proyecto sea exitoso se requiere la participación de todos los actores involucrados, que va desde la gerencia hasta el desarrollador. No se trata simplemente de dar indicaciones al programador y encerrarlo un número de días esperando que entregue un resultado maravilloso.

Fue interesante el aprovechar que me antecedio una charla sobre  SCRUM, para vincular muchas de estas practicas que tambien son promovidas por frameworks de desarrollo ágil como éste, que fue expuesto por Tobias Mayer de AgileThinking.net.

Es posible que existan otras prácticas que los proyectos de desarrollo de software en las empresas puedan incorporar, si has identificado o aplicado alguno ¡dejanos saber!.

Existe más información sobre el tema que he tomado como referencia para esta charla. A continuación pongo algunos enlaces de referencia:

Comments

May 17 2008

Software libre: ¿Tenemos claro de que se trata?

Published by Rudy Godoy under Free Software

Cuando Richard Stallman, graduado en física por la universidad de Harvard que trabajaba como programador del laboratorio de inteligencia artificial del MIT, decidió renunciar a éste para iniciar su trabajo con el proyecto GNU en donde define las bases de lo que hoy conocemos como software libre a través del manifiesto GNU, posteriormente formalizado en una licencia, que básicamente expone un esquema de trabajo y un modelo de licenciamiento.

Este esquema de trabajo intenta mantener la cultura hacker de aquellos años donde se daba un valor muy alto al compartir y a la colaboración, aspectos que él observo se estaban perdiendo y deseaba mantener. Es por esto que inicia el proyecto GNU bajo el precepto de desarrollar un sistema operativo desde cero bajo este modelo de manera que se cuente con un base sobre el cual desarrollar un sistema computacional que se mantenga bajos los preceptos enunciados y resguardados por la licencia GNU GPL.

Este hecho pues, no represento más que una determinación por seguir con un modelo que a su criterio tendría más beneficios frente a los otros que empezaban a aparecer en la industria. En ningún momento el proyecto tuvo como objetivo el innovar, desarrollar nuevas tecnologías, o servir de arma contra las grandes corporaciones o el sistema.

Durante los años siguientes este espíritu se ha mantenido tal cual, en diversas ocasiones Richard ha vuelto a reafirmar que el propósito no es hacer el mejor software o usar las técnicas más avanzadas de la computación. El objetivo es mucho más simple: tener software que se pueda copiar, modificar, compartir y distribuir libremente (léase sin restricción).

Por esto, el software libre representa sencillamente un modelo de licenciamiento que tiene detrás un esquema de trabajo particular. Ciertamente alguno de los aspectos de este esquema de trabajo han tenido y tienen un gran impacto en la propia industria de software, pero en otros no son más que réplicas de entornos o prácticas desarrolladas en los entornos académicos, en donde nació.

Por ende, si nos restringimos a los aspectos técnicos de la gran mayoría del software desarrollado bajo este modelo, está fuera de lugar calificar al software libre como “nueva tecnología”, “tecnología emergente”, u otros calificativos que hagan referencia de que esto es algo nuevo técnicamente, debido a que son aspectos totalmente distintos. Hablar de nueva tecnología queda fuera de lugar si vamos a mostrar a Linux, Apache, Firefox, etc. que son proyectos que replican algo ya existente: un sistema operativo, un servidor web, un navegador web. Ninguno de estos ha sido innovador ni mucho menos emergente, como si lo fue por ejemplo el primer navegador web Mosaic, desarrollado (como dice su autor Marc Andreesen) como un proyecto “renegado” de investigación académica.

Por el otro aspecto, que tiene más que ver con valores y sociedad, y en donde algunas personas parecen haber encontrado el eslabón perdido al etiquetarlo como “filosófico” para usarlo como trampolín para propalar sus propias ideas políticas, tampoco se tiene como objetivo el realizar dichas actividades o propalar mensajes de cierta índole. Desde la existencia de la humanidad el acto de compartir ha sido una práctica valorada y que ha sido esencial para la subsistencia de la misma. Asimismo, las prácticas que están relacionadas con el proceso de desarrollo de software son en gran medida aplicación de trabajos desarrollados en el entorno académico.

Sin embargo, lo que ha hecho el software libre y el movimiento FLOSS es ponerlas en práctica, hacer evidente que se puede hacer cosas interesantes bajo este modelo, ha hecho voltear los ojos a la industria de software, a las empresas, a la sociedad. Hoy no existe alguna actividad que haya acogido alguna de las prácticas generalizadas como “opensource” dentro de su propio trabajo, desde Wikipedia, las comunidades de eR&D, el modelo de las aplicaciones 2.0, las empresas, los políticos, etc. Hoy se habla de Enterprise 2.0, Politica 2.0, eGov 2.0, y tal. Hoy podemos decir que este 2.0 tiene un 1.5 de ingredientes gracias al software libre.

Un modelo de licenciamiento, junto a un esquema de trabajo han hecho esto posible. Es por eso que personalmente es un orgullo formar parte de su desarrollo y aportar algo a la sociedad del futuro. Y es la misma motivación que me llevo a involucrarme en esto luego de leer el manifesto GNU hace algo más de 10 años, sólo eso, nada más.

Cada uno de los otros temas se desarrollan en su propio entorno por quienes tiene interés en hacerlo, no hay que mezclar las cosas. Siempre es bueno volver revisar los fundamentos sobre lo que se construye algo.

Comments