Header Image -

Monthly Archives

4 Articles

Work at the right times

by dave 0 Comments

I wanted to share a perfect example of how your mental state can impact the efficiency of work, and how taking advantage of that can have great benefits to work-at-home programmers:

I had a couple fairly simple tasks to complete yesterday afternoon. they did not sound difficult, however after the Christmas holidays, I was not feeling at my best, and just could not wrap my head around what I knew should not be that difficult. My eyes were not able to focus on the screens, and it just wasn’t coming together.

So instead, I did not do that programming work. I instead wrote up some documentation and test scripts, which are less mentally taxing.

This morning, after a good night’s sleep and a good breakfast, I sat down and tried again. And not only did I knock out both tasks in less than 30 minutes, including testing… I also realized there were very simple solutions to the tasks that did not even occur to me the day before.

Again, this is one of my most important lessons in working at home – take advantage of the flexibility that the situation offers, in order to do your work at the times when you will do it best.

My Work From Home Details

by dave 0 Comments

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.



The Importance of Self Awareness

by dave 0 Comments

One of the keys to being effective while working from home is to be aware of your own work ethic, style and preferences, enough that you can create the ideal working environment for yourself. This means more than something as simple as “I like to code until 1 AM, then sleep in.”

It means knowing when you are being effective. It is easy to know when coding is going well, and equally easy to know when you are making no progress whatsoever, and need to walk away and take a break. The harder questions are when you are between the two extremes. If you are slogging through a tough bit of code, are you really making progress? It is worth spending half a day fighting some slow coding, or would you be better off to go hang out with the kids for an hour, come back refreshed, and get 2-3 hours of improved coding done?  You need to know why your coding is going well, to keep it going well. And you need to know why it may be going poorly, to know how to fix it.

You also need be aware of your own levels of stress and satisfaction with your work. It can take self-control to not code for 70 hours in a week when you are loving your current project, and it is important to do so because you can burn yourself out. Likewise, when you dislike your current project, you need to know how to keep yourself motivated to be sure you don’t sink down to working only 20 hours a week.

Before anyone jumps on me for dictating a specific number of hours to work per week, let me state that yes, I know one of the huge goals of working from home is to focus on the results, not the hours worked. But I have found that hours worked does have an impact on long-term productivity. When I first started working from home, my first 4 weeks were highly productive. I worked 60+ hours a week, and cranked out a project a week. But then after a month, I found myself totally overwhelmed, and realized that I needed to scale back.  Over-doing the hours burns you out. Under-doing hours also is a problem, at least for me, because if I am not putting most of my effort into my work, whatever else I have chosen to spend my time on becomes more important to me than my work, and I will slide into a very poor work ethic, with poor results.


It is also wise to be aware of the steps it takes for you to get your mind into the proper state to be productive. I know very few programmers who can sit right down and start slinging code without some kind of warm-up period to get their brains going. Everybody has a different routine, but not everyone can explicitly state what that routine is. It is worth the effort to observe yourself as you sit down to work each day, take notes on what you naturally do, and then actively cultivate those steps that get you prepared to write code.

It is also worthwhile to  take a similar introspective look at the small things that can break your concentration and kill your productivity, and figure out ways to prevent them from invading your working space.

Finally, create your own working space. Decorate it a way that makes it feel like your own personal haven. Get the computer setup that works best for you, and the chair in which you can work comfortably and alertly all day. Set up lighting that is sufficient for your work, but no so bright that it strains your eyes. Select music, movies, silence, or whatever other ambient sound help you to concentrate on your work.

I realize that I have only written about what kinds of questions to ask yourself, and not given any answers. That is because everyone has different answers. I will share my own answers in my next post, but that will serve only as an example…  learning how you work best is a process that will take time and effort to perfect, and will be specific to yourself.

Rekindling my writing

by dave 0 Comments

I have had blogs off and on over the years, some of which received significant audiences, with a few notable posts over the years. However, the past 2 years, I have written nothing, and actually deleted most of my old content.

I am now feeling that something is missing in my life. Despite the fact that blogs are not exactly the latest and greatest mechanism for online content creation, I find that a blog fulfills something important to me, namely writing. I do read a lot, and I think about what I read, but writing about my thoughts helps me to solidify any conclusions I am drawing.

I am not as concerned about whether or not people read what I write. I enjoy having an audience, and I have mixed feelings about the discussions that arise from my writings, and I’m ok with this just being my own space that nobody ever finds, too. Time will tell what happens this time around.

I intend to start off with some thoughts on transitioning to a work-at-home coding job, as that is how I have spent the year in 2013. I also may go back through some of my old content, if I can find it, and try to bring some of it back. (While reserving the right to edit and add commentary on anything I bring back from old blogs.)

I am not 100% sure where I am going with this, but I do know that almost every day, I see something worth sharing or discussing, so this is now my place to express my thoughts, wherever they may lead.