What I like about leaving it uncompilable is that way, I know I won't forget to finish that unit of work. Sometimes I'll leave it uncompilable, sometimes I'll just leave my self a little note with what I've done, and what I have left to do.
I've had days where I start by just running the code end to end and seeing what's egregiously broken, but I find this puts me in whack-a-mole mode the entire day and it's extremely tiring. Though, I do feel like Sherlock doing it.
/* WIP: make sure to initialize buffer by calling function foo() */
... the idea is that I'll remember that I left my code in an unfinished state, search for the `WIP`, get my bearings and then go off. Of course, that's easy to forget -- but impossible to forget if your WIP note is uncompilable.