Project Resource Scheduling Is Hard

One of the challenges that I’ve never quite figured out is scheduling myself for projects at work. When teams come to me for help, they usually want to know when I can get to them (which usually turns into an argument over why I can’t do it that same day). As a result, I have to develop some method of keeping track of the projects on my plate, who they’re for, how long the various tasks are going to take, and when I’m going to do them.

Interestingly enough, this is one area where I’ve found GTD somewhat lacking. The framework is great for keeping track of ad-hoc “Stuff” that can be done whenever time is available, as well as the “waiting for” and “someday” lists, but it just doesn’t seem to work for the kind if date-based scheduling I usually find myself doing. If I just put something on the list without considering how long it will take to do (i.e. “Install SQL Server cluster (6 hours)”), then plotting out when I have time to do it, I wouldn’t be able to give even a whiff of timelines to the consumers of my services. Naturally, that wouldn’t work very well in a deadline driven environment.

What I’ve been doing as of late is simply blocking out time on my Outlook calendar as projects arise, then letting folks know when I’ll be taking care of their work. It’s fairly simple, and works decently. I would like to figure out a way to make it a little more transparent than it is (I obviously don’t want to share out my calendar to everyone in the company) and easily reportable.

Ultimately though, the biggest problem is that the damn thing just fills up too quickly. Even fully reserving Monday, Wednesday, and Friday for project work (I pre-block out my calendar to prevent meeting invites, or at least discourage them), I’m usually booked solid around two plus weeks in advance. Teams generally aren’t too happy about that, though I have to place some of the blame on their shoulders; you can’t realistically expect a skill resource like a DBA to be able to undertake 10+ hours of work on two days notice. But despite reminding folks of that nearly constantly, they still complain and don’t plan, and I’m left in a bind where either one of two things happen: 1) Their work gets done as scheduled, despite their continued whining, or 2) someone higher up gets involved, priorities are shifted around (which is its own headache), and their work gets done sooner.

If I’m having this much trouble scheduling my own time, I can only imagine what it must be like doing it with multiple resources. Thankfully I’m not there yet, though if this work volume keeps up it might just be the justification (along with the gradually increasing din of complaints) to make my “team of one” a little larger.

How do you schedule your time if you’re a project based resource? How to do handle the inevitable emergencies that arise as well?

Sometimes GTD Text-Style Is Best

Recently I switched from using the web-based GTD tool Tracks to the simple, text file system called todo.txt. It’s based on a text file, with several interfaces, such as a command line tool, and an Android app. Naturally, one could also simply open the text file and edit it as well.

Initially the switch was made for a practical reason: the web filtering software at work happened to suddenly decide that parts of the Tracks website should be blocked, making it extremely difficult to use. But in time I’ve found that the new approach works quite well for several reasons.

First, it’s incredibly simple. I use the command line client (along with Cygwin) to interact with my todo file, with two aliases set up. One (the letter ‘t’) I use for keeping track of work items; the second (the letters ‘tp’) I use for personal items. That keeps the two separate, work versus personal. That way I’m not tempted to knock off some work related item when I really should be cleaning the kitty litter.

Let’s say I want to add an item called “Followup with Dave re laptop status”, with a context of “@computer”. I simply type t add "Followup with Dave re laptop status @computer", and the item is added. I’ve always been a CLI junkie (in no small part because I really suck at GUI design), so I’m really loving it.

The second reason actually started out as an annoyance. Initially, I found reading the long text file rather cumbersome; sorting out projects, priorities, due dates, etc, wasn’t nearly as intuitive as it was in Tracks. Instead, I had to really scrutinize the list and read things over one at a time before deciding what to do. I was becoming quite frustrated when it dawned on me: this is actually a good thing, because it’s forcing me to explicitly examine everything on my plate whenever I look at the list. No more glancing over things without really seeing what they are.

If you’re into simplistic (yet elegant) solutions and also happen to be a GTD junkie, I’d highly recommend checking todo.txt out.

Lists and My “Ooh Butterfly” Syndrome

I’m horribly prone to distraction. It seems like every day I’m finding some other shiny little aspect of life to become interested in. Most recently (as in today) it’s Powershell remoting. I saw this video from TechEd and immediately exclaimed “Oooooohhh… I have to try that!”. And naturally, by “try” that I mean delve into it with absolutely focus and intensity.

Why might this cause a problem? Well, because I’ve got many many other things that I should be learning about, like Full-Text indexes, and the Entity Framework. And if I keep on finding more things to take my attention, I’ll never be able to keep track of them all, right?

Wrong. See, that’s where my old tried ‘n true lists come in. As I find things to study, I add them to my lists:

Trusty Tracks To The Rescue

There they’ll sit, waiting patiently until I’m ready to return to them. I can also review them on a weekly basis, and make sure that I’m not going too far off the reservation, and neglecting things I ought not to be. And I know this with certainty, so I can feel totally comfortable giving in to those pretty butterflies that keep coming my way.

Why do we use GTD?

I’ve blogged a bit over the life of this site about my use of a life-management framework called GTD and how profoundly it’s affected my life. Sometimes when I talk to people about it, a common response is “but why would I want to spend so much time keeping track of what I have to do instead of just doing it?”

The answer is that having everything in those magic lists gives you a kind of ultimate peace of mind that’s, well, hard to describe for those who haven’t experienced it. Now I know that makes it sounds like some kind of hippy-ish drug-induced trip; but really, the simple confidence of knowing all your responsibilities (“agreements” as David Allen, author of GTD calls them) will be there waiting for you when you come back is nothing short of priceless.

As I was reading my blogs today I found a great entry from fellow GTD’er and SQL community member Brent Ozar (blog | twitter). I think the passage below beautifully describes this “mind like water” (another David Allen phrase) state:

At around 5PM, when I’m not on the road, i leave my home office and my tasks behind.  I walk Ernie (our dog), get the house ready for Erika’s return from work, and leave the workday problems behind.  I’ll still check email from my ozone when we’re not doing anything, and I’ll respond to quick questions, but I won’t do work.

And I won’t care.

I won’t stress out about things I have coming tomorrow, won’t get worried about what a client’s server is doing, won’t work late trying to “get ahead” – because there’s no such thing.  As a knowledge worker, I’m going to be behind for the rest of my life.  The better I am at accomplishing stuff, the more work people will give me.  At 5PM, I have to change contexts because I won’t ever be caught up in my home life either.

via GTD: Why Things Have Been Quiet Around Here | Brent Ozar – Too Much Information.

Thanks for helping spread the word Brent. It’s always great to see others having the same experience and speaking eloquently about it to the world.

Now if you’ll excuse me, I’ve been neglecting that @home list of mine.

Are You An Umbrella Or A Funnel?

Recently I was chatting with my sister-in-law, who happens to be a product owner at a rapidly growing startup company. We were talking about the nature of “flow” and how important it was for people to be able to focus on doing their work without being interrupted. Partway through the conversation she had a great quote (paraphrased roughly here):

Google has a great description for the role of managers: they should be sh*t umbrellas for their team. Their most important role is to protect their team from all the sh*t that comes flying at them so they can focus on doing their job: writing code. That’s my job in a nutshell and I take it very seriously.

The best reference I could find to that term is here, where GMail product manager Todd Jackson was quoted as saying “You can either be a sh*t funnel or a sh*t umbrella.” The article goes on to describe how a good manager protects their team from unnecessary garbage, in effect being an “umbrella” to the storm of things (requests, questions, stupid meetings) that rain down on their staff. But some managers take on more of the role of being a “funnel”, in that they simply filter and then pass on the things that come at their team.

I suppose one might say, “Well at least in the case of the funnel, the people aren’t directly exposed to the onslaught of sh*t.” That’s true, but I’d counter that depending upon how the manager passes on the stuff they deal with, the end result could be the same. If at once-weekly meetings everything that’s been triaged is laid out and assigned, that’s fine, and in fact I’d argue that’s really playing the umbrella role. But, on the other hand, if the manager simply sends everything off towards their team with the convenient “FW:” tag, well then what’s the point of the filter at all?

Personally at work I’d love to have some way of shielding my team from the daily barrage of (mostly) crap work that comes our way. I still believe the idea of a “handler” and holding designated office hours would provide immediate and noticeable relief. In effect, the handler becomes the umbrella, handling the collecting and triaging of incoming requests and only interrupting the rest of the team when absolutely necessary. Hopefully we can get some buy in from management on the idea, and time will prove our strategy to be one that greatly increases our ability to get work done.

So how do you shield your team from flying sh*t? Are you a funnel, an umbrella, or some combination thereof?

Lessons From Urban

His heart was pounding, racing at a pace that surely would make any competent doctor raise an immediate concern for the safety of his patient. Beads of sweat rolled slowly down his forehead, wiped away by a hurried swipe of a forearm, only to be replaced by fresh ones. He was hunched over his keyboard, fingers flicking over its surface in a frantic blur of activity. His eyes gleamed with fury; two dark spots whose glare was entirely focused on the screen before him.

It was anything but an elegant fight that they waged, the operator and his silicon-based opponent. They darted back and forth, each one probing the other for any sign of weakness. Even as one seemed to gain the upper hand, the other would counter with a move both swift and unexpected. It was a war of attrition waged by two stubborn parties: one driven by his need for dominance, the other because it did not know how to do anything but respond in kind.

Words and numbers trailed endlessly across the screen, a seemingly meaningless stream of nonsense, uttered by a mind bereft of all reason. Yet to the operator it all made perfect sense; perfect nonsense, that is. As his nemesis endlessly spewed chunks of data, his eyes sprinted back and forth, trying as best he could to collect and analyze it all. But try as he might, it seemed always that his enemy held the upper hand. Just as he gleaned a tiny bit of understanding, some small nugget of progress, a new wrinkle would appear, more confounding than the last.

As his frustration grew he felt his temples begin to throb; gently at first, but increasingly as time passed. It was as if his body was trying to tell him “Back off, you’re in dangerous territory.” But he was past all reason, so completely consumed he was with his task at hand. On and on he pushed, till the throbbing became outright agony. He flung open the drawer to his right, digging feverishly through its contents until a small bottle was found. Pawing it open, he quickly extracted two small white pills and swallowed them hurriedly, without water. They offered little hope of relief, but perhaps they would give him the edge he so desperately desired, no, needed.

So, I’ll give you three guesses around what the above narrative is about. A piece from my first attempt at an epic sci-fi perhaps (yes, that is very much on my someday list)?

I’ll give you a hint: been following the saga of Urban Meyer, the embattled yet highly acclaimed football coach of the Florida Gators? If you have, you know that he’s basically been told by his doctors that the very thing that makes him one of the most successful coaches in history may also cause him to prematurely leave this Earth: his singular focus and intensity.

When I first read this story, my immediate thought was “Wow, that could be describing me to a T, minus the arachnoid cyst pressuring his skull and all.” I am probably one of the more driven individuals you’ll ever meet; when my mind is set on solving some problem, it’s a nearly useless task to try and pull me away. Just ask my wife, she’ll be happy to oblige you with all sorts of evidence supporting that statement.

On the one hand, this trait is an asset: it lets me persevere when others would stop, long discouraged by setbacks and seemingly insurmountable challenges. It’s probably the major reason why I’ve been so successful in a field that, up until around three years ago, I knew nothing about. But there is a dark side to this unending focus. It manifests as the (not so at times) occasional splitting headache, the missed personal responsibility, the midnight awakenings when nothing short of a blow to the skull will seemingly quiet my mind.

Faced with the prospect of enduring this escalating chain of physical and emotional malaise, I’ve made the decision, much as Meyer did, to step back. No, I’m not taking a leave of absence, but I am engaging in a concerted effort to become more aware of my emotions and the physical manifestations thereof. Journaling, reminder alarms to “check in” with my state of mind, even asking others to notice when my symptoms begin to show themselves.

I love my work, but I love my family and my health above all else.

The Two Forms Of Racing Brain Syndrome – Part II

A Brief Recap

In part I of this two-part series we talked about the first form of what I call “Racing Brain Syndrome”, the “Stress Induced” variety. To briefly recite the main points:

  • It is usually caused by underlying anxiety about some aspect of your life, be it work, home life, or just plain keeping stuff in your head about things you’ve committed to doing.
  • This “stuff” can be either real or imagined (i.e. you’re going to get fired for writing a personal e-mail at work, once)
  • It is best remedied by either:
    • writing things down and clarifying all the details of what you need to do to take care of whatever is bothering you (best for dealing with the former “real” source of anxiety)
    • practicing a little psychological technique called cognitive behavior therapy, which teaches you to examine and refute irrational thoughts using logical techniques.

Now we’ll talk about the second form of RBS, called “Excitement Based”.

It’s, well, due to excitement (duh)

Yeah, that does seem pretty obvious, doesn’t it?

In some ways this form of RBS can almost be seen as a positive thing, in that it means you have some good positive feelings about your life. Think about it: if you were bored and depressed, would you be waking up at three in the morning with some fascinating new take on that problem at work? At the time you may find yourself more annoyed by your brain’s utter refusal to quiet down, but if properly harnessed, these midnight revelations can actually greatly add to your productivity and creativity.

The trick to properly capturing these sudden bursts is to do just that: capture them

“Huh?”, you may say. Well, think about it this way: the very reason why your mind is refusing to let you drift off is because it’s saying “Hey, I have this great idea, but if you go back to sleep, you’ll forget me and I’ll be lost forever!” In a way it’s almost a built in self defense mechanism, designed to keep your late night brainstorms from slipping through the cracks.

To convince your brain not to concern itself with retaining this newfound wisdom, I suggest you follow the same basic tenet of GTD we used to combat the stress-induced variety of RBS: get it out of your head, now. Write it in the notebook you keep by your bedside table (you do keep one there, right?), send yourself a quick e-mail on the CrackBerry (yes, I’ve been known to do that in the wee hours of the morning), even scribble it on a spare Kleenex or other handy medium if you must.

You might think this behavior will just exacerbate the issue, since it will likely make you more fully awake. While that’s true, I would suggest that until the thoughts rolling around in your brain are properly captured and accounted for, you’ll likely find yourself tossing and turning restlessly anyway. This way, you’ll at least get things recorded so that you’re not battling that inner voice, nagging you about unfinished business. Trust me, that’s a battle you’ll come out on the losing end of every time.

That Ever Growing “Someday” List

So you might remember a previous post where I lamented my lack of a “Someday” list. Well, since then, things seem to have swung around to the opposite extreme. I’ve now got a healthy selection of projects-in-waiting, both for work and personal. Partly it’s been because I’ve been better at cleansing my action and project lists on a weekly basis; anything that has laid static for more than a few weeks gets archived and tagged “Someday”. But I’d say with confidence that the growth is largely attributable to a shear lack of time.

Ever since the birth of my son Taylor, things at home have been, well, busy to say the least. It’s been a struggle just to keep up with the day to day work, such as keeping the house clean, the laundry done, and the trash empty. With such little time and energy left over for personal projects, strict adherence to priorities and ruthless cutting of scope has been the rule of thumb. So much for things like learning Perl (though I’m sneaking this in at the gym on the treadmill), building a new Snort server, or even non-geeky work like painting the exterior windows on the house.

Work, while slightly less crazy, has been quite a whirlwind as well. After some purging of wartime troop levels, the remaining force has been tasked with a “lights on” mantra. That’s all fine and good, except you’d be ludicrous to call what we do “keeping the lights on”. Software still needs to be updated, security maintained, systems administered. Yes, some of the excess fluff has been removed: no more long troubleshooting of user issues (is it replicated on a clean system? If not, guess what, you get to re-image your computer) or extra out-of-scope work. But still, there is no shortage of necessary tasks to be had. Combine that with taking on a new product and expanding my role to include some levels of data-guru, and you’ve got a packed agenda.

On the one hand, it is more than a little frustrating to see the mounting list of “not yets” and “maybe somedays”. But at least I can be secure that everything is safely tucked away, waiting for the day when changing diapers isn’t an hourly occurence, or treading water at work less the norm.

Scope Creep Happens On Personal Projects Too

At work I’m fairly religious about such tenets as proper scope definition and change management in running my projects. Without this level of control, things would quickly spin out of hand and projects would never be completed in a timely fashion. Flip through any project management guide (the ubiquitous PMP Handbook comes to mind) and you’ll find pages of information on managing scope creep and keeping stakeholders in check.

But what about personal projects? In many cases, projects are more loosely defined, and lack specific objectives and milestones. The end result is that work gets added or priorities shifted mid-stream, which inevitably causes delays in completion, frustration, and an ever increasing pile of uncompleted projects. Not an ideal place to be!

Here’s a good example. One of the recent additions to the projects list is to build a website for my son, where we can showcase pictures, stories, and movies of his growth. Now at first, this seemed a pretty easy task, given that the steps might look like the following:

  • Select a hosting provider and setup account
  • Design simple iWeb template
  • Upload pictures to Picasa
  • Upload video to YouTube
  • Add content to pages, initial list to include:
    • Birth
    • The First Week
    • Pictures and Video
  • Send notification to immediate family

Easy enough, yeah? Well, being my geeky self, while carrying out these actions I decided to add some interesting learning opportunities to the mix:

  • Instead of hosting, use a dynamic DNS service and host the web site on my VM server at home. It is cheaper and since this site is not financially bound (i.e. if it goes down I won’t loose money), high availability is not a requirement.
  • Install WordPress as the CMS for the site, to allow for RSS feeds.
  • Find and install custom plugins allowing for photo gallery and embedded video functionality.

Getting a bit more complicated, aren’t we! Well, being the enterprising sort, I thought I might want to add even more complexity, so I considered these as well:

  • Setting up a VM to act as a gateway between my home network and the Internet, so as to allow the Internet exposed VMs to be on a separate network subnet from the rest of my internal LAN.
  • Setup of an IDS such as Snort to monitor traffic on this DMZ.
  • Setup of a custom VPN solution using OpenVPN so as to allow grandparents and other close relatives the ability to see additional content over a secure link.

Now, unless you are one hard-core geek (and not a parent of a new baby), you are probably going “What is this guy thinking?!” And you’d be right; while one could argue that the first set of “enhancements” adds some value to the overall project goals (a simple, easy to update, followable web presence), I think you’d be hard pressed to argue the same for that second list.

True, separating Internet and non-Internet facing network zones is a standard best practice, and a solution such as Snort would probably show all sorts of useful data. But really, what is the chance that a) a hacker is going to take the time to scan my network when it’s not widely advertised, b) there is some undisclosed vulnerability in WordPress or PHP, c) once gaining non-root access to the web server the hacker proceeds to succesfully brute force my strong, random 40 character password? Yeah, not likely I think. Definitely not worth the considerable effort for those last three tasks.

Given that my time is going to be rather short for the forseeable future, it appears I’m going to have to curb my knack for adding needless complication to personal initiatives. Just like with real projects, when time is short and resources tight, it’s more important than ever to ensure the work you do is adding real, tangible value to your projects.

These Requests Are Out Of Hand

Lately things have been a little crazy at work. Between a fair amount of vacations (some planned, some not) and a never ending stream of project work, my days have been pretty much filled to capacity. I’m a guy who prides himself on being efficient and squeezing the most out of my time, but damn, the difficulty of getting everything done has risen to a new level.

One of the most challenging aspects has been the sheer volume of requests that come in, requiring some form of response / work. Mind you, it’s not that I am stressing out because I can’t find the time to do the work; no, it’s become stressful just taking the time to explain to people that I can’t do the work! My management is excellent at backing us when we tell our business that a given request / project needs to wait or will take an extended period of time, but that doesn’t avoid the necessity of managing a constant stream of incoming and outgoing communications.

What I’d really like to do is put up an auto-responder that would sound something like this:

“Hello, thank you for e-mailing me. Please be aware that due to a sizeable project load, I will not have sufficient time to take on any additional ad-hoc requests for the next month. If your e-mail is regarding an urgent matter that cannot wait (Severity 1 / 1.5 critical outages), please call my extension to discuss. If your e-mail is regarding an existing project, don’t worry, I will respond to you in the next 24 hours. Otherwise, please be aware that it may be an extended period of time before I respond. Thank you for your understanding.”

A little extreme? Yes, I’ll admit that. But seriously, I can’t begin to think how much more productive I would be if I could eliminate this needless “Hi So and So, thanks but I won’t be able to do that for at least a month.”

Given that a proposal to my boss to implement this would likely be met with hysterical laughter (followed by one of those glowering, “Are you serious” looks), here’s some possible alternatives I’m considering, as a kind of stop gap measure if you will:

  1. E-mail (Outlook, GMail, all of the above) is closed, not minimized, except for a once per hour check to process incoming items. Every hour my inbox needs to be cleared and all e-mails either placed in the “Needs Reply” folder, the “Reference” folder, or logged as an to-do in Remember The Milk. Truth be told I’m just not doing well at ignoring checking e-mail with Outlook only minimized, despite turning off those annoying pop-up notices.
  2. Dedicate a period of the day to responding to e-mails, outside of which only critical issues would be answered. I’m thinking 1.5 hours in the afternoon would be sufficient.
  3. Put up an auto-responder for any e-mails marked urgent with the following:”Hello, thank you for e-mail me. Because your e-mail was marked as urgent, you are receiving this automated response to inform you that I only check e-mail approximately once every hour, and respond to the majority of e-mails once daily at (insert chosen time here). If you are reporting a critical (Severity 1 / 1.5) issue, or feel you need a response before the time noted above, please call me directly at extension xxxx, or call my team line at xxxx. Thank you.”

What do you think? Still too extreme?