Recently I had to decide how to rebuild a fairly large component of our compiler (several passes, artifact emission, etc). It took me about a week for the idea (for how to best do it) to occur to me. I spent that time working on our runtime instead. Then once I had the design/architecture, I worked for 2 weeks straight to implement. And during that 2 weeks I figured out a path forward on something I was blocked on in the runtime.