La mayoría de las personas toman miles de fotos al año y nunca vuelven a mirar la mayoría de ellas. Popsa ayuda a esas personas a encontrar las que importan y las convierte en algo tangible que realmente conservarán y volverán a ver una y otra vez.
Nuestras aplicaciones móviles ejecutan aprendizaje automático en los dispositivos de los clientes para analizar las fotos (sin subirlas a la nube), seleccionar a las personas y los momentos significativos, y diseñar una composición que cuente la historia. Desde fuera parece sencillo, y esa es la clave.
Detrás de esa simplicidad hay mucha maquinaria, como las aplicaciones para iOS, Android y web; los servicios de backend que permiten gestionar los pagos y el cumplimiento de pedidos, o la infraestructura que administra el procesamiento y la entrega de imágenes en 50 países. Estos sistemas alojan las fotos más personales de los usuarios y procesan sus pagos. Deben seguir siendo fiables y seguros, y no podemos permitir que el conocimiento que tiene el equipo sobre cómo se conecta todo se quede obsoleto.
Ese conocimiento reside en la documentación que explica cómo se conectan los sistemas, cuáles son las convenciones y dónde están los límites en relación al contenido sensible. Es lo que permite a un equipo mantener, proteger y ampliar sistemas complejos sin depender de la única persona que construyó cada elemento. Sin embargo, mantener al día esa documentación es un problema con el que todo equipo de ingeniería ha lidiado en algún momento, incluido el nuestro.
He pasado por suficientes equipos de ingeniería como para conocer el ciclo. Uno de nosotros decide que «esta vez, se hará correctamente el mantenimiento de la documentación». Se dedican a ello grandes esfuerzos. Se crean páginas, se registran convenciones, se dibujan diagramas de arquitectura. A veces, los equipos cambian sistemas enteros (GitHub, Confluence, Coda), creando un nuevo impulso. Durante unas semanas, quizá un par de meses, todo se ve genial.
Luego, se queda obsoleta.
No por desidia del equipo, sino porque el cambio de software no es lineal. Puedes absorber decenas de cambios incrementales sin que la documentación se desvíe mucho, pero luego refactorizas la capa de autenticación, o migras a una nueva estructura de trabajo, o reestructuras una API. La documentación era correcta cuando se escribió, pero el código sigue avanzando. Por ejemplo, acabamos de remodelar nuestra aplicación de iOS de un flujo de navegación lineal a uno basado en pestañas. Tras un cambio de ese calibre, secciones enteras de la documentación pueden describir un sistema que ya no existe. La documentación puede quedarse obsoleta fácilmente.
La mayoría de los ingenieros saben que esto puede ser un problema, pero recientemente nuestro equipo pensó en cómo podríamos solucionarlo concibiendo la documentación como un sistema, y no como una tarea.