As mentioned in the previous post, I feel that knowing yourself is key to setting up a highly effective environment to work from home. I had intended to list details of my specific work environment. But this post has become more of a stream-of-consciousness list of some high-level details and lessons learned over my first year of doing this.
I probably should edit this to improve its clarity and organization, but I think I’ll leave it, and possibly expand on some of the areas in future posts…
One important note — everybody works differently. My statements here are true for me, but you may differ – this is very specific to your own personality and lifestyle.
Hours Worked — I generally work best in the mornings, from whenever I wake up until lunchtime. I usually take a lunch break, which varies significantly in length, and then work for an hour or so after lunch. Afternoons are not very productive for me, so I use that time to catch up on less intensive tasks – documentation, emails, etc. After the kids go to bed, I also have energy for putting in the last few hours of work for the day.
Starting Time – I set no alarms, and let my body wake whenever it is ready. Sometimes this is 4 AM, sometimes it is 9 AM. I go straight into my work day whenever I wake.
Stopping Time – I stop around 4, as a general rule. This gives me the standard life of spending the evenings with my family and around my farm. Because I vary my starting time more than my stopping time, there are days where I work 12 hours, and days when I work less than 8. Over time, it approximates a 40 hour week, but I don’t track the exact hours very carefully. If I feel I have been slacking, I make up for it with a few additional ours after the kids go to bed.
Breaks — I break for breakfast and lunch. If I need to run errands, I’ll take a longer lunch break.
Music – I play 80s music on the radio. I do not play my own collection of music because I like it too much and it becomes active listening vs. background music while working. I selected 80s music because it is what I grew up with, and I just seem to be able to focus better when listening to it.
Office setup – I sit on a recliner, with my feet kicked up, looking at 4 22″ monitors. I have my keyboard and mouse on a tray that rests in my lap, with water and juice to drink in easy reach. My office is dark — dark green walls, and a low wattage light. I have a 6 foot whiteboard. I keep my office in the basement, so it stays consistently cool all year, and I do not hear noise form outside the home (or even from the west half of our home.)
Monitor setup – today, I run 4 monitors – 1 holds the code I am writing, 1 holds my web browser, one my documentation/checklists, and the last for email and IM sessions. Note that when I am testing using multiple browsers or login, 4 does not feel like enough. I have just ordered a 5th to add to the mix. The 5th is a 27″ 2560×1440 resolution monitor, which I intend to run vertically in the middle, with 2 22″ monitors on either side. The large vertical monitor will hold my code, and I can spread everything else out to the sides.
Computer Details – I run a Mac Pro, but boot into Windows most of the time. I roll over to the mac side for testing, or occasionally when we have an iOS project to perform. But most of our Dev tools are made for Windows, so that is my primary residence.
Keyboard details – As a programmer, having a good keyboard is more important than one might think. I like key with a solid feel to them. I do not like quiet keys. I like a larger backspace key, and a gap between the arrow keys and the keys above it. I require a full-size keyboard, and I normally use a Windows keyboard, even though I run Mac hardware.
Warm-up routine – To get into the right state of mind each morning, I have a series of web pages I review each morning. Mostly aggregation sites that collect tech stories, but also a couple web games that I play for a few minutes each day, and my personal emails. I start with the personal emails, then play the games, then read up on all the tech news, and at that point I am ready to start work. I typically spend from 15-30 minute on this each morning, depending on exactly how much new content appeared since the previous day.
Project Life cycle – I take each project through various stages as I work them: 1) Planning, where I gain an understanding of what needs to be done. 2) Drawing, in which I draw the system design on a whiteboard 3) Designing, in which I decide what components of the system need to be built. 4) Checklisting, in which I break each major task down into a high-level checklist of components to build, then in turn break that down further into detailed checklist that contain each function, object, or UI element to build. 5) Development, in which I complete all the checklists. 6) Documentation, in which I write up test scripts and high-levell documentation on all I have done. 7) Testing, in which I run through the test scripts 8) Feedback, in which I send the new project out to my coworkers for feedback, and iterate on the project until everyone is happy with it. 9) Deployment
Checklists – my work lives in checklists. If I can break it down into a checklist, I can do it. I use Trello, and I track everything I am doing in one trello board. Each project gets it own card, and each major task in that project get one or more checklist. If any single task starts to feel too large or complex to handle this way, I break it out into a new card. The checklist not only organize my work, and give me a quick view of everything I should be doing… they also help to quickly get back on track if something interrupts me. Working from home with 3 kids who homeschool means that interruptions are unavoidable. It is best to build a working system to be able to handle it.
Interruptions – Despite what I just said, I have taught my family to not interrupt me. Or tried to. It becomes more of a ritual of kids coming in, trying to talk, and me either ignoring them or booting them out of my office. After a few months of this, you can do this without breaking your concentration. And the kids have learned that it is Ok to sit quietly next to me, as long as they don’t actually disturb me. Sometimes they will sit here and play with a cat or read a book. But real interruptions do occur. That is OK – it is still less than I would encounter in an office. I tend to not get online for IM conversations, though. And I do not keep a constant view on my email. I check every hour or two.
“Good Job, Dave!” – Working alone means not as much positive feedback when you get something done. So I have trained my wife to smile and nod when I tell her I did something, and she then replies with “Good Job, Dave.” Silly, but it works.
Stay Relaxed – the whole point of working from home is to have a lower stress, healthier work environment. Or at least, that is my reason for doing it. This goal is nullified if you let the details of working from home cause stress. If you do step away from your desk, keep your phone with you so that you don’t stress out over whether or not you are missing something in email. If you are having a bad week and keep getting interrupted, or having bad, unproductive days, make up for it later that week instead of stressing over having put in a sub-par day. This also becomes important when you get an email or some other message that upsets you. Walk away from it, go do some other work, then go back to it later. Remember how good of a working life you have, and deal with problems when you are in a positive state of mind.
Communicate with Others – this is my downfall. I am introverted and independent, and am completely happy to go months just doing my work and never talking to anybody else. Assuming your other remote coworkers are good people, however, it is good to talk to them and remind yourself that you are part of a larger community of good people. I haven’t yet found the way to do this effectively with my personality.