Header Image -

Category Archives

7 Articles

No Adventures in Weeks?

by dave

It is true, the adventures stopped for a while. Mostly due to heat. Utah is a desert climate, mostly. Summers are the wrong time to be running around. Spring and Fall… those are adventure times.

So for the next 5 weeks, I’m choosing to increase my focus on work. The farm is stable, my other goings-ons in my life are slowing, and it is too hot to do much outside. So I’m hoping for a high-productivity period here for a few weeks.

So what does high productivity really look like as a work-from-home developer?  It doesn’t mean 16 hour coding sessions, 7 days a week, at least not for me. But it does mean more short coding sessions in a day. Instead of coding most of the standard work day, then signing off until the next day, a potential work day could go something like: Get up, do my morning ramp-up routine, code a feature, go for a walk, code another feature, have lunch with kids, code a feature, hang out with wife, code a feature, play card games with kids, code a feature, milk the goats, code a feature, puts kids to bed, code a feature, play a video game, code a feature, watch netflix, go to bed.

(Replace any of those “code a feature” moments with “have a meeting”, “run a data import”, “solve problems”…. the point is to make the work progress.)

 

With that kind of continual coding spread across my days, I never really shut down the brain… I ramp up faster each day, I can spread code over a few projects, think more between coding, and just do it all faster.

So why not do this all the time?

  1. It only works when my life is not very busy. Personal projects and time are diminished.
  2. I have to want to be productive. This requires having projects that are enjoying and satisfying, having confidence in the products and the company, and being in a good place mentally and emotionally. It is actually surprising how often one or more of those things is not true, and when one is not true, it tends to take down the others.
  3. Burn out will occur. I can do this for a few weeks, but not a few months.  But at this very moment, we have an event coming up in just over a month – it gives me a nice vision of exactly how long I should ramp up my efforts, and I get a break from it all in early September. (Conferences are work, but different work.)

 

 

Sleep and Code Testing

by dave 0 Comments

Just more notes on how I tend to work as a work-from-home software developer who works on such a small team than I tend to be a lone coder for most projects…

I try to never test code as soon as I am done coding it. I’m still too close to the code at that point, and I miss obvious things. I have a hard time just flipping a switch in my head and coming at my work from a QA perspective. Even taking a break isn’t quite enough. So I almost always code on one day, then test the next day. This does put a damper on extremely rapid turnaround, but rarely do we need to be that fast anyway.

However, there are other problems that arise if I finish a piece of work, say at 9 AM on a Tuesday, and want to let it sit for a day before testing on a Wednesday. If I jump into other projects, then I am too far separated from the project to be tested, and I lose some ground getting back into that project’s groove. But if I don’t jump into another project, I’ve wasted a day, and that just doesn’t match my work ethic.

So I try to write up testing checklists as soon as I am done coding., outlining which features need tested, use cases and specific details to test. Having the lists helps me get into the groove the next morning, so I can be productive even as my brain ramps back up the next morning, and form the basis for updating overall test scripts for the entire system.

But the lists also help because as the day goes on, I tend to think of other edge cases that I should test for, or other impacts the code changes could have across our systems. Having a checklist at hand allows me very quickly add an item to the list, then forget about it and move back to whatever I was working on, improving the results of my first project without derailing my thinking on the second project of the day.

It doesn’t seem like such a profound way to work, but I definitely perform better, even if slower, when I let sleep and checklist becomes a key component of my work. I think we should call this “Checklist Driven Development”.

Code all day, test all night.

by dave 0 Comments

The last few weeks have been 90% beating my head against code, and 10% moments of bliss when things finally work. It seems like everything that should take an hour to get done takes a day, and what should take a day takes a week.

But I am seeing the light at the end of the tunnel – I have a plan of attack to debug what I hope is the last of the issues in the morning, then I can start to really test everything out, finalize security, and hopefully release one of my current projects out to more people as a fully functional system.

The real question this raises, and the reason this post is marked as a “Work At Home” blog post is…

Who am I talking to, anyway?

I’ve been thinking about my reasons for writing, and I have found that I really have 3 audiences in mind when I write:

1) Other people who may be just starting to work from home, and may want to hear some perspectives from someone already doing that. Sometimes I’ll have something useful to say… other times, I just express what is going through my head as someone who works alone all day.

2) Younger folk who may be able to gain something valuable from my General rants on technology.

3) Myself. I just enjoy writing sometime as a way to relax.

This post started as a mix of 1 and 3, but mostly I am just writing to myself, late at night, after staying up way too late to knock out a few items that I really wanted to get done.

Tweaking my Daily Routine

by dave 0 Comments

Working at home is something that requires constant incremental improvements. Sometimes you make an improvement to your office or your tools and equipment. Other times you adjust details of how you work. The trick is simply to identify areas of improvement, then act on them.

Today, it is time to try some adjustments to my daily routine to try to resolve two problems.

The problems are:

  1. My afternoons are never as productive as my mornings.
  2. I am in poor health.

Problem #1 – Mediocre Afternoons

One thing I have learned is that I code better while caffeinated.  I am well aware that this is an addiction and is an unhealthy thing, but that is not one of the problems I am trying to solve today. But what I am going to do is adjust the timing of when I drink caffeine. I am going to move my daily caffeinated beverage to lunch instead of breakfast. This will give my brain that jump-start when I need it — in the afternoon. The hope is that I can balance out the productivity of my day and give myself a more steady working day instead of an uber-productive morning followed by a lame afternoon.

Problem #2 – Health

I’ve had significant health issues over the past few years. I’m finally healed from most of my physical injuries, and have found a diet and some supplements that has me feeling pretty good without being on drugs. However, over the course of it all, I gained a ton of weight and lost all of my fitness. I need to get back on track. So I am changing my lunch break into an exercise/lunch break, where I will hop on an elliptical machine for a while each day at lunch.

Also, I just started my kids in a martial art class. So it is time for me to get back into my practice as well. Luckily, despite not having practiced in 3 years, I’ve kept all my notes. So I am going to spend some time each evening practicing my martial arts.

Both of these activities will increase my chronic pain levels, but I’m hoping that it leaves it manageable enough to get back in shape, thereby taking the stress of extra weight off my body, and eventually the pain should decrease and all will be well.

So my routine that I am going to test for the next couple weeks is going to be:

  1. Wake up, do my daily web reading, and have breakfast.
  2. Start my work for the day.
  3. Around 11, break for exercise.
  4. Have my lunch with a caffeinated beverage
  5. Work until it is time to take kids to kung fu.
  6. Practice my own martial arts
  7. Spend evening with family
  8. Put kids to bed
  9. Finish up any work for the day
  10. Go to Bed.

Hopefully this will result in a healthier me, delivering more code, faster.

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.