Skip to main content

Iniciamos la Feature Talk #4 – Feature-Driven Development, preguntando qué esperaban los asistentes respecto a la sesión. Las respuestas fueron dispares, aunque orbitando alrededor de las problemáticas siguientes:

  • ¿Cómo lo podemos hacer para definir procesos que faciliten el trabajo y comunicación entre producto y tecnología?
  • ¿Cómo gestionar la incertidumbre y los cambios bruscos en el roadmap de producto?

Los cambios bruscos de roadmap son una cuestión difícil de prever y gestionar. El punto de cómo conseguir sincronizar los equipos de producto y tecnología sí que es una de las cuestiones que hemos engrasado gracias al Feature-Driven Development (FDD) y la que nos enfocamos en resolver.

¿Qué es el Feature-Driven Development?

Aparte de la definición académica que se puede encontrar en la Wikipedia acerca de qué es el Feature-Driven Development, los asistentes compartieron sus ideas acerca de la definición de esta metodología. Algunas de las ideas que salieron:

  • El FDD es una metodología de desarrollo perteneciente a la familia Agile.
  • EL FDD pone foco a la funcionalidad o feature como pieza central.
  • El FDD se basa en un desarrollo y gestión de producto orientado a funcionalidades.

En este punto salió una duda más fundamental, a la vez que imprescindible, que consiste en definir bien qué es una funcionalidad.

Tras un poco de brainstorming se pusieron en común las ideas siguientes:

Una idea que se quiso transmitir es que, es imposible definir al 100% el detalle de un producto de software, en lugar de partir el problema en iteraciones temporales (caso claro del Scrum), el Feature-Driven Development lo parte en funcionalidades.

La granularidad viene dada por la funcionalidad o feature que aporta valor al usuario por sí misma y es independiente del resto de funcionalidades del producto.

Domain-Driven Design y Feature-Driven Development

Uno de los participantes aportó que el Domain-Driven Design o DDD también ayuda a alinear a los equipos de tecnología, producto y negocio, ya que genera un proceso que obliga a definir bien el contexto y el dominio de negocio del producto tecnológico, así como los nombres de las variables, funciones y servicios que se programan a nivel de software.

Ya resulta un acercamiento importante el hecho de hablar de los métodos de un servicio en los mismos términos que procesos de negocio.

El FDD también aporta algo similar, aunque no resulta tan ambicioso como el DDD para modelar el negocio, procesos de la empresa, etc.

Lo que sí pretende es ayudar a definir de una forma clara e inequívoca dónde empieza y dónde acaba una funcionalidad y su contexto.

¿Qué funcionalidades tiene mi aplicación?

Parece que debería ser una pregunta trivial a resolver, pero en muchos casos la respuesta no es tan sencilla como parece.

Nosotros proponemos realizar un ejercicio con un equipo multidisciplinar (tecnología, producto y negocio) para definir qué funcionalidades tiene la aplicación. Con este ejercicio se deben sacar dos listas:

  1. Una lista de funcionalidades.
  2. Una shortlist de las funcionalidades core o más importantes de la aplicación.

En este momento, profundizamos un poco más en cómo se suelen estructurar los diagramas de arquitectura con el típico formato:

Y propusimos de hacer el ejercicio de redefinirlo con este tipo de planteamiento:

Que pude incluso simplificarse de la siguiente forma:

Feature-Driven Development & Feature Flags

Una forma de determinar qué parte de la aplicación es una funcionalidad consiste en preguntarse, ¿tiene sentido que el PM puede decidir que estafuncionalidad se saque solo para los clientes en Italia?

Si tiene sentido formular este tipo de cuestiones, probablemente estafuncionalidad es una funcionalidad de tu aplicación.

En este punto, surgió una aportación de uno de los asistentes comentando que este tipo de dinámicas le recordaba a cómo utilizan las Feature Flags en su empresa.

Y es que las Feature Flags tienen una relación muy estrecha con el Feature-Driven Development debido a que su uso ayuda a estructurar una aplicación en funcionalidades; justo lo mismo que persigue el FDD.

Podéis encontrar más información acerca de las Feature Flags en nuestro artículo de blog

Descubre más desde FeaturIT

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo