I’ve done both. Much of the work I do involves helping teams with prioritization, evaluation, choosing among architectural or algorithmic options, hiring, etc. Billing by the day – most of my engagements aren’t really hourly – provides a flexible framework for doing so. And I make it clear to clients that, if they don’t feel they’re getting good value for my time, we should change or end the engagement with no hard feelings. It has pros and cons, but it’s mostly worked for me and seems to make my clients happy.