
Ask HN: How to make coding at home not feel like work? - easports611
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 &quot;burnout&quot; 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?
======
kayman
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.

~~~
khedoros1
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.

------
wjossey
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.

~~~
easports611
Very useful and well said, thank you.

------
runT1ME
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.

~~~
easports611
This is great advice, thank you. Also glad to hear the reality is that
sometimes, a break is needed.

------
khedoros1
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.

------
richerlariviere
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.

~~~
easports611
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).

~~~
wjossey
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 :)

~~~
kzisme
Have you always been a morning person? What does your morning ritual usually
entail (other than the walk?)

~~~
wjossey
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.

~~~
kzisme
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.

~~~
wjossey
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](https://vid.me/lwGS)) when your primary sounding boards
are a cat and a dog.

------
danielhooper
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.

~~~
gautamnarula
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.

------
ilaksh
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.

------
binarynate
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.

------
antoniuschan99
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.

------
hackflip
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.

------
anotheryou
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.

------
hbcondo714
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.

------
papaf
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.

------
calferreira
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.

------
rgacote
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.

------
read
Try to do nothing.

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

------
cauterized
I would ask why you're coding at home. Is it because you feel like you have to
or like you should? Why?

------
amorphid
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](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/](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](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.

