The Quiet Of Morning

It’s nearly 7 AM, and as I’m drinking my morning tea and reading, I suddenly feel the urge to write about how my newly acquired habit of getting up early has affected my life. At the moment, the house is still, with only the cats wandering around (well, one of them at least, the other, being a total lazybones, is curled up on the chair next to me).

It’s pretty well established that one of the common habits of successful people is waking up early. There’s also plenty of good tips on how to start doing it. I’m not going to re-hash those here; instead I’m going to just talk briefly about my experience.

All my life I’ve been a habitual late sleeper. In college I actually failed a class that began at 8AM, at least in part because I skipped almost a quarter of the lectures. My first job out of college had hours of 12pm – 8pm, and it wasn’t uncommon for me to be up until 2-3 AM, then sleep until 11 or so. Even after getting a job with normal hours, I still never broke the ritual of later mornings.

So what finally made me change? That’s easy: becoming a parent. Espeically after my second child was born, I found quiet time to be at an incredible premium. It was rare both of the kids were asleep at the same time, except for late at night or early in the morning. And given that, by the end of the day, my brain tends to be about as useful as a pile of noodles, it was only logical that the single easiest way to regain some of that valuable reflective time was to get up earlier.

Now, several months later, I would say that I am a successful “early bird”. What lessons did I learn throughout this process?

The first is that slow, gradual progress is better than huge leaps. At first I tried going all out (i.e. going from waking up whenever to 5:30AM or so) and immediately failed. My body simply couldn’t handle the dramatic change in schedule, and I quickly fell back to my old patterns. A gradual change worked much better, where I set my alarm around 10-15 minutes earlier every few days. There were still difficulties, but it was a much smoother transition.

The second is that my choice of alarm was more important than I thought. The traditional clanging bell or other constant noise did more to annoy me then wake me up, and it usually resulted in an angry slap of the snooze button and a failure to get out of bed. I experimented with several options before settling on the Sleep Time iPhone app. It uses the iPhone’s built in accelerometer to determine what stage of sleep you are in, and tries to wake you when you’re at a “light” period. It also starts the alarm very softly and gradually increases in volume, which wakes me up in a much more gentle fashion.

The third is that this works better if I don’t eat breakfast right away. Making my traditional green smoothie or eggs and veggies takes up a decent amount of time, and time is extremely valuable. Instead, I make myself a cup of coffee or green tea, sit down, and get to my morning work. Only after I’ve accomplished some useful things do I stop and think about eating. This also means that I can still eat breakfast with my family most days.

And speaking of useful work, the fourth lesson is that being intentional about what to do with my time in the morning is crucial. It’s very easy to get lost browsing the news sites or reading blogs. And there’s nothing wrong with that, as long as that is what I really want to do. So, before I get started, I’ll stop and think about what I want to accomplish in the hour or so I’ve got.

Finally, I would say the consistently getting up at the same time, even when I didn’t necessarily have to (such as weekends) or got poor sleep (because that would never happen with two small children) helped get make this a successful habit. I’m not sure if there is some scientific reason behind this, but from a purely personal experience perspective, always getting up at the same time seemed much easier than modifying the time based on factors like when I went to bed the night before. Yes, this means there are days when I’m running on a less-than-desirable amount of sleep. But I find that my body usually does a decent job of telling me when I’m burning the candle too long and need to get to bed earlier. I will say that the one exception to this rule is when I’m sick; in that case I just let myself wake up when my body decides it’s time.

There’s no doubt in my mind that learning to be an early riser has been a huge help in keeping my reading and writing habits alive during the challenging period of raising two small children. The stillness of the morning (well, except for the one cat whining to go out or be fed), the feeling of a clear mind, and not having several voices clamoring for my attention are all wonderful things to experience. If you’re thinking about taking the plunge and getting up earlier, my advice: go for it.

Dealing With Too Many Voices

When I was a DBA (and, to a lesser extent, now as well) I frequently got into a scenario where I’d have multiple groups clamoring at me to accomplish a request from them on short notice. This sometimes became a problem, such as when there was only x hours in the day and I needed y hours to finish everything that folks were requesting. Or, when I had multiple people demanding immediate service (that never happens, right? Oh wait, it just happened today, that’s why I’m writing this. #Facepalm). Earlier in my career I would tend to get worked up, let my blood pressure go up, and perhaps engage in some creatively worded conversations with the people competing for my time. But after realizing that (a) this really wasn’t helping things, since people still want what they want; (b) all the yelling wasn’t helping my health, I came up with a couple rules on how to handle these, let’s say, explosive situations. In both cases, they’re remarkably effective at both alleviating the confusion over relative priority and lowering my stress level.

First: don’t even try to work out on your own which request is more important. Sure, you can ask questions and try and rank things in your mind according to things like which client things are for, how long things take, etc. Ultimately though, you’re going to be wrong in someone’s eyes and that someone is going to be unhappy with it. And moreover, unless you’re a manager, you’re not paid to determine things like that. You’re paid to get things done and write code, period.

Second: let the competing groups do just that – compete! Send an e-mail to the various requestors stating something like this:

Hi there folks, this is your friendly neighborhood (DBA | Architect | Database Developer) speaking. I thank you all for putting in your requests to me, and I acknowledge that each of you has requested that I handle them immediately. Unfortunately I can only work on one task at a time (unless someone’s developed cloning technology, which would be super!), so I will be doing these in the order which they were received. Before you begin thinking of arguments to get me on your side, I will warn you that this decision is not mine to make, so please do not send me justification of why you need to come first. If you feel that your request should take priority, please work with the owner(s) of those requests in front of yours to adjust their priority. If you all can amicably agree to shuffle things around I’m happy to oblige. I’ve listed the relevant work items below in order along with their owners. If I do not hear back I will assume you are all fine with this and will proceed in the order shown. Thanks!

Let the various people battle among themselves for the lead. Yes, this can sometimes get a little bloody, so you should probably check with your boss to make sure this is allowed before doing it. Which brings us to our third point…

Third: let your boss handle it. Managers are paid to, well, manage! If people cannot agree peaceably (or otherwise) on a pecking order, let your boss hear each of their cases and then tell you what to do. This will take the pressure off you to make a decision that is clearly one at a level above yours. Certainly your boss may (and perhaps should) ask for your input in the matter, but the decision should rest with them.

Since I’ve put the above rules in place I’ve never been more than slightly annoyed when these situations inevitably come along. It may not stop (or even lower) the volume of whining coming your way, but it will let you deflect and delegate all the stressful aspects of the problem.

You Only Have So Much Time – Use It Wisely

Hello there blogosphere… been awhile since I posted!

What’s that you say? Did I lose my motivation? Why no, actually, I’ve been extremely motivated lately. Just not to blog.

You see, I came to a realization shortly after my last post: I’ve only got so many hours in a day, so I’d better use them as best I can. I love blogging; really, I do! But I love spending time with my family more. I love working on our drafty old house, tilling the garden, seeing some tangible results of my work. For some reason, I am finding myself really hung up on the whole idea of producing things with physical presence. For example, for Christmas I spent hours building the simplest little wooden toy for my son. I’m not a natural and not very experienced at that sort of thing, so it was not easy work. But I found immense enjoyment in it, and the look on his face when he saw it come out of the box was nothing short of priceless.

Perhaps this is why I haven’t been blogging much. Writing is wonderful, but if I’m going to be brutally honest, I’d much rather write science fiction than SQL Server. Please don’t misunderstand me; I love my work and learning about SQL Server. When I’m on the job I eat, sleep, and breathe it. I’d say you’d be pressed to find someone more passionate and focused than I am during those 8-10 hours on Monday through Friday. But when work is done, I want it to be done.

Capture

The above picture is something that really had some profound impact on my perspective. For a while I felt like I was floundering in my personal life. Things never seemed to really get done. I had my lists, and I was reviewing them, but I lacked focus. I never felt like I had much time to get things done. So, I decided to see just how much time I really had.

Using a simple Excel sheet, I laid out my week, then blocked out sections in color for things I knew I had to do. Green is sleeping, yellow is work, and blue is meals. And when I saw what was left, I was shocked. My feeling that I never had enough time to get stuff done? Boy was I right. Comparatively speaking, my “discretionary” time (that is, the time during which I pretty much choose what I do) was quite small.

Obviously, short of quitting my job or getting less sleep (and believe me, you don’t want to see me in zombie mode), there was no way to increase the time available to me. So instead, I chose to be more deliberate with how I spend what time I have. I sat down and thought long and hard about what is important to me. After awhile, I came up with a list, and while work and SQL Server were definitely on there, they weren’t as high up as I’d have thought. So, I made the conscious choice not to write on this blog, while doing other things.

That word, “conscious”, is a very important one. Whereas in previous hiatuses, the lack of postings was more about my lack of motivation, this one was more about doing what was important to me. And I hope that in sharing this, I might encourage others to do the same. J.R.R. Tolkein famously wrote “All we have to decide is what to do with the time that is given us.” So, if you find yourself mindlessly wandering through your personal life, as I did, stop wandering, and start deciding.

Now don’t fret, dear reader, for I am not abandoning this blog. I’m still going to write, even about SQL Server! But at the same time, I’m going to spend a good bit of time on other things, like writing that novel that’s been sitting at one chapter for over a year now, or tending to my garden (because c’mon, who doesn’t love fresh-from-the-ground veggies?). I hope you’ll stay with me, because I do think I’m still going to write interesting stuff; just a little more diverse than previously. I’m going to work on getting category-specific feeds up, so if you like, you can just subscribe to those that interest you. I also plan on trying to write a few articles for the likes of SQL Server Central or Simple Talk.

The Importance of Making Junk

I was just sitting here looking over some old code projects of mine, and thinking “Man this stuff is junk. How’d I write this?! And why’d I waste my time on it?” These included a Java library for parsing tweets for data mining (boy that was going to be a great open source project), my first .NET application that was for work and used Microsoft Access as a back-end, and various other half-started works that never really took hold. At first this was rather discouraging, since it reminded me of my genetic pre-disposition to not following through on my projects (a topic for another day for sure).

Then it hit me: it’s only by writing all this crap (and believe me, most of it really is steaming piles of crap), trying out different routes and ideas, and ultimately letting them fall off that I’ve been able to improve my skills as much as I have. Picture the proverbial writer sitting at the typewriter with a pile of crumpled papers next to them, head in hands. But then, one day, something clicks, and out comes a masterpiece.

It’s not important that all we produce is wonderful, glittery, and perfect. No, what’s really crucial is that we keep going and pushing ourselves, especially when it seems like all we churn out is junk. That junk is gold, because it’s what teaches us to do better. As long as we keep learning from our mistakes and bad ideas, then we grow as professionals and human beings. And sooner or later, you might just produce that golden egg.

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?

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?