For me dwm just works. I fiddled around with config.h for maybe an hour after first getting dwm, and since then have basically left it alone to do its wonders. It's reliable, quick, and simple.
Plus it's well-written C, so I learn nicely as and when I want to, poking around to see how things work. I've heard good things about xmonad; I imagine using it is a nice way to learn haskell. Nick