16 Years Remote: Lessons from a Software Engineer

16 Years Remote: Lessons from a Software Engineer

I have worked remotely as a software engineer for over sixteen years. That is a lot of work days! I think I'd have to be clueless not to have gained some insight into remote working along the way. This post shares my remote working best-of; the patterns and practices I have kept and those I have discarded.

Prepare the Prior Evening

Right off the bat, one of the critical aspects of working remotely is meticulous planning. Never start your day without a plan. Even a general plan acts as a compass for the day. I like to develop a plan the night before, devoid of the hustle and bustle of daylight hours. During the day I do pivot from the plan as necessary, but not having a plan creates MORE work for me because I have to juggle doing and decisioning simultaneously.

Here is one of my daily plans (yes I keep them and re-read them). Obviously this is the opposite of fancy. But because of that I've been able to be consistent. I can always spare 5-10 minutes at night to compose a rough plan. I try to make each entry relevant and achievable. I don't worry about order because I've found that order often needs to be revisited as the day unfolds.

Commit to Accountability

Every year we all file our taxes. It's not the most pleasant experience, but we all know it's coming, and those that prepare during the year have a much easier time. That preparation doesn't happen magically, you hold yourself accountable to the preparation. You commit.

Be accountable for your plan. If you find it helpful to use a guard rail like SMART (Specific, Measurable, Achievable, Relevant, Time-bound) then by all means go for it. The point is that your plan acts as a compass, ensuring that every action taken is aligned with goals (plan). Being a remote software engineer isn't merely about churning out code; it's a pledge to deliver results. We are, in fact, being paid to produce. Honor that contract, as I'm sure you already do.

Prioritize Satisfaction

I'm certain the same exists in other fields: when you're in the zone you just stay there, reaping the benefits of total focus. It's awesome right? It is, until you've been doing that for days, or even weeks. When I have hyper-focused for too long, I feel disconnection from other areas of my life. And then that bleeds back into my work, so that I'm not doing any part of my life well.

To obviate this, I'm constantly keeping my own satisfaction in mind. For the very short term that could mean taking a 15-minute walk outside with my dogs. For the medium term that could mean making sure I stop work on time and enjoy a show with my wife. And for the long term, that could mean learning a new language or some other outlet that I find satisfying. The point is that by keeping my own satisfaction in mind, I am ensuring that I bring the best mindset to work.

Invest in Yourself

Investing in tools and education is akin to a craftsman honing his tools and mastering his craft; it's an indispensable endeavor for career and personal growth. Everybody that knows me knows that CrossFit plays a big role in my life. My most excellent coach exemplifies this for me. He maintains active connections with mentors and regularly dedicates time for furthering his mastery as a coach and athlete.

In a field that evolves at a blistering pace, staying current with emerging technologies and methodologies is not just about keeping your job, but mastering it. Allocating resources towards acquiring software tools enhances efficiency, opens up new avenues for problem-solving, and often propels the quality of output. Dedicate time and resources towards continual education, be it through online courses, certifications, or attending workshops. This commitment not only sharpens your skill set but expands your horizons. But the true win is nurturing a growth mindset.

Walk, Don't Run Sit

Back around 2010 I read an essay by one of my favorite authors, Neil Stephenson. The essay was classic Stephenson: well researched and well written. In it he discussed the modern ambulatory patterns of men and women, and compared them to each other as well as to our forebears. I would not do the essay justice, so please go read it, or his follow up Notes on 416 Days of Treadmill Desk Usage. But when I tell you I was freaked out afterwards, I'm not exaggerating. I had been working from a chair for two decades. We're talking long programmer days. For 20 years. I saw my life shortening before my eyes.

So I invested in myself, in my health, and indirectly in my career. I bought a walking treadmill. While I waited for it to arrive, I built a standing desk and gave away my chair. When my treadmill arrived I wanted to have no other option other than to walk and work.

Adopting this ergonomically friendly workstation, my days morphed from sedentary marathons to invigorating journeys - emphasis on invigorating. The rhythmic pace on the treadmill resonated through my work product, breeding a sense of rhythm and focus that was conspicuously absent from a traditional desk. The hum of the treadmill became a Pavlovian trigger into flow state.

Keep Boundaries

Productivity is imperative, yet, amidst all the epics and sprints and stories and tasks, lies the challenge of clocking out. Unlike a traditional office setup, the boundaries between work and personal life easily blurs in a remote setting. Committing to an end time of your day is not a mere act of discipline, but as I've mentioned a focus on yourself, friends, family, and non-work interests. Transitioning to non-work life, be it engaging with family, diving into hobbies or simply unwinding with friends, is an antidote to the potential burnout lurking around the corner.

And Specifically...

I thought I would share some specific habits that I have refined over the years. By all means pick and choose if anything particular speaks to you. Discard the rest. Maybe I'll transition these to a page that I maintain (lmk).

  • Keep your desk clean and organized
  • Use as many monitors as you can (I use 7)
  • Don't play music, podcasts, etc.
  • Prefer low-glycemic meals
  • Focus; say no to distractions
  • Work from home, not cafes
  • Be very selective what you install on your work computer
  • Always enable video when conferencing
  • Never hesitate to ask for help
  • Keep copious notes as you go
  • Use a refactoring IDE; if you use a bare editor, and I use a refactoring IDE, nine times out of ten I WILL BEAT YOU.
  • Lean into using virtual machines and container images. The software you SHOULDN'T install on your work computer can go into a VM until you know it's safe.
  • Be the most responsive person in your Slack workspaces. When people know they can depend on you, then you know you are serving well.
  • Write unit, integration, and end-to-end tests.
  • Write unit, integration, and end-to-end tests.
    (Yes, this deserves at least two mentions.)
  • If you see a book that peaks your interest, don't hesitate to buy it.
  • Move hard at least once per day. If possible, lift heavy stuff.
  • Be uncomfortable every day. Try cold showers to start.
  • Keep a secondary computer fully ready, just in case.
  • Your laptop is for remoting into your work computer. Period.
  • If containerization, orchestration, or frankly, anything else seems overwhelming, good. Sit in that until it's not.

Conclusion

The journey of a remote software engineer is of course unique for each person, with their own challenges and opportunities. But common to all of us is a demand for discipline yet the potential for flexibility and possibly more overall satisfaction. As someone who has navigated this path for over a decade and a half, the essence of effective remote work boils down to blending productivity, continuous learning, and a well-defined work-life boundary.

Code well, and shape the future.

Resources