The Unicorn Project: Una novela sobre desarrolladores

Hace un tiempo leí The Phoenix Project, una novela que contaba la historia de un DevOps devenido en manager. En esa historia veía reflejados algunos proyectos de software en los que estuve involucrado. Cuando vi The Unicorn Project, que es una historia paralela, que sucede en el mismo espacio de tiempo y compañía ficticia, no podía no querer leerlo.

Algunos sucesos en mi vida hicieron que me tome más tiempo del que me hubiese gustado. Pero acá estamos, recuperados de un robo, habiendo cambiado de trabajo y en “cuarentena” por el COVID-19. No saldre de casa, pero estoy leyendo un montón.

The Unicorn Project cuenta la historia the Maxine, una desarrolladora muy experimentada que no quiere seguir el camino del manager. Por un issue surgido en el sistema de pagos se vio exiliada al peor proyecto de la compañía: El proyecto fénix. Ese proyecto ( perdón por los pequeños spoilers del otro libro) tiene años de atraso y aunque es prioritario para la empresa todo parece indicar que nunca va a estar cerca de ver la luz.

En sus peripecias para lograr tener un build local, o incluso tener acceso a los repositorios Maxine se encuentra con una serie de personajes que la ayudaran y guiaran tanto en sus necesidades inmediatas como con su plan de carrera. Entre esos personajes va a conocer a Erik, una especie de gurú de casi todos los miembros de la empresa, que si leyeron el otro libro seguro lo conocen. Él les cuenta, a Maxine y a las otras personas de su grupo, sobre los 5 ideales:

Los 5 ideales de The Unicorn Project

  • El primer ideal: Localidad y simplicidad
  • El segundo ideal: Foco, Flujo y Diversión
  • El tercer ideal: Mejora del trabajo diario
  • El cuarto ideal: Seguridad psicológica
  • El quinto ideal: Foco en el cliente

Cada uno de estos ideales es trabajado en la historia, no mediante conocimiento teórico sino mediante la evolución misma de la historia; con los personajes descubriéndolos en sus acciones diarias.

Localidad y simplicidad

Localidad y simplicidad Son conceptos íntimamente relacionados. Si un equipo necesita hacer un deploy ¿Con cuantos otros equipos se tiene que coordinar? Los cambios que hace un equipo ¿En cuantos otros equipos impacta? Aun viéndolo a niveles más bajos, cuando editamos una porcion de codigo: ¿cuantas otras partes se ven afectadas?

Estos conceptos me hacen acordar al principio de Responsabilidad Única o Single Responsibility Principle, en particular como se lo menciona en Microservices Patterns. Si el código es simple, y sus efectos son locales, y si el equipo no tiene dependencias externas se gana velocidad y seguridad en lo que se está haciendo.

Foco, flujo y diversión

Es fácil, si un desarrollador puede enfocarse en su trabajo, con pocas dependencias externas, el puede tener un flujo de trabajo donde entregue valor, aprenda y se divierta. La falta de diversión en el trabajo empieza a darse cuando se está más tiempo bloqueado que haciendo lo que se supone se tiene que hacer.

Si el desarrollador tiene un flujo constante de lo que necesita para hacer su trabajo en tiempo y forma la diversión viene sola.

Mejora del trabajo diario

Hacer software no es lo mismo que fabricar un auto. O si, pero a una velocidad increíblemente superior. Cuando hacemos software constantemente se toman decisiones de las que luego tenemos que hacernos responsables. Estoy hablando, obviamente, de la deuda técnica.

Un equipo de trabajo saludable tiene que poder asumir tomar deuda técnica para cumplir con los objetivos del negocio. A su vez tiene que poder pagar esa deuda tecnica de forma tal que no afecte el rendimiento ni la capacidad de entregar valor. A su vez tiene que poder investigar y encontrar nuevas forma de hacer mejor su trabajo, ya sea nuevas tecnologías, técnicas o procesos.

El contexto tiene que colaborar a esta mejora. Se tiene que permitir a los equipos hacer experimentos y fallar rápido, aprendiendo en el camino. Acá entran los conceptos de LEAN Startup. Ese fallar rapido, aprender y mejorar el trabajo diario está relacionado con el siguiente principio, ya que si no estamos seguros de que la falla no se castiga seguramente no nos vamos a arriesgar.

Seguridad psicológica

Este principio me parece muy importante. Lo veo muy relacionado a las ideas de espacio seguro en las retros ágiles. No se buscan culpables y los participantes tiene que sentirse libres de hablar sobre los problemas y los miedos que enfrentan.

Si la seguridad no está respaldada, si cada acción puede transformarse en un dedo acusador o en una burla, si las personas tiene miedo de hablar, estamos viendo los indicios de un equipo que va a fracasar. Si le disparamos al mensajero nunca nos vamos a enterar de las amenazas que tenemos alrededor.

Foco en el cliente

Este punto es muy interesante, porque nos abre el juego a otros conceptos claves para las empresas que quieran sobrevivir en la era digital. Hacer foco en el cliente nos lleva pensar nuestro trabajo en dos grupos:trabajo core y trabajo de contexto. El trabajo core genera ventajas de negocio durables, el resto es contexto.

Trabajo core es aquello por lo que los clientes pagan, y contexto es esas cosas que a los clientes no los afectan. Un ejemplo de eso es el sistema que arma las liquidaciones de sueldo de los empleados, es muy importante para la empresa, pero no es core, a los clientes no les importa ese sistema… Y todo aquello que no es core y no nos da una ventaja de negocio es plausible de tercerizarse.

Los tres horizontes

A lo largo de la historia, mientras los 5 principios empiezan a ser parte del dia a dia aparece un nuevo concepto, el de los tres horizontes. Estos tres horizontes nos hacen profundizar nuestro foco en el cliente y nos permiten agregar cosas a nuestro trabajo core.

Estos tres horizontes son:

  • Horizonte 1: Donde el negocio gana plata en serio. Es en lo que somos buenos y lo que nos permite experimentar en otros horizontes.
  • Horizonte 2: Son negocios más pequeños, ideas que en algún momento puede ser parte de nuestros negocios principales. Aqui se sigue ganando dinero, pero es una fracción de lo que dejan las actividades del primer horizonte.
  • Horizonte 3: Acá es donde se experimenta rápido y se prueban hipótesis y se validan ideas. Acá residen las ideas que pueden hacer que la empresa subsista en el futuro.

En el contexto actual, donde los datos y la velocidad lo representan todo, si se quiere una empresa que crezca y se mantenga en el tope hace falta énfasis en el horizonte 3. Mantener el negocio que nos da de comer, pero a la vez no dejar de investigar y probar nuevas formas de hacer negocio y darle a nuestros clientes lo que necesitan.

Y para cerrar, en The Unicorn Project se dice que no es sobre el pequeño venciendo al grande; es sobre el rápido venciendo al lento.

Hay una entrevista muy interesante que a Gene Kim (El autor) que pueden leer acá: https://www.infoq.com/articles/unicorn-project/

The Phoenix Project, tus problemas de IT no son tan unicos

Hace un par de años me recomendaron leer The Phoenix Project, no lo hice, en parte porque tenía otros temas, pero principalmente porque mi dominio del idioma Inglés no me lo permitia. Ahora, hace un par de dias, me lo volvieron a recomendar y esta vez si lo pude leer. Es una novela, si, pero refleja tan bien lo que es trabajar en un proyecto de software que ahora no paro de recomendarlo a todo el mundo.

The Phoenix Project nos cuenta la historia de Bill, un DevOps devenido en manager, que queda a cargo de todo el equipo de operaciones de un gran compañia donde sistemas es tomado como área de soporte del core de negocio que es el de producir partes para autos. A lo largo de las páginas lo acompañamos en algunos éxitos y varios fracasos relacionados a tener un sistema productivo.

Los autores, muy sabiamente, van introduciendo muchos conceptos y promoviendo prácticas que creen que son beneficiosas para proyectos de IT. Lo hacen de forma tal que uno acompaña a Bill a lo largo de camino de aprendizaje. A su vez nos encontramos con algunos personajes entrañables y con algunos otros que nos generan rechazo. Me vi constantemente haciendo paralelismos entre los personajes y personas de mi día a día.

Ya en las primeras páginas arranca con un outage general causado, en parte, por Bill dejándose convencer de deployar a producción un proyecto sumamente riesgoso. Luego de eso, y de noches sin dormir, Bill comienza a entender que cosas causaron esa caída y cómo solucionarlas. En esencia toda la primer parte cuenta el típico camino del héroe, en este caso con una historia de IT por detrás.

Uno de los conceptos que introduce el libro es el definir el trabajo. ¿Que es trabajo en IT? Responder esa pregunta te habilita pensar tus procesos como cualquier otra actividad productiva. Hacer software es ingeniería no es arte y se tiene que abordar con un punto de vista ingenieril. Eso me gusta. Al final llegan a la conclusión de que el trabajo es:

  • Proyectos del negocio.
  • Proyectos internos.
  • Cambios.
  • Trabajo no planeado.

Donde el trabajo no planeado es lo peor que nos puede pasar.

El paso siguiente es pensar el desarrollo de software como un todo. Usando el concepto de las tres vías. Concepto que se trabaja en otros libros y sobre el que se puede profundizar pero que se puede resumir en:

  • Primera via: El trabajo fluye en una sola dirección… Entonces buscamos evitar el retrabajo y nos esforzamos en hacer que ese fluir sea el mejor posible. Para ellos tenemos que encontrar los cuellos de botella y accionar de forma tal que aumentemos nuestro throughput.
  • Segunda via: Ciclos de retroalimentación (feedback) cortos y amplificados. Muy de Lean, fail fast y esas cosas. En vez de desarrollar durante 12 meses para deployar algo que ya está obsoleto hacerlo de forma tal que uno pueda salir a producción 10 veces por dia.
  • Tercera via: Experimentacion continua, para aprender de los errores y lograr la maestría. Es como dicen, la practica hace al maestro. Y practicar implica equivocarse y aprender de ello.
La primera via Dev -> Ops. La segunda via el feedback, Ops -> Dev. La tercera vía todo lo que pasa en el medio con ciclos cortos que nos permitan aprender.

Es importante que sepamos que es una novela. No es un manual, no es una guia y mucho menos es un libro que nos pretende vender una forma de trabajo. De todas formas al leerlo, si son del mundo de IT, van a notar que lo que les duele a los protagonistas son las mismas cosas que nos duelen a nosotros en nuestro día a día.

Al final nos damos cuenta que nuestros retos no son tan únicos como nos parecen cuando nos encontramos con ellos por primera vez. Que los retos que se enfrentan los roles más cercanos a management son muy similares en en todos los rubros y que el éxito viene de lograr que todas las partes trabajen en conjunto.

Un gran complemento a este libro, mucho mas tecnico, es The DevOps Handbook, que recorre las tres vías con sumo detalle. A su vez hace un par de meses (Noviembre de 2019) publicaron The Unicorn Project, donde se abarca esta misma temática pero desde el punto de vista de los desarrolladores.

En The Unicorn Project se presentan los 5 ideales:

  • Localidad y Simplicidad
  • Foco, Flujo y Alegría
  • Mejora del trabajo diario
  • Seguridad psicológica
  • Foco en el cliente

Estoy deseoso de leer este libro, me parece un buen complemento a The Phoenix Project. Ambos libros creo que tienen por detrás un montón de conceptos e ideales que no son tan explícitos pero que hablan de una nueva de trabajar. Conceptos muy relacionados con el agilismo y que está bueno incorporar.