Ask HN: How to make coding at home not feel like work?

51 points by easports611 ↗ HN
I program at work most days, for most of the day. I enjoy programming, and when I come home I want to program more (to learn and build things). My issue is, I associate coding with work. Sometimes after coding at home and returning to work I have a "burnout" feeling, similar to that I get after working weekends. In the past, my home computer setup was similar to my work setup (a desktop with 2 monitors). I switched to a laptop at home, which helped. Does anyone else relate to this experience? If so, have you found any ways of solving it?

30 comments

[ 11.9 ms ] story [ 282 ms ] thread
Code to learn or play at home. Explore new languages or frameworks. Select one aspect of a language/framework and dig deep down into the internals.
I had the same feeling of burnout. A 30 minute walk before working fixed this feeling for me. Also, this time inspired me great ideas.
Does this approach consistently ward off burnout? I was considering doing something like not using a computer at all for an entire day each week (probably Saturday).
Unrelated to my comment above, I do include a daily walk as part of my morning ritual. I've always found that this time is great for either purposeful thought (pretend to have a conversation with yourself in your own head about a problem you're trying to solve, and try to play both sides of the inquisitor and the respondent), or active absence of thought. Both have value in different moments, and both are great ways to prepare and progress through your daily challenges.

I have no concrete data or articles to support this notion, but I truly have found I need to give my brain a little bit of breathing room to work through a problem. Walking outside, when I can be actively distracted by my surroundings but not so much that I have to burn a lot of active energy, helps me to process this background data. This is totally a YMMV suggestion, and I want to toss out a huge caveat that this is an anecdote and me spouting personal pseudo science :)

Have you always been a morning person? What does your morning ritual usually entail (other than the walk?)
I would say I'm neither a night person nor a morning person. I'm an "8 hours a night person". So, for me, when I go to sleep ends up being the hard proxy for when I wake up.

The last two weeks I've been trying to wake up with the sunrise along with my wife. She wanted to start waking up earlier, and is a horrible snoozer. So, I wake up (I have a good internal clock so I can tell myself to "wake" at a certain time and usually do), and then I get out of bed and open the blinds. This gets my wife up and gets me moving.

My morning ritual right now entails me waking up, getting my dog on her leash, and walking to Groundwork coffee on Main Street in Santa Monica. It's about a 15 minute walk from my house, depending on how often my dog feels like stopping.

I get an iced coffee (preferred beverage of choice in all weather conditions) and then walk down to the beach, which is a block away from their location. There's a small hill with some benches which overlooks the ocean and, if it's not a smoggy day in LA, a clear view of the Santa Monica mountains and Malibu. I'll sit there for an indefinite period of time and just take in the scenery, and observe the people walking nearby on the beach, or watch the waves on the ocean.

When I was working (I'm currently 'funemployed' as part of some time off between ventures), I would often take morning calls from this spot or respond to any emails that came in from the east coast since I went to sleep. My personal favorite was to coordinate this time with a daily meeting I had with some other peers from other departments. It was a general coordination meeting that didn't require any prep or meaningful energy, but was filled with some of my favorite people on the planet. It was my daily chance to talk to some of my friends spread far and wide.

I then walk home along the beach, either down on the bike path area or up on the nearest road. Sometimes I'll listen to a podcast or a book on tape. Other times I'll walk in silence. I try to be receptive to where my mood takes me.

My therapist back in Boston helped me learn how to sleep more effectively through a series of routines before bed. It turned out, for me, that bookending the start and ends of my days with routines proved valuable and welcome. As with all routines, I do add small variations from time to time to keep things fresh and reduce complacency, but I am fairly consistent.

That sounds like a wonderful way to start your day!

What were you doing before being 'funemployed'? I wish it was easier for me to wake up in the morning sometimes I need to try to get on a better schedule, but I enjoy being up later, yet I somehow still enjoy the morning if I get adequate sleep.

I was a Sr. Director at Tapjoy, a mobile ad-tech company based out of San Francisco. I had been a part of a sister company based in Boston, Viximo, that was acquired by Tapjoy in 2012. We became their Boston engineering office, and I worked with other great engineers on incredible product and infrastructure projects during my tenure there. I moved from Boston a year ago today to Santa Monica, so that my wife could pursue a job in the entertainment industry. I remained at Tapjoy till late November, and I've enjoyed some planned R&R in that time since.

It's my first time off, where I wasn't employed and had minimal obligations, since I was 15. I'm an advisor to vid.me, an awesome company based in LA that is hiring front-end and backend PHP engineers, which has helped to keep me busy and occupied. It's always nice to visit with humans (https://vid.me/lwGS) when your primary sounding boards are a cat and a dog.

I have a comfy lounge chair in my living room. It's very different than sitting in a desk, so it's a good ritual for 'play time' coding. I'll crank the music a bit louder, have tea or whiskey in the evening, and try to work on things that are interesting and don't have a deadline (usually open source work, though not always).

This seems to be enough of a change of pace that it's relaxing. Now, sometimes it just doesn't work. The nights I'm feeling particularly burned out or not in the mood I'll just work out and then watch netflix.

This is great advice, thank you. Also glad to hear the reality is that sometimes, a break is needed.
The two main things that have kept me motivated through large side projects, even when burnout has set in:

- Building something that I really want. For example, the project I've been working on for the past few months is something that's been brewing in my head for several years.

- Sharing the fruits of my labor. At the end of my last large project, I got the satisfaction of knowing the product would get regular public use. In my current project, I've been open sourcing components as I've progressed, so even though it will be months before the project's complete, I have had some milestones of satisfaction. If the end result is something you can sell or profit from, that is a huge motivator as well, although I think my first point about building something you're really passionate about is more important.

Perhaps coding at home isn't the most effective way for you to grow and learn something new, at least not at this moment.

I've found that I bounce between coding at home, learning a new hobby, exercising more, building out a non technical skill, or just taking a period of R&R where I'm not actively trying to really accomplish anything in my off hours. The best engineers I've come across are this incredible balance of coding skills and perspective, and that perspective can be acquired in so many different ways.

You state that your ultimate goal is to learn and build things- Perhaps you could take the next four weeks and pick up crocheting or knitting. Or, buy a hard lego set and take a week and build out something in the physical space. Pay attention to what you're doing as you complete your tasks, and the ways in which your brain is coming up with optimization to make you move more quickly and efficiently. Now, think about how you could reapply those learnings in your development process or software design. Are there metaphors? Can you draw connections?

There are software lessons to be learned all around us. Don't fight the burnout. Pivot.

I actually started tackling this myself a few days ago. For a while, my off hours coding was an attempt to learn things I needed to know at work. But that got pretty old. For the last few days, I've been coding things that are interesting to me, and are intentionally a bit ridiculous.

For example, if there's no client library for interacting with a web service at work, I had previously been mentally tasking myself with writing the entire library at a high level of quality, because I felt like writing a library for that hit 1 of N endpoints was aiming too low. Now, instead of burdening myself with writing that entire library, I just write something that just contains the bits I wanna use.

For example, it would appear there's no Rust library on Cargo for Artifactory... https://crates.io/search?q=artifactory

The amount of work it'd take to learn their API from scratch, including all of the options and edge cases, is a notable amount of effort. Especially if it's fast, well tested, handles multiple release versions, etc. I might tell myself that I'm going to write the entire Artifactory REST client, start out all gung ho, only to be defeated by various flavors of things that lead to burnout.

Now let's say I want to learn a bit about how the Artifactory API works, and I'm banging out a proof of concept in Rust. Instead of calling it "artifactory-rust", maybe I decided to narrow the use case. My library is going is going to be called "banana-flinger", and it's going to upload 50GB of banana pictures. There are all sort so of lessons one can learn from attempting to upload 50GB of banana pictures to an instance of Artifactory running on a VM that only has 20 GB of disk space. Can I de-duplicate data at the file system level to increase the effective storage? How does the API work when it comes to rate limiting, max upload size, various encoding protocols, etc? How hard is it to move 20GB of data from one VM to a bigger one vs. using an elastic block store. Yada yada. While 50GB of banana pictures is completely stupid to anyone who isn't me, it's an excuse to play with things I'm interested in that are all related to 50GB of bananas. If I ever decide to get serious, I can apply lessons learned from Big Banana, and apply them to real Artifactory client, or to something completely different.

One silly example is my recent adventure on learning the basics of writing a Vagrant plugin (https://www.vagrantup.com/docs/plugins/). Vagrant is mostly written in Ruby, and Vagrant plugins are essentially Ruby gems, but they use a slightly different convention. I occasionally want a custom Vagrant plugin at work, and explored writing a plugin on my own time. To make it not about work, I decided that I'd write a walkthrough on how to use a Vagrant plugin in which one could declare one's self a potato by running the command `vagrant declare-self-potato`. I learned 100% of what I wanted to learn, and it felt 0% like work. Should you wish to learn how to use Vagrant to become either a naughty or proper potato, you may do so here:

https://github.com/amorphid/my_vagrant_plugin

For now, you might consider learning to embrace the a-peel of bananas. If you ever get tired of dealing with yet another banana, split.

I had the same issue and here's what worked for me:

Stop trying to force yourself to code at home. Look at it like music creation, spend your time trying to find inspiration, problems to solve.

Don't follow major development rules like you do at work which are designed for coordination and management amongst groups.

Be okay with crappy incomplete code.

Feel free to abandon it and return to it later...months later.

As PG says...don't code. Hack. It's way more fun.

This is me. I specifically make the decision to get something working, but not worry about how, so much (essentially opposite to my attitude in a professional context). If it's a project that I stick with for a long time, it usually ends up rewritten a half-dozen times anyhow. Still, the code's usually not in a state that I'd want to brag about. Big parts that I don't care about at the moment will be stubbed out, to be filled in when I do care about them later.

If it feels like work, that's because it's work (in some way or another). If you don't want it to feel like work, find something to do that doesn't feel that way.

I am reading a book about programming language design and I often feel like backburning it and hacking out a compiler and see what happens. I can already write parser so I just need to so something with the tree ... innit. :-)
I code at home when I feel like it, writing things that I want to write, in the language that I want to write them in. They're universally things that I can't imagine ever being paid to write, but they all scratch some itch that I have, and they tend to be expressions of my obsession with one topic or another.

When I don't feel like it (i.e. when I don't feel the obsession), I do something else with my time. Work usually feels like something I have to do, and occasionally something that I find interesting. Hobby coding is always enjoyable. I'd burn myself out if I tried to force myself to do it when I didn't want to. It's not like I don't have a dozen other things vying for my attention, anyhow.

The following works for me and might be useful:

- Use a different IDE/Editor (spacemacs is cool for home use).

- Use a different language (go is super easy to learn and use).

- Use private repositories as this makes writing throwaway code much easier. Bitbucket has them or you can install something like Gogs or Gitlab.

The most important thing is that is it fun.

Try to do nothing.

You wouldn't be able to if you tried. Your subconscious would start pulling you to things you really like.

Program fun stuff! Arduino based things, something with a raspberry or visual stuff with processing.org.

I have a simmilar problem though with a sideproject where the work is dull web-dev stuff but the product would be so nice to have. Feels so much like work though to build it...

Another thing I do, also for "real work": Going to a café (if that works for you at all). It really helps me to start projects: I leave the house with the plan to start and than sit there, dedicated to it and relaxed with a nice drink.

Can you do your personal programming at work? Just stay an extra hour or two. That might not align with management/company culture, but maybe you can make an effort to change that.

It's expensive, but electronic music production can be a lot of programming, and offers a whole new set of challenges to solve. It's a great activity that is analogous to computer programming depending on what tools you use. Obviously much more refreshing to come home to after work. If you're not trying to just improve your coding ability and knowledge, I think you could really enjoy this.

Couldn't this run the risk of the company owning the IP? Even if it was after work hours and on your personal equipment, you're still using company resources (office space) for the creation of your IP.
I would ask why you're coding at home. Is it because you feel like you have to or like you should? Why?
Maybe you haven't found the right motivation to be learning these new things? Does learning the new things tie into your work in any way? Coding in my spare time is more about fun and learning to advance the direction of my Career than being more productive at my current job.
(comment deleted)
Take a vacation from coding at home then. Get some games ofd of Steam.

Watch some youtube videos about interesting programs. You need to find a project that you really are interested in and energy and time to do it. Try on the weekend playing with 3d graphics or Arduino or a new programming language.

Don't try to do it for more than you really feel like. Could be only 20 or 30 minutes sometimes.

Coding is like a brain workout so yes you will get tired. Try on the weekends or only after a light work day.

If you have an android try to build AOSP for it. It's all related to coding but on a different perspective and it might be highly motivating to have your own brew of android for your device.
Switching to a laptop helped me too but what really helped was being able to sit upright w/ pillows on my L-shaped sofa so I could put my feet up and have back support. Not as efficient as sitting at a desk with multiple monitors but it's more comfortable and motivates me to code at home b/c I'm in a position that's just different from work.
Something I like doing to get myself in a different mindset is that I tell myself I am not allowed to work on "good" ideas at home. I will literally only work on a personal project if it sounds "dumb" (eg: a Mobile Virtual Pet Rock).

This lets me drop all of the development best practices that I normally use "at work" (TDD, Agile, CI, portability etc), and enter a mind-state of just messing around with some code. Sometimes a good idea comes out of it too.