Time Management For Recovering Sysadmins
Everybody has heard the usual time management lecture; plan your day in advance, work from a list, don’t multitask. All fine and good, but this advice doesn’t really address the constant interruptions that sysadmins deal with. Let’s be honest, it’s really hard to focus on getting shit done while you’re constantly being pinged for help and advice. I spent some time recently thinking about what events distract me the most, and then tried to figure out ways to tune out those distractions. It’s a work in progress, but here’s the advice I’ve got so far.
Choose Your Interrupts Wisely
Face it, systems administration is always going to be interrupt driven. On top of day to day operations, many people depend on you for projects, advice and help carrying heavy things. Not to mention that if a system or service falls over, you’re going have to drop what you’re doing and fix it. You can’t get away from every interruption, but you can categorize interrupts into two types. Things you need to know about right now, and things you don’t.
Does your mail client really need to bounce around on every new message? – Set your email client to check for mail less often, and turn off the alerts. You wont miss out on anything critical (because people will literally run around when shit breaks) and you’ll gain back a significant amount of your concentration. Also, try setting up special notifications for specific important individuals, like your boss.
Do you really need to receive every Nagios alert on your phone? – Many sysadmins that I know like to stay “in touch” with things by subscribing to everything under the sun in the monitoring system. I think this is dumb. Instead, choose carefully which alerts you receive, and reserve SMS alerting for absolutely critical events. Stay “in touch” by planning time to proactively monitor systems and by implementing more advanced automatic health checks.
Should every event in your IM or IRC client make a noise and trigger a visual alert? – I doubt it. In fact, you probably only need to see messages that are either directed to you, or that are relevant to an area of your responsibility or interest. Try setting up alerts in your chat client that automatically notify you when your name and other specific keywords are mentioned.
Do you really need to sift through all that cron output email? – If you find yourself constantly discarding the same sets of cron output each night, stop doing it. Take a few minutes and edit the offending cron job to redirect the unnecessary output to /dev/null, or add a conditional to the cron job to alert you only if the job returns an error code.
Does Your Twitter/Facebook/Whatever desktop app seriously need to be running? – These things are the kings of all time wasters, and they usually aren’t even loosely related to the things you need to get done. Close them.
Don’t be a BOFH
Seriously. You can save a ton of time in the long run by simply teaching and encouraging your co-workers to carry out basis sysadmin tasks themselves. Don’t worry about root access, just give them sudo privs for a few commands at first. It will make their life easier because they can get things done without bugging the grumpy sysadmin, and you won’t have to deal with being interrupted to chown or chmod a file for someone.
Do One Small Thing at a Time
You can’t multi-task. Don’t even try to fool yourself. Seriously. If you want to see what I mean, try to have a phone conversation and write a regular expression at the same time. It’s just not going to happen. Concentrate fully on what you’re doing and keep a todo list. Focus, make notes, and get things done one at a time.
With that said, lists can be really overwhelming until you start crossing things off. So, try breaking down large projects into individual tasks. Things that take maybe 10-20 minutes to complete, max. For me, constantly finishing tasks makes me feel like things are getting done, and motivates me to do more. It also lends itself to focusing on one thing at a time, and provides a nearby stopping point if you need to switch tasks.
Read Email in Bulk
Now that your email client isn’t bouncing up and down every 30 seconds you can check your mail at whatever interval works best for you. Checking mail in bulk is basically just a sorting game. Stuff you need to do gets added to your list and stuff you need to reply to gets replied to. I also find that deleting or archiving messages from my inbox makes it much easier to identify messages that still need my attention. Besides, having an empty inbox just feels plain good.
Close Windows and Tabs When You’re Finished.
Seriously. This is really obvious but its easy enough to neglect. When you’re done with a tab, close it. When you’ve finished reading an email, close it. When you’re finished with a terminal, close it. Not only does it make your workspace less distracting and more focused on your current task, but it also will free memory and cpu cycles which will make your machine run faster, too.
“Self-Healing” Scripts Aren’t Evil
I’ve heard so many sysadmins go on and on about how taking an automatic action on a monitoring alert is a bad idea. This is bullshit. Sure, there may be some oddball scenario where a complication could occur if its a full moon on the second tuesday of the month. But actual problems are what you’re there to troubleshoot and fix, right? I mean, think about how many times you’ve had drop what you’re doing only to find that apache needed a restart. My point is, don’t go crazy. Let automatic self-healing scripts attempt the basic fixes, and have the system page you if things still are still broken. 9/10 times it will fix the issue.
Don’t Attend Every Meeting
Try to only attend meetings that you will pay 100% full attention to. If you’re just planning to bring your laptop and work on something else, why go at all? Also, if everyone in your meeting is on their laptop working on other things, take the hint.
Use A Config Management System
I use puppet, and it rocks. If you don’t already have a config management system in place, it’s time to bite the bullet and set one up. You don’t have to get your entire infrastructure under puppet control overnight. Just set up one thing at a time. For instance, if you need to update the SSH authorized_keys on all your hosts, take the time and write a puppet module for it instead of doing it by hand. It’s a bit more time up-front, but once it’s done, managing that resource becomes completely trivial. Before long you’ll be able to manage all of your machines from a central place, and build out new systems without any manual intervention.
Take Quality Breaks
As a sysadmin, its important to stay up to date on news and events. And as a human being, it’s important to stretch, get fresh air, keep in touch with friends, etc. So, instead of leaving reddit, slashdot, facebook and whatever else open all day long. Get up, go for a walk, get a drink, browse the internets and get it out of your system. Then, when you’re done, log out of that shit. Seriously, it’s really distracting.
Ask Others For Advice
That’s all I’ve got for now. What other time management practices work well for you? Please, leave a comment below, I’d love to hear your ideas and experiences.