Social Enterprise

Five steps to enlightened expectations for managing your workload


Running your own business as an independent consultant can be stressful. There's always more that you should be doing. Besides working directly for your clients, you should also be improving your skills, pursuing new business, blogging and reading blogs (especially on TechRepublic), and taking care of business matters. It's easy to schedule 100% of your time for each of these areas. I may not be a math wizard, but that adds up to a big pile of stress.

On Zen Habits' list of 17 ways to create a peaceful, relaxed workday, #1 is "Do less" -- and #9 is "Cut back on your commitments." Sage advice, but how do you do it? You need to get all those things done, don't you? Well, maybe not.

I find that there's a sweet spot between the extremes of (a) having so much work piled up that I end up doing none of it, and (b) not having enough work to pay the bills. In that optimal middle zone, I spend the whole day doing work that's challenging and interesting, and I reach the end of the day with a real sense of accomplishment -- even if I'm not completely finished with the tasks I began. I'd be happy to tell you that's how most of my days go, but I'd be lying. I usually end the day by saying "It's 6 P.M. already? How did I work all day and get so little done?"

So how do you achieve that perfect balance? Surprisingly, the problem is not the amount of work you have on your plate -- it's the expectations that you've attached to it. We software developers, especially the good ones, are notoriously optimistic about how long it takes to complete a project. The bigger the project, the worse our estimate is likely to be. But in a business like mine it's all the little projects that stack up and sour my sense of accomplishment, because I'm so tempted to discount them completely. "Oh, that won't take long, I'll squeeze it in somewhere," I'm likely to mutter to myself -- not realizing that the majority of things on my to-do list are little things like this that I agreed to "squeeze in" while the big projects make very little progress and seem to hang around for ages. As Reg says, "If they happen frequently, they aren’t exceptions: The way you handle them is your business as usual."

Step one, then, is to change "business as usual." Nothing gets magically accomplished without taking any of your time, so you're deceiving your client and yourself if you say that it will. Treat each project, however small, as something that takes up space on the calendar. You may be able to split time with another project, but you must recognize that this will extend both projects. Even if you have periods of time when you're waiting for something to complete (a full build, for instance), shifting your focus from one project to another wastes a lot of time. "Squeezing in" something else just inflates your overall schedule.

Step two: Don't give estimates. I'm serious on this one. Just say no. It takes as long as it takes. If your client cannot function without an estimate, make sure it's outrageously padded. Chances are, even that won't be enough. Remember Hofstadter's Rule:

Everything takes longer than you expect, even when you take Hofstadter's rule into account.

If your client says, "But we need it by <insert rabid-pit-bull-aggressive date here>," don't say "OK" or "I'll try" or anything else to create a false expectation. I only see two possible answers here: "No," or "What parts of this project can be left for a follow-on release?" Asking for additional bodies probably won't help.

Step three: If your work day is nine hours long, don't expect to put in nine billable hours every day. Seven on a good day. Mode: six. Mean: five. Don't beat yourself up when you don't do more than that -- but your scheduling and your rate need to take it into account.

Step four: Try to create wide periods of time to get into the zone and stay in it, so you can actually complete something. During these periods, you must completely eliminate interruptions. Don't answer the phone. Don't read e-mail. Don't chat. You don't have to be actively designing, coding or debugging all this time, though. Sometimes you may need to just sit and stare out the window to think through a problem -- but don't get distracted with something else.

Step five: Now that you have a reasonable expectation of how much you can get done in a day, you're ready to decide which things get done today. If you can check those off, you've accomplished enough. If you finish those early and get something else done, too, then you can sign off for the day, elated.

About

Chip Camden has been programming since 1978, and he's still not done. An independent consultant since 1991, Chip specializes in software development tools, languages, and migration to new technology. Besides writing for TechRepublic's IT Consultant b...

8 comments
Heather1234
Heather1234

It's basic time management. If you have an issue on this, then take a time management course.

mikifin
mikifin

This is a good start...

Quills
Quills

Wow...I didn't know I was sharing my brain with someone else but clearly I am: these are my thoughts exactly. My stresses...my worries... my "a-ha moment" realizations...my conclusions. I started fresh in '08 by combining the "no estimates-ever" rule with a new mantra--"in my own good time" and the payoff, so far at least, has been huge. Estimates and promises only work when every single variable is under your control. If you think you have that kind of power, or even try and pretend you do, you'll be burnt out to ashes in no time flat. Ask me how I know... ...

Sterling chip Camden
Sterling chip Camden

Yep -- been there, done that, got the T-shirt. Every variable is never under your control, unless the project is truly trivial (i.e., can be done in two lines of Ruby code or less).

Igor Royzis
Igor Royzis

I started reading your blog a few months ago - good job and thanks! I tend to estimate project duration based on my 17 years of software development experience, but sometimes I run into problems, especially if I hire subcontractors to help me. I feel really bad when I can't deliver as promised. Your suggestion of not giving clients a time estimate would be great but it ususally doesn't work - clients want to know when you can deliver the project. As a matter of fact, some of them even tell you what the deadline is - take it or leave it (sometimes it's too good to leave). The way I handle multiple projects is by allocating blocks of hours to each project during the day. I never switch to another project when running a 3 minute build or restarting the app server. I also send my clients detailed status reports every week, including what I expect to complete the following week. This keeps them abreast of the progress and decreases the number of unpleasant surprises.

Sterling chip Camden
Sterling chip Camden

... and when I miss a commitment I am often tempted to give the client some free time to make it up to them. But if they were the ones who forced you into an unreasonable deadline, then they share the responsibility for failure. I say "share" instead of "bear" only because, after all, you agreed to it. Personally, no matter how good the compensation, if I get a queasy feeling about a deadline, I tell the client up front that I don't feel good about it. It may be important to meet a deadline, but it's even more important for them to know that you can't meet it as early as possible. I turned down a gig just a few weeks ago that paid exceptionally well, but I knew in my heart there was no way it could make the deadline for even the first milestone. You don't need those kind of toxic jobs.