Code re-useability
Performance optimization (parallelizing, reducing memory consumption by saving results, batching optimizations to reduce number of Stim circuit updates, saving stim circuits (if noise didn’t change))
Organizing a large codebase
Knowing when to pivot - had to make a tough decision to split project into two parts.