This is a classic post from Paul Graham on Maker’s Schedules versus Manager’s Schedules:
There are two types of schedule, which I’ll call the manager’s schedule and the maker’s schedule. The manager’s schedule is for bosses. It’s embodied in the traditional appointment book, with each day cut into one hour intervals. You can block off several hours for a single task if you need to, but by default you change what you’re doing every hour.
When you use time that way, it’s merely a practical problem to meet with someone. Find an open slot in your schedule, book them, and you’re done.
Most powerful people are on the manager’s schedule. It’s the schedule of command. But there’s another way of using time that’s common among people who make things, like programmers and writers. They generally prefer to use time in units of half a day at least. You can’t write or program well in units of an hour. That’s barely enough time to get started.
When you’re operating on the maker’s schedule, meetings are a disaster. A single meeting can blow a whole afternoon, by breaking it into two pieces each too small to do anything hard in. Plus you have to remember to go to the meeting. That’s no problem for someone on the manager’s schedule. There’s always something coming on the next hour; the only question is what. But when someone on the maker’s schedule has a meeting, they have to think about it.
I can’t stress enough the importance of this post. First, if you are a manager managing makers, you better understand this schedule. When Infinity Softworks was bigger, I tried very hard to schedule meetings with my development team at the beginning or end of these multi-hour blocks, that way their interruptions were minimized. We — me and my VP of Technology — also blocked as much as we could. A good development or product manager should be blocking and tackling for the dev team, making sure only important stuff interrupts the developers’ schedules.
Second, now that Infinity Softworks is small again and now that I am writing code again, this issue is my second biggest source of frustration.  It is so hard to find large blocks of time to write code when I am still managing the business at the same time. I have taken to literally scheduling off entire days. I try to do this twice per week and leave other blocks open, but it is really hard to do this while accommodating other’s schedules. Sometimes it works best to just schedule nothing at all instead. One week dedicated to meetings and the next dedicated to development. This too is hard since momentum can carry over week to week. And if you really want to get my going, bring up cancelled meetings, one of my biggest pet peeves, especially when done last minute.  Talk about screwing up a very good maker’s schedule.
 Except sales. Those are always frustrating.
 Dirty windshields is another.