
Ask HN: Why/how do you choose to work on side projects? - _netlurker
I guess this is just my poor perspective on the whole thing, but I keep seeing people working on not-your-typical-stuff kind of projects such as compilers, computer graphics, low-level stuff in general, and I keep wandering whether those people do this as part of their line of work or just have enough time after work to learn about those fascinating things on their own, and what the reason is behind it.<p>This is also sort of dilemma for me because I can&#x27;t find the best strategy as to how to approach self-learning. On one hand, I want to improve in my job, so I can do it better, but on the other hand I want to have a hobby or work on other skills to move on to another job. What is your reason for working on side projects and how do you select what to improve on next?
======
mindcrime
This is oversimplifying a little bit, but I'd say I use a sort of informal
weighting scheme like:

motivation_for_proj = w_1⋅X + w_2⋅Y + w_3⋅Z

where

X := The extent to which I find the project interesting in and of itself

Y := The potential to profit directly from building the project

Z := The extent to which I will learn useful/interesting things from building
the project

The thing is, I can't tell you the exact values of weights w_1, w_2 and w_3,
because I don't actually know myself. It's really just sort of an informal,
gut-feeling thing, but I can say that these three factors are all involved.
And those aren't necessarily the only factors. And the weights aren't
necessarily constant.

Also, to borrow from @Findeton's answer... I would also say that "the extent
to which I need $THING to exist" is another factor. So it may be more like:

motivation_for_proj = w_1⋅X + w_2⋅Y + w_3⋅Z + w_4⋅Q

where Q := "the extent to which I need $THING to exist"

But again, I don't actually sit down and do any math on this stuff for the
most part. The only time I do would be if I'm working on something that I
think has real commercial potential and I might sit down, do some basic market
research, try to come up with a TAM number, put together some strawman pricing
numbers, etc., and try to figure out just how much potential the thing has.

------
drakonka
I have a few reasons:

1) It's what I'm used to. I don't remember a time since I got my first
computer that I didn't have some hobby project on the side. If I didn't have a
side project I don't know what I'd do with myself...I mean I have other
hobbies, too, but my side project _is_ my main hobby.

2) To learn. I'm self-taught and the aforementioned always-having-a-side-
project point is how I learned and keep learning. I've gotten (I believe) very
good at retaining information I gain through tinkering and working on my
projects, and I've become proficient at picking challenges that are the
perfect difficulty for me to absorb more new knowledge in areas that are
relevant both to my personal interests and (sometimes indirectly) my job.
Sometimes if I am not understanding a certain concept or I read something I
want to grasp better, making a small project out of it or incorporating it
into an existing project and trying to actually implement something helps me
digest and internalise the concept.

3) It's fun. I originally started learning to code in order to be able to
bring the ideas in my head to life. Those ideas haven't slowed down, so
neither has my desire to bring them to life through my side projects. It is
fun to work on them and I feel a sense of accomplishment in being able to turn
what's in my mind into something real.

4) It helps me de-stress. My day job can be stressful and demanding, with long
hours around deliveries and cert deadlines. Even though my side projects and
my day job both involve programming, working on my own thing helps me de-
stress after a hard day of work. Having my own project on the side helps me
avoid feeling like my entire life revolves around my job. I have something
fulfilling that is just entirely mine.

This could be a longer list as there are other reasons, but I think the four I
outlined above are the main reason I choose to work on side projects. Habit,
learning, fun, and stress management.

------
karmakaze
I've always worked on side projects, even before being exposed computers at
school. So for me, it's been and still is a hobby, which fortunately I can
make a living doing.

Given that, I choose pretty much the same way. I'm always looking for new
languages, frameworks, apps and try to come up with some app ideas myself. The
best ones are the small ones you wish existed and would/do use yourself.

The only general pattern is novelty. I typically use things that I don't get
to use at work. I learn different things that may not immediately improve my
work but eventually the cross-training as much higher value bringing in wider
views that might otherwise be missed in discussions.

One time, I tried to make an app idea using a new language, back-end
framework, and front-end framework. I realized that I might not even make much
of a dent, so switched to using what I use at work (Spring Boot I think it
was) to save time so I could get to the visible parts of the app. That was a
first-hand internalization of the 'faster beats better' startup mentality.

The opposite also happens. I ran a Chef server and recipes to create a master-
master MySQL DB to host a Ghost blog on a third machine. I haven't blogged
much afterward but obviously I enjoyed the process and learned a lot.

Another time, I set out to make an app and get it in the app store. I chose
Android since I already know Java and had watched an online course that
described the lifecycles and layouts/views. It was surprisingly straight
forward googling and pasting.

As you can tell, I do a lot of back-end/devops, so I did take the time to try
out Vue just to have a modern SPA default. I picked it because it looked
simpler to me than React. I'm currently looking for something in between Java
and Go, imagine Elixir with static types, fast compiles, and small/fast. I'm
hoping Crystal might be it but can't decide between Lucky or Amber frameworks
to try out.

Lastly, side projects keep me sane at work. I can try anything on a whim
without the (valid) constraints of choices at work. It's interesting by
definition so balances out periods of powering through work I already know but
needs to get done.

One last tip if you don't feel motivated. Rather than doing the thing, just
get started setting up an environment to do the thing. e.g. install software,
pick a name, make a repo. (I usually lose a bit of time picking, registering,
later abandoning a domain name, but it's fun = worth it). More often than not,
it seems so ready to use that it's irresistible.

------
Findeton
I try to work on something I "need" to exist.

------
p0d
What fascinates you? Start there.

