Cyril Mottier

@cyrilmottier.com

Leadership, Engineering & Product amo.co. ex Zenly (Snap), CapitaineTrain.

We’ve been running with Gradle’s Isolated Projects for a few months now, and it’s been a game changer for our build times 💥. An unexpected benefit: because modules are much cheaper now, we’ve completely rethought how we modularize our app.

I published vibrance-0.1.0 on Maven, now with support for Compose for Desktop (JVM). The APIs let you mix colors yourself, or draw gradients as modifiers or Compose brushes. Next steps: refine the model training to improve some color transitions, better alpha support. github.com/romainguy/vi...

BildBild

I often describe engineering leadership as choosing "the least flawed decision." There are no perfect trade-offs in software. Every choice has a cost. The job is to understand those costs, make them deliberately, and slow system entropy better than competitors.

"Software engineering is programming integrated over time" has never resonated more. Programming is getting close to free. The hard part is building systems that can live, change, and remain reliable over time.

A strong signal that your feature was designed well: it has clear boundaries. So clear that removing it feels like using a scalpel: delete a single directory, not start an excavation.

AI isn’t changing the job of engineering leadership. It’s amplifying it. Our job has always been to turn raw contributions into reliable systems. Before, that meant juniors & new hires. Now, it also means agents & AI-augmented engineers. What changed is the throughput.

Divide and conquer still wins. Separation of concerns still wins. Modularity still wins. Why? Because complexity is expensive. For humans (cognitive load, pace, quality) and for AI (reasoning depth, latency, token burn). Fighting complexity still pays off.

Compile-time flagging is a game-changer for large codebases. Just be sure to expose these variants only at the highest level of your build. If you don’t, you’ll end up with combinatorial complexity leaking everywhere in your code.

Join us with @ParisAndroidUG at @amoamoamo HQ on Jan 13, 2026! 🚀 On the agenda: generating videos off-screen and off-main thread from Composables, why & how we switched from Hilt to Metro DI, and how to build your own Kotlin compiler plugin.

Bild

Hidden perk of Metro DI over Dagger: no more wrestling with naming binding functions. We’ve migrated nearly our entire codebase to @Contributed* annotations cutting thousands of lines of code in the process.

Bild

Websites like apilevels.com are useful, but nothing beats analyzing your own data. At amo, we see a radically different Android versions distribution. It completely shifts our decision process regarding usage of AGSL, AVIF, HEIC, and more.

Bild

Tooling helps manage the complexity of large codebases. We built tools to track important metrics: ‘unused-modules’ to find deletable modules via DFS, ‘longest-path’ to calculate the longest dependency path - highlighting potential critical paths and more.

Bild

I love enums/sealed classes/union types. I really do. They give exhaustivity at compile time ❤️. But they just don’t scale. I always end up making the painful choice of trading compile-time safety for scalability. It hurts, but it’s necessary.