Nueva relación entre cliente y proveedor: los contratos ágiles

  • Marcos Bermejo

     Marcos Bermejo

    Es programador desde el 2005, ha trabajado en varios lenguajes, en especial VB.net y más recientemente PHP. En los últimos dos años, ha estado formándose y aprendiendo sobre metodologías ágiles, hizo el Professional Scrum Developer de la scrum.org impartido por José Luis Soria y el curso de Coaching de equipos ágiles de Ángel Medinilla. En la actualidad, trabaja en Runroom como Scrum master y también como programador desarrollando aplicaciones web.

  • Marc Florit

     Marc Florit

    Ingeniero en Telecomunicaciones de formación, gestor de proyectos y servicios informáticos de profesión y facilitador de vocación. Inició su camino profesional creando su propia empresa en 1997 para dar servicio de acceso a Internet a particulares y pymes de Barcelona. En el año 2000 fichó por una consultora en la que consiguió formar parte, a lo largo de doce años, de gran parte de los departamentos y roles productivos, finalizando esta etapa como gerente de operaciones. Este bagaje le ofreció una enorme experiencia que le permitió entender la manera en que las personas trabajan y colaboran para lograr los objetivos demandados.

    A principios de 2012 creó WynWin y desde entonces colabora con profesionales y empresas con el objetivo de lograr la excelencia de sus equipos y productos, y optimizar sus procesos operativos y de negocio mediante la adopción de metodologías y técnicas ágiles.

  • Ramon G. Sedó

     Ramon G. Sedó

    Licenciado en Comunicación Audiovisual y desde hace más de quince años trabajando en la Universidad Autónoma de Barcelona, en el Instituto de la Comunicación, como director de la Unidad de Comunicación y Gestión de la Información, departamento responsable de conceptualizar y desarrollar proyectos en línea. También trabaja como profesional independiente en diversas empresas e instituciones, nacionales e internacionales, haciéndose cargo de proyectos relacionados con Internet, las nuevas tecnologías de la comunicación y la gestión de información.

PID_00236256

Los textos e imágenes publicados en esta obra están sujetos –excepto que se indique lo contrario– a una licencia de Reconocimiento-NoComercial-SinObraDerivada (BY-NC-ND) v.3.0 España de Creative Commons. Podéis copiarlos, distribuirlos y transmitirlos públicamente siempre que citéis el autor y la fuente (FUOC. Fundación para la Universitat Oberta de Catalunya), no hagáis de ellos un uso comercial y ni obra derivada. La licencia completa se puede consultar en http://creativecommons.org/licenses/by-nc-nd/3.0/es/legalcode.es

1.¿Cuál es el propósito de un contrato?

Si bien es cierto que el Agile Manifesto valora la colaboración con el cliente por encima del contrato, en ocasiones es necesario establecer un conjunto de reglas que delimiten un determinado proyecto. La adecuación de estas reglas al proyecto ágil puede significar aumentar las posibilidades de éxito para ambas partes.
En teoría, estas reglas las acuerdan libremente ambas partes para crear condiciones óptimas que permitan completar con éxito el proyecto. En la práctica, los contratos se suelen ver como juegos competitivos, cuyo objetivo es dejar en desventaja a la otra parte. Muchas organizaciones grandes y gobiernos tienen condiciones comunes que se deben aceptar en conjunto como prerrequisito para hacer negocios con ellos.
Estas condiciones casi nunca son justas, por lo que el resultado de un proyecto depende en gran medida de la buena relación con el cliente para así evitar discutir el contrato o recurrir a la ley.

2.Contrato para el bien común Win-win: marco agile para elaborar contratos

Un contrato distribuye el riesgo y refleja la confianza entre las partes. ¿Qué pasa cuando algo sale mal? ¿Quién paga cuando el proyecto es más difícil de lo que se esperaba? ¿Quién se beneficia si el proyecto acaba antes de lo previsto?
Usar reglas incorrectas puede ser perjudicial para el éxito del proyecto. Las reglas malas llevan a precios no realistas, tiempos imposibles o expectativas funcionales (alcance) que no se cumplen. Los juegos win-lose son perjudiciales para el éxito del proyecto. La calidad casi siempre sufre.
La estrategia más inteligente es la de maximizar el bien común, lo que llamamos un win-win.

3.Evaluación de contratos

3.1.¿Cómo evaluar los contratos?

Los contratos comerciales pueden tener muchas formas. En cualquier contrato se tiene que mirar:
  • ¿Cómo está estructurado? ¿Cuáles son las reglas básicas para el alcance de las entregas y la factura por ingresos?

  • ¿Cómo se reparten los riesgos y los beneficios entre cliente y proveedor?

  • ¿Cómo se gestionan los cambios a los requerimientos?

  • ¿Qué modelo de relación con el cliente fomenta? ¿Competitividad (win-lose), cooperación (win-win), indiferencia o dependencia?

3.2.¿Qué información se debe incluir en un contrato?

Cuanta más confianza exista entre cliente y proveedor, menos se necesita escribir en el contrato.
Algunos puntos que tendrían que aparecer siempre en cualquier contrato son los siguientes:
1) Objetivos del proyecto y de la cooperación entre las organizaciones.
2) Un resumen de la estructura del proyecto: procesos de Scrum y funciones clave, entre otros.
3) Personal clave: quién es responsable a escala operacional y jerárquica.
4) Pagos y facturación, incluyendo las cláusulas de bonus y penalizaciones.
5) Finalización normal y finalización antes de la fecha fijada en el contrato.
6) Detalles legales. En función de las leyes locales y costumbres legales, es posible que tenga que limitarse la responsabilidad civil, especificar la garantía o incluir otros textos que se necesitan legalmente.
¿Es necesario incluir el alcance del proyecto en un contrato? A pesar de que a menudo está presente, fijar el alcance en el contrato también lo hace inflexible. Si fuera posible, es mejor especificar cómo se va a gestionar el alcance (por ejemplo, con un backlog de producto, contratos por sprint) y dejar los detalles operacionales fuera para que los gestione el equipo del proyecto.
Los puntos 2, 3, 4 y 5 determinan las reglas de juego para el proyecto. Si son las correctas, tendremos una base sólida para un buen proyecto.

4.Modelos agile de contrato

Describiremos ahora diferentes modelos de contrato. Sin embargo, es bueno saber que hay muchos más. Existe una clasificación de contrato agile dependiendo de:
  • Los riesgos que asume el proveedor o el cliente.

  • La compatibilidad con las metodologías agile.

Esta tabla puede ayudar a comprender los contratos que describiremos a continuación:

Riesgos

Proveedor

Proveedor y cliente

Cliente

Modelo de contrato

Precio fijo y alcance fijo

Variaciones de contrato precio fijo, contracto de sprint, y «Time and materials»

Contrato por objetivos: desarrollo por fases

Partenariado: contracto de ganancia fija y «Money for nothing»

«Time and materials»

Compatibilidad con metodologías agile

Baja

Media

Alta

Alta

Alta

4.1.Contrato de sprint

m1402_m5_003.gif
Para aquellos que trabajan con Scrum, la metáfora de contrato de sprint puede ser útil para comprender la relación entre el product owner y el equipo de trabajo.
  • Estructura: en realidad, no es un contrato comercial, sino simplemente un acuerdo entre el product owner y el equipo para un sprint.

  • Alcance: el equipo acuerda esforzarse al máximo para entregar el conjunto de características acordadas (alcance) con un estándar de calidad definido al finalizar el sprint. El product owner acuerda no cambiar las instrucciones antes de finalizar el sprint.

  • Riesgo: un proyecto de Scrum puede ser visto como una serie de miniproyectos con parámetros fijos:

    • tiempo (duración del sprint),

    • alcance (backlog del sprint),

    • calidad (definition of done) y

    • gastos (tamaño del equipo × duración del sprint).

    Tan solo se puede cambiar el alcance y esto se mide en cada sprint.

Peter Stevens (2009). 10 Contracts for your next Agile Software Project. Agilesoftwaredevelopment.com [en línea, consulta enero 2015]. http://members.scrumalliance.org/resource_download/1119

4.2.Precio fijo/alcance fijo

m1402_m5_004.gif
  • Estructura: se acuerdan los entregables, se entregan. Se envía la factura. A los clientes les gustan los proyectos de precio fijado porque les da la sensación de seguridad.

  • Cambios de alcance: el proceso de solicitud de cambios está pensado para limitar el alcance de los cambios. Este proceso es costoso y los cambios en general no se pueden prever. Como el cliente casi por definición quiere más alcance, resulta difícil acabar el proyecto. El proveedor quiere que el cliente esté contento, por lo que el proveedor suele ceder. La palabra etcétera es muy peligrosa para definir especificaciones en un requerimiento de precio fijado.

  • Riesgo: obviamente todo el riesgo es para el proveedor. Si la estimación es incorrecta, el proyecto pierde dinero. Otros riesgos menos obvios surgen del juego de petición de cambios, en el que el proveedor negocia ingresos adicionales para cambios en el alcance. Si el proveedor subestima muy mal el esfuerzo adicional, o da un precio irreal muy bajo, las pérdidas pueden llegar a afectar a la propia existencia del proveedor, lo que también es un problema para el cliente.

  • Relación: competitiva. Los clientes generalmente quieren tener más y los proveedores hacer menos. El proveedor quiere que el cliente esté contento, por lo tanto el proveedor acostumbra a ceder.

Consejo: especificar los requerimientos funcionales con historias de usuario.
Peter Stevens (2009). 10 Contracts for your next Agile Software Project. Agilesoftwaredevelopment.com [en línea, consulta enero 2015]. http://members.scrumalliance.org/resource_download/1119

4.3.Time & materials

m1402_m5_005.gif
  • Estructura: trabajar un mes, después enviar la factura al cliente.

  • Alcance: no se fija con prioridad. Tarde o temprano, el cliente no querrá pagar más y el proyecto llegará a su fin.

  • Riesgos: los riesgos los asume 100% el cliente. Los proveedores tienen poca iniciativa para mantener costes bajos. Puede haber un esfuerzo importante para asegurarse de que solo se facturan esfuerzos y gastos legítimos.

  • Relación: indiferente. El proveedor es feliz cuando hay más trabajo porque más trabajo significa más dinero.

Consejo: recomendado para proyectos donde el cliente puede manejar los riesgos mejor que el proveedor. Este contrato suele combinarse con un techo de gasto. En función de cómo se gestione el alcance, funcionará mejor o peor.
Peter Stevens (2009). 10 Contracts for your next Agile Software Project. Agilesoftwaredevelopment.com [en línea, consulta enero 2015]. http://members.scrumalliance.org/resource_download/1119

4.4.Desarrollo por fases

m1402_m5_007.gif
  • Estructura: financiar entregas cuatrimestrales y aprobar fondos adicionales después de cada entrega exitosa.

  • Cambios en el alcance: no se definen explícitamente en este modelo. Las entregas están pautadas en el tiempo. Saber que habrá otra entrega el próximo cuatrimestre hace que resulte más fácil posponer una característica para lograr la entrega en el tiempo pautado.

  • Riesgo: el riesgo del cliente se limita al coste de un único cuatrimestre.

  • Relación: cooperativa. Tanto el cliente como el proveedor tienen un incentivo para que cada entrega sea exitosa, de forma que se aseguren fondos para las próximas entregas.

Consejo: los inversores de riesgo suelen trabajar de este modo. Es una buena mezcla de time & materials con alcance variable y techo de gastos. En el contrato comercial simplemente se especifica el objetivo de la entrega, los costes por hora y el techo de gasto. El cliente provee al product owner, todo el resto se determina en los contratos de sprint.
Peter Stevens (2009). 10 Contracts for your next Agile Software Project. Agilesoftwaredevelopment.com [en línea, consulta enero 2015]. http://members.scrumalliance.org/resource_download/1119

4.5.Ganancia fija

m1402_m5_009.gif
  • Estructura: cualquier presupuesto de proyecto consiste en costes efectivos y ganancia. Las partes acuerdan la ganancia por adelantado (por ejemplo, 100.000 €). Sin importar cuándo se acaba el proyecto, el proveedor recibe ingresos por el gasto incurrido más la ganancia fija acordada.

  • Alcance: es fijo.

  • Riesgo: es compartido. Si el proyecto acaba antes, el cliente paga menos y el proveedor obtiene igualmente su ganancia. Si el proyecto se excede de presupuesto, el cliente paga más y el proveedor no tiene ganancia adicional. Después de la fecha de entrega objetiva, el proveedor no puede facturar más ganancias, solo cubrir los costes.

  • Relación: cooperativa. Tanto el cliente como el proveedor tienen un incentivo claro para acabar antes. El cliente quiere ahorrar dinero y el proveedor tener un margen de ganancia mayor.

Peter Stevens (2009). 10 Contracts for your next Agile Software Project. Agilesoftwaredevelopment.com [en línea, consulta enero 2015]. http://members.scrumalliance.org/resource_download/1119

4.6.Money for nothing. Changes for free

m1402_m5_010.gif
  • Estructura: este contrato funciona con los proyectos de software ágiles porque casi no hay trabajo en progreso. Al final de cada sprint, la funcionalidad está acabada o no se empezó. El trabajo es del tipo time & materials con un objetivo de coste, a menudo con la intención de que el proyecto no use todo el presupuesto. Una vez se entrega cierta cantidad de funcionalidad, el cliente puede darse cuenta de que ya se ha entregado una cantidad suficiente de valor de negocio y que no se necesita más desarrollo, por lo que puede cancelar el proyecto. Hay un gasto de cancelación que es igual a la ganancia restante que faltaba.

  • Alcance: puede cambiar. Las características planificadas sin implementar se pueden reemplazar por otras historias del mismo tamaño. Las características adicionales cuestan más.

  • Riesgo: compartido. Ambas partes están interesadas en completar antes el proyecto. El cliente obtiene costes inferiores y el proveedor, un margen más amplio.

Consejo: si se excede el presupuesto, se pueden aplicar las reglas de los contratos de ganancia fija o techo de gasto. El enfoque de ganancia fija es más consistente con el objetivo de fomentar una relación cooperativa entre las partes.
m1402_m5_011.gif
Peter Stevens (2009). 10 Contracts for your next Agile Software Project. Agilesoftwaredevelopment.com [en línea, consulta enero 2015]. http://members.scrumalliance.org/resource_download/1119

Bibliografía

Larman, Craig; Vodde, Bas (2010). Practices for Scaling Lean and Agile Development: Large, Multisite, and Offshore Product Development with large-Scale Scrum. Addison-Wesley. Disponible en: http://www.amazon.es/practices-scaling-lean-agile-development/dp/0321636406.
Stevens, P. (2009). 10 Contracts for your next Agile Software Project. Agilesoftwaredevelopment.com [en línea, consulta enero 2015]. http://members.scrumalliance.org/resource_download/1119
Martin, Robert C. (2012). Agile software development: principles, patterns, and practices. Upper Saddle River, N.J.: Pearson Prentice Hall.
Ruby, Sam (2009). Agile web development with rails. Raleigh, NC: Pragmatic Bookshelf.
Shore, James (2008). The Art of agile development. Beijing ; Sebastopol, CA: O'Reilly Media, Inc.
Anderson, David James (2004). Agile management for software engineering: applying the theory of constraints for business results. Upper Saddle River, NJ: Prentice Hall PTR, cop. 2004.
Highsmith, James A. (2004). Agile project management: creating innovative products. Addison-Wesley, cop. 2004.
Schwaber, Ken (2004). Agile project management with Scrum. Redmond, Wash.: Microsoft Press.
Schwaber, Ken (2002). Agile software development with Scrum. Upper Seadle River, NJ: Pearson Prentice Hall.