I find it's also a great way to procrastinate. "Trying to fix this elusive bug or design this new feature is becoming time consuming and boring... but I bet I could shave a few cycles off my rendering loop (again)"
the core protocol implementation is 90% there but in a way that prevents the entire project from functioning? time to refactor an unrelated state machine for the third time.
literally a decision I made on a side project a few weeks ago.
I think 90% of devs love to refactor.
On toys app's it's great fun.