jueves, 9 de abril de 2009

Curso Spring Framework

Curso de programación en Spring Framework
Lanzamos una nueva oferta formativa de introducción al desarrollo con Spring Framework.
Se abarca tanto el core en profundidad como una introducción al Spring MVC.

Más detalles del curso.

miércoles, 8 de abril de 2009

Proyectos en Cascada vs. Proyectos Agiles

 


Si ayer mismo comentaba en otro post porqué utilizar una metodología ágil (en concreto Scrum) basándome en hechos reales y vividos en primera persona, hoy resulta que navegando un poco por la red me encuentro con este vídeo:



lunes, 6 de abril de 2009

¿Por qué utilizar Scrum?



Básicamente lo que voy a contar se basa en hechos reales y se resume en lo siguiente:



  1. Si tus clientes dicen que tus tiempos de entrega son largos.
  2. Si tus clientes dicen que eres caro.
  3. Si notas que tus competidores pasan por tu lado a una velocidad de vértigo.
  4. Si notas que hay demasiada burocracia interna en tus departamentos.
  5. Si aprecias que hay demasiadas reuniones (y cada vez más largas) en lugar de tiempo de trabajo.
  6. Si tus proyectos están pobremente dimensionados en tiempo o recursos y como consecuencia hay quejas internas y de los clientes.
  7. Si no consigues los beneficios esperados en tu cuenta de resultados.
  8. Si no quieres sacrificar calidad en tus proyectos en función del tiempo o recursos.



Como digo esto es un resumen, pero estas conclusiones están basadas en hechos reales. Resulta que hace tiempo trabajé para un empresa de consultoría y desarrollo de proyectos cuyo principal punta de lanza en los clientes era el entorno metodológico y tecnológico. La calidad del software, de los productos entregados y de los procesos metodológicos eran llevados al máximo exponente.

"El siniestro siempre acecha en las sombras"

Los clientes de pensamiento puramente ingenieril estaban encantados y los no, estaban asombrados con esas flamantes, grandiosas y estrepitosas propuestas (la de árboles muertos que pesan sobre mi conciencia). La verdad es que se tardaba menos en leer "El Quijote" que en terminar de leer el "resumen para la dirección".

Y allí estaban todos los detalles, todos los procesos basados en RUP, convenientemente adaptados a la empresa y su negocio, tiempos, costes, equipos, fases, entregas, hitos, meetings y un largo etcétera.



La empresa basaba sus procesos de desarrollo en RUP como he comentado y aplicando ciertas prácticas del entorno ágil, como integración continua, pruebas unitarias y de aceptación, control de versiones, pero también adaptadas todas a la situación de la empresa. También se hacía uso de herramientas como Maven, ant, wikis, subversion, JMeter, APIs abiertas y un montón más. El desarrollo era puramente en Java bien regado con patrones de diseño, UML, hibernate no faltaba, xml por supuesto, y frameworks de desarrollo para ahorrar tiempo, dinero y esfuerzo.

Todo cuadraba a la perfección, los tiempos mal que bien se cumplían y las piezas de software salían. Todo un alarde de caballería y señorío. Pero el siniestro acechaba en las sombras.

La dirección comenzó a darse cuenta de "un hecho real", y es que en este paraíso de la calidad los clientes era cada vez menos, y claro comenzaron a aparecer las primeras dudas.

En la mesa casi redonda de los doce caballeros sonaron acusaciones del tipo:


-Es posible que seamos muy caros-dijo Lord Presidente.

-El problema son los tiempos de desarrollo -respondió Sir Comercial-, desde que contactamos al cliente hasta que se le entrega el producto pasa mucho tiempo y el cliente se queja. ¡Hay que acortar los tiempos!

-Pues acortemos los tiempos -respondió Lord Presidente-.

-Con más guerreros acortaríamos tiempo -dijo Sir Gerente de proyectos-.

-¡Ni de coña! -respondieron al unísono Lord Presidente y Sir Comercial -.

-Podemos hacer que trabajen más tiempo -dijo vehementemente Sir Comercial-.

-¡Ni de coña! -respondió afirmativamente Sir Gerente de proyectos-.

-Bueno a lo mejor no necesitamos todo lo que estamos dando y podríamos reducir tiempo reduciendo la etapa de requisitos y eliminando la fase de pruebas -comentarona modo de conclusión-.

-¡Ni de coña! -respondió bravamente Sir Calidad que hasta el momento había permanecido al margen.

-Pues a los clientes ni tocarlos -aclaró Sir Comercial-. No entiendo porqué hay que tener tantas reuniones con los clientes, los acabáis mareando y no quiero que queméis a mis clientes.

-Pues ya me dirás cómo hacemos algo, si no sabemos lo que quieren -respondió Sir Gerente de proyectos-.

La reunión acabó tomando un ritmo más caluroso hasta que el Presidente zanjó el asunto:

-Los clientes se nos van a la competencia diciendo que somos caros y lentos. Pero nuestro precio/hora/persona nos indica que estamos en el mercado y bajarlo sería un error. Por otro lado la competencia da unos tiempos de entrega muy inferiores a los nuestros. Nosotros sabemos que con esos tiempos es imposible realizar buen software y de calidad, ya que cada cosa lleva su tiempo. Parece que al cliente lo que le interesa es que, lo que le entreguen funcione y les deben de estar entregando verdaderas patrañas. Ya vendrán a nosotros llorando cuando lo que les han hecho no funcione.


La realidad es: ¿Cuánto tiempo hay que esperar para que el cliente vuelva?

Pero, ¿Y si lo que han hecho al cliente funciona bien y no vuelve?

Los desarrollos ágiles se basan en el concepto de trabajo, de grupos reducidos orientados a resultados y de una comunicación constante con el cliente. Por que, ¿Cómo puedes saber dónde fallas si no se lo preguntas al cliente?

Si tu competencia es más rápida y más eficiente, no le eches la culpa a ellos.
Mírate a ti mismo.

Una comunicación más ágil con los clientes y unos tiempos de desarrollo optimizados a las tareas necesarias hubiera sido un muy buen principio para el cambio hacia la mejora empresarial sin abandonar la calidad. La autogestión de equipos mejora también la disponibilidad al trabajo. Por eso sinceramente aunque creo que Scrum no es la panacea si que permite en muchos casos afrontar proyectos de éxito.

viernes, 3 de abril de 2009

Herramientas de gestión de Scrum


Es común que cuando uno comienza con Scrum atrae la posibilidad de ver el trabajo realizado y el pendiente de manera visual y sencilla mediante paneles o pizarras.


Esta es una de las bases sobre la que inciden todos los expertos, ya que fomenta el desarrollo, la participación en grupo y la resolución de problemas, así como estimula el trabajo y la planificación correcta.

Pero no siempre es posible dejar todo el entramado de historias de usuario, modificaciones, estimaciones y demás en manos del volátil papel y es necesario (y a veces también cómodo) gestionar el proyecto mediante alguna herramienta.

El listado es extenso y hay soluciones más o menos completas, de pago y OSS y más o menos de andar por casa, supongo que todo vale mientras cumpla el propósito.

Herramientas para Scrum

  • Rally Dev Software: 35€ por usuario/mes, muy completa, y la versión community es gratuita para un solo proyecto de hasta 10 desarrolladores.
  • BaseCamp HQ: Quizá menos elaborada que la anterior, pero también muy recomendable. Basada en tareas e incluye un gestor de ficheros. Gratuita para gestionar 1 proyecto, pero no incluye el gestor de ficheros, aunque la versión más económica cuesta 24$ al mes con usuarios ilimitados.
  • XPlanner: Open Source.
  • VersionOne: 29$ por usuario/mes y también muy completa. Tiene una versión gratuita para un poryecto y no más de 10 usuarios.
  • Scrum Desk: Muy completa también, y muy visual, permite hacer planning poker de manera gráfica. Es gratuita para 5 miembros.
  • Scrum'd: Simple, sencilla, barata y online. Posiblemente no la más avanzada, pero su filosofía es la sencillez y rapidez.
  • Scrumy: Simple, sencilla, barata y visual. Todo se hace de manera visual, incluso con drag&drop todo online sin instalaciones, permite planificar sprints, realizar estimaciones, product backlog, sprint backlog y gráficos burn out. Tiene también una versión gratuita sin necesidad de registrarse que sólo permite realizar la lista de tareas y asignaciones de las historias.
  • Banana Scrum, Gratuito y online. Soporta backlog, sprint planning, sprint backlog, lista de impedimentos, etiquetado, exportación a CSV, gráfico burndown y diferentes role a través de un panel de administración.
  • ScrumWorks: Versión de pago y gratuita. Soporta mac, windows y linux. permite trabajar uno o varios equipos en uno o varios proyectos. Soporta product backlog y gestión de versiones, tareas de los sprints, lista de impedimentos, exportación a excel y gestión de equipos y usuarios y dispone a su vez de un cliente web.
  • TargetProcess: Muy completa, personalizable y se integra con bastante software de terceros, incluso hay la posibilidad de integrar las pruebas unitarias dentro del proceso uniéndolo a Selenium o Nunit, permite generar informes para gerentes de empresa, así como para cada uno de los roles. Versión community gratuita hasta 5 usuarios sin restricciones de módulos o fechas de caducidad, para más usuarios es necesario comprar licencias. El software sólo está disponible para plataformas Windows y MS SQL Server posterior al 2000. Para otras configuraciones dispone también de versión On-demand.
  • IceScrum: Gratuita y muy completa, se puede descargar para usarla en local, requiere Java 1.5 o superior, dispone de lista de tareas, graficos, gestión de usuarios y planning poker.
  • Sprintometer: Herramienta gratuita de escritorio para entornos windows, dispone también de un servidor gratuito y una versión avanzada de pago. Una buena gestión de gráficos y métricas.
  • Brightgreen: Herramienta gratuita para 3 desarrolladores y un precio de 20 dólares por cada usuario nuevo al mes. Muy completa y permite proyectos Scrum y Kanban.
  • TinyPM: Herramienta escrita en Java (JSF) y gratuita hasta 5 personas por equipo, es necesario instalarla en local, aunque dispone de un modelo on-demand previa consulta. La herramienta es bastante completa, con gestión y trazabilidad de historias de usuario, administración por perfiles, tablero visual de scrum, gráficos de progreso, integración con SVN, wiki. A partir de 6 usuario hay que pagar 13€ usuario/mes.
  • Assembla: Desde nuestro punto de vista uno de los mejores servicios, con multitud de herramientas configurables, con opciones a elegir como Git, Subversion, herramientas para la gestión de Tickets en proyectos Agiles, wikis, comunicación del equipo, tableros de scrum, gráficos Burn Down, la herramienta de Tickets es muy configurable y con muchas opciones, también dispone de herramientas para hacer más sencillo la gestión y asignación de tareas ágiles a través de tickets, también pueden elegir usar otras herramientas como Trac, Bugzilla, y una herramienta de gestión de retrospectivas diarias. Además permite la integración de herramientas sociales como Twitter o Skype, así como un montón de documentación y vídeos explicativos. Lo mejor de todo es que además de la forma normal de pago puedes probarla completa por 30 días, también dispone de un hosting gratuito de todas estas herramientas ya configuradas y completamente funcionales para proyectos opensource sin límite de usuarios. La página de Assembla Free OpenSource.
  • GreenHopper: Un módulo de la empresa Atlassian para JIRA (ver más abajo) para dar soporte a proyectos ágiles basados en Scrum. Una de las mejores opciones de pago.

Herramientas para gestión de proyectos (pero usadas para Scrum también, of course).

  • Trac: Wiki especiallizada en gestión de proyectos. Se integra con subversion. Gratuita.
  • TimeXchange: Útil para equipos distribuidos. Permite crear un proyecto de forma gratuita sin límites y el resto de proyectos a 19,99$ al año. No es necesario instalar nada ya que puede hacerse online.
  • TeamBox: Herramienta de creación española totalmente gratuita y opensource que permite gestionar páginas, documentos, tareas y mensajes y dispone de dos versiones, una on-demand y otra que permite instalar en nuestros propios servidores. No tiene límite de proyectos ni de usuarios.
  • Agilo: Herramienta gratuita con multitud de opciones de scrum y de interfaz gráfico como arrastrar y soltar. Dispone de versión gratuita y completamente funcional bajo licencia Apache.

Otras herramientas usadas de alguna forma para esto mismo.

  • TWiki: Wiki muy elaborada y escrita en perl. Gratuita.
  • Dokuwiki: Otra Wiki con soporte multidioma y sin necesidad de base de datos. Gratuita.
  • Eventum: Gestor de tareas y proyectos desarrollado por el equipo de MySql. Gratuito.
  • Bugzilla: Un software para trazar bugs de proyectos. Uno de los más antiguos y usados. Gratuito.
  • JIRA: Otro software de gestión de bugs y trazas, muy elaborado, es de pago.
  • Conchango: Es un Add-in o plantilla de scrum para Visual Studio .Net desarrollada por la agencia Conchango.
  • Sharepoint: Software desarrollado por Microsoft que permite la gestión de documentos, tareas y visualización de información en forma de portal con posibilidad de crear distintos proyectos y grupos asignados. Uno de sus usos posiubles es la elaboración de listas de tareas y solicitudes.
  • PVCS:Gestor de versiones y bugtracker, permite establecer un portal con un diseñador de informes y formularios y crear vistas para el cliente y el equipo.
  • Google Documents:Permite crear, borrar y editar documentos online sin necesidad de instalar nada en los equipos y compartir los documentos con miembros de un mismo equipo.
  • XStudio: XQual Studio (XStudio) es una aplicación de administración de pruebas GRATUITA tanto en su versión web como en su versión de escritorio y 100% gráfica que es capaz de manejar el ciclo de vida completo del proyecto:usuarios, requerimientos, especificaciones, proyectos xp/scrum, STUs, pruebas, planes de prueba, reportes de prueba, campañas y defectos. Utilizando la base de datos MySQL como memoria principal, XStudio permite programar o ejecutar campañas de prueba completamente automatizadas o manuales. Dispone de versiones para Windows, Linux y Mac.


Y por supuesto plantillas de Excel. ;-)


Como se puede apreciar salvo las herramientas exclusivas para la gestión de Scrum, muchos equipos utilizan una combinación del resto para adaptarla a sus necesidades, sobretodo al principio del uso de Scrum.

Articulos relacionados