45

I started seriously programming as a hobbiest, student and then intern about 4 years ago and I've always done small projects on the side as a learning exercise. Schools over now though, and I spend my days at work as a software developer. I would still love to do projects on the side to learn about areas in computer science that I'm not exposed to at work, but I've noticed that after 8 hours of starring at an IDE it's far to tempting to veg out. Any time I do get up the gumption to work on something for a few hours lately it's gotten left by the wayside.

Anyone have any advice for sticking with side projects when you spend most of your day coding?

4
  • 1
    stackoverflow.com/questions/1014858/…
    – BenV
    Commented Nov 4, 2010 at 3:02
  • 1
    Considered having non-programming hobbies?
    – user1249
    Commented Dec 3, 2010 at 12:47
  • Isn't the more common problem how to stay motivated for work projects?
    – dan04
    Commented Feb 5, 2011 at 1:10
  • Do you play video games? You can always get handy with a game that has a set active community. In that way you can make some changes and then enjoy the changes with others in full visualization. Try SpringRTS as an example.
    – Pithikos
    Commented Jun 23, 2015 at 18:07

20 Answers 20

59

One tip - make sure your hobby project has nothing to do whatsoever with your day job. If you use C++ at work, use something else in your hobby projects. This will help you avoid some of the burnout because you're at least switching to a different IDE and/or skill set.

But, a hobby is a hobby...so don't fret it. It's supposed to be relaxing, not stressful.

2
  • +1...but, the only problem with this is I find myself getting frustrated when I have a fully featured IDE for real work and a text editor for playing in Io, Clojure, whatever. It's like riding a bike with training wheels - sorta fun, but I want to go fast! Commented Nov 4, 2010 at 14:14
  • 1
    "a text editor for playing in ... Clojure" Emacs and Slime! That's hardly a bike with training wheels. Commented Nov 4, 2010 at 20:04
31

The only way to stay motivated is to have goals. If you have no goal you will get nowhere. Personally I find merely academic projects not very motivating but if I have a goal of creating a product, ie shareware, it is much easier to keep the motivation up.

2
  • 7
    Also consider a prioritised list of goals, including some 'release' schedule, even if thats just 'use it regularly'. It feels good to see the progress over time. Commented Nov 4, 2010 at 10:07
  • I cannot imagine having a schedule for a hobby project. That would turn hobby into something that has to be done, not something I want to do.
    – dzieciou
    Commented Dec 3, 2020 at 21:11
22
  1. Pick a project that you're genuinely interested in.
  2. Spend a little time up front defining your goals for the project.
  3. Break the project up into small phases so that it doesn't take hours and hours of work to feel a sense of accomplishment.
1
  • 1
    I've realized that the less sparetime is have, it's more important to focus on stuff that is immediately useful to me. It's a pity, but that's how it is. Commented Nov 4, 2010 at 7:20
14

The best advice I can give is don't feel guilty when your hobby projects don't receive attention for a considerable amount of time. It is supposed to be fun, and working on something when you don't feel like working on it is hardly entertaining. I have a few such projects and a couple of them have quite a few users. People are used to me making a new release once a year and being receptive to bug reports / patches.

I actually get more of a kick out of seeing other people work on my code than I do working on it myself, in most cases.

The other thing I recommend is use ample discretion when coming back to something you have not seen in a while, just as you would in your day job. The urge to re-build, re-design, re-factor and such can get overwhelming. That is fine, as long as you understand that you'll keep ending up with basically the same thing each time. I find it much more rewarding to work on new features, especially as a hobby project.

Still, anything is much more fun and motivating when you have some partners to play with. Get your project out on sites like freshmeat, surely someone else will think what you came up with is useful and help you to improve it. That's where you really start having some fun :)

8

Yep. I burn out on coding too. I love coding and making software, but after a long day (or week, or year) of programming at work ... firing up the ol' IDE at home gets harder and harder.

Lately there have been only two types of side-project that I can stay active with:

1) Contributions to a few open source projects where there is lots of interaction with other developers and users. It can be hard to find a project that you're interested in, that has developers that you get along with, that needs developers, and that you're skilled enough to contribute to ... but once you've found a comfortable fit, it can be rewarding.

2) Getting permission to work on a few pet projects at work. For many people this is a non-starter, but if you can swing an arrangement (even one-time only, or occassional), it can be satisfying. It's a lot easier to get coding when the alternative is the usual grindstone chores at work.

Example on #2: for many years my company used a version control system that, while decent in most regards, was absolutely horrible about showing you your unversioned subfolders on disk. Everyone had their own little ways of dealing with this nuissance. I got fed up with it, and asked for time to write a little utility to make dealing with this problem much less painful. It wasn't the most entertaining code I'd ever written (although there were a few challenging/interesting bits), but the real reward was seeing my coworkers using and enjoying the software, and being thanked for it.

8

The only hobby projects I've ever 'completed' are things that I actually need, or make my life easier. The downside is that once it's 'good enough', you lose the incentive to keep improving it (or cleaning up the code, etc.)

1
  • I have the same feeling too for 'completed' side projects. I'm still using side projects that I created more than a year ago and haven't updated the code base in months. If it's not broke, don't fix it. Commented Nov 4, 2010 at 12:51
6

For me, people make the difference. I have a ridiculous amount of side projects begging for my attention. The ones that get my "spare" time (an extremely finite resource) are the ones in which I work with people who teach me new things, spark new ideas, or inspire me in some way. I find it hard to stay motivated on the others.

4

The only way I ever stay motivated on anything is by having a genuine interest in it (And yes, this can be a problem in commercial work where you're forced to work on stuff which you don't find internally satisfying, but I digress...).

I used to do contrived hobby projects for the sake of learning a new language or framework. Often straight out of random, dry examples from books or websites. This never worked out. I'd always lose motivation and stop after a few sessions.

So the trick for me is to come up with some idea that would actually be useful (either to me or someone I know), and then set myself the task of implementing it in that language/platform. When it's a real world exercise of sorts, and it's a genuinely useful product, I tend to stay much more motivated. When it's a contrived learning project, it's easy to lose the plot.

3

Given that you already have an idea for your hobby project, I would suggest

  1. Write good documentations
  2. Schedule your hobby project in some sense

First of all, it's a hobby project. You may only spend 1-2 hours a day at most, or even only 1-2 hours a week, on your hobby project. It's difficult to remember all the details in such working style, and good documentations help you quickly jump start from the previous pause. A good documentation should keep track on what to be done, what has been done, and why things are done in such way. The documentation can be more important than the actual programming phase of the hobby project.

Also, scheduling some time for the project in advance makes yourself mentally prepared for it. By doing so you're telling yourself it's not the night for gaming/movie/hang-out/dating/whatever, but for your hobby project. It will be easier for you to make up your mind and sit in front of the computer even after a tiresome working day.

If you haven't decided what to do for the hobby project, I will add the followings:

  1. Pick a project that has relatively low entry barrier for you.
  2. Pick a project that really interests you, or
  3. Pick a project that may assist your daily work.

Having some challenges is good, but you may lose your interest and patience quickly if the challenges are just too big. Unless you have some strong incentives (e.g., having strong desire to start a new career path), selecting a project that you already roughly know how to complete may help keep your momentum.

Strong incentives may come from other aspects. An interesting project and a project that facilitates your daily work are some examples. There are lots of fun stuff other than your hobby project, and you need to find a good reason for yourself to continuously work on the hobby project. In regards to the project that facilitates the daily work, it doesn't have to be directly related. A program to automate the editing of your presentation slides; a program to visualize the data. As long as it provides good incentives, it should be a good project that makes you happy to work on.

2
  • Goodness, this sounds like work! :)
    – Benjol
    Commented Nov 4, 2010 at 9:18
  • Indeed. But the major difference between hobby project and work is that work has a very good incentive by default -- your lovely paycheck
    – YYC
    Commented Nov 4, 2010 at 13:54
2

I don't always stay motivated, but I find that when I tell other folks what I'm working on, I frequently end up spending so much energy discussing (aka arguing why I'm doing it X-way and not Y-way like the arguer thinks it should be done) that I lose interest in working on the project. So my "secret" is to not talk about stuff until after I've done enough to call it done.

My goals are frequently of the scale of "learn how to use M" or "how can you do N?" so the done-ness of the goal is usually distinct from the done-ness of the project.

My current employer takes the position (in the employment agreement) that I can't work on open source stuff, nor am I supposed to work on the side without written permission from above. Consequently, I don't work towards complete projects.

3
  • "My current employer takes the position (in the employment agreement) that I can't work on open source stuff" which country do you live in? This point is plain evil...
    – Calmarius
    Commented Apr 15, 2013 at 15:28
  • @Calmarius, I work in the US. The employer, which I had quit at the end of 2010, recruited me back last year. They are concerned that open source code could "infect" the software that we sell. Rather than figure out which licenses are business friendly, versus which ones are copyleft is too much of an administrative burden. Therefore it is all forbidden. One personal experience that you may have read is: perlmonks.org/… .
    – Tangurena
    Commented Apr 15, 2013 at 22:44
  • Now I see. I release my stuff using the Calmarius or other nicknames under CC-BY-like license (do whatever you want, but mention me). Unless my company eavesdrop on me they cannot attribute that code to me... (I do this only at home.) Probably you can do it this way...
    – Calmarius
    Commented Apr 18, 2013 at 11:53
2

Nice question, particularly since I'm planning on starting a hobby project myself (not the first hobby project, but projects in the past have tended to fall flat on their face when I get bored of them, which is dissatisfying to say the least).

My tips, though:

  1. Develop something you care about. Pretty obvious really, and been mentioned a few times, but does really deserve to be said again. If you're developing just for the sake of it, you'll eventually get bored.

  2. Come up with a small feature set, develop for that and then build on it. If you're writing a word processor, don't try to include every feature in Word. If you're working on an image manipulation package, don't try to beat PhotoShop. If you're cooking up an IDE or some dev tools, don't... well, you get the idea. Once you've got that simple version done, that's your first milestone - an accomplishment, something you can feel proud of.

  3. Pick something you can develop, test, etc. Don't go for some server app that requires you to spend £3000 on testing hardware (or lots of money on hosting).

  4. Write it in a language you want to learn, and one that has features that will help you, but something that will provide an interesting (!important word!) challenge.

  5. Pick a gap in the market, so to speak, and look at what your prospective competition are doing. What aren't they doing? Could you do it better, maybe learn from their mistakes?

1
  • BTW, one thing that can motivate you is demand for updates - several years ago I wrote some simple XML processing tasks for NAnt, and I am still getting feedback for it. There's clearly demand for NAnt improvements, but it's not been updated since the Stone Age. I swear, someone's going to have to fork it...
    – JohnL
    Commented Nov 4, 2010 at 13:26
0

Things that keep me motivated:

  1. Pick a hobby project that you are really really interested in, and that you have no chance of ever doing anything like that at work. Start a game, a compiler, or anything else interests you. Don't pick something only because you think you should do this to help your career. Pick something you just want to try, and may have no value to your career.

  2. Try to get some other people involved too at an early stage. This can be starting an open source project and inviting other programmers. But this can be as simple as telling your friends to try out the new piece of software you are writing. As soon as you start getting feedback, you will feel the need to keep making it better.

0

To stay motivated of something that doesn't bring you money you must have at least one of the element below:

  • you are proud of what you do (others can see it)
  • you are deeply interested of passionated by it. The simple fact that you achieve things give you high satisfaction
  • doing it allows you interesting social interactions

What I've put above is the three reasons why people begin to work as a volounteer in an organisation. Those are the real reasons, not the reason the person think.

The most effective but the most difficult to get is the first one.

If you are doing a software, release it!

0

It'll be good to have a group for a project... find some fellow programmers with same interest as yours... It feels tempting when your fella has done some advancement in that project and you haven't. This is surely motivating.

0
  1. Make sure no-one implemented what you're trying to do at home.
  2. Make sure you're interested in what would be the result of your work at home.
  3. Make sure other people than you think they would be interested to see the result of your work at home.

  1. is to make your initial motivation boost enough to make you start the project.
  2. is to make you plan and organize in a way that will make you avoid stoping the project each time you're blocked.
  3. is to give your regular motivation boost on the long run.
0

I agree with a lot of the other comments, like picking topics you love, and working with technologies not used at work.

Other than those, the biggest things that keeps me going are leaving a broken test when I leave, so I have an easy starting point the next time, and looking at some aspect of the project everyday, even if only for a few seconds, just so the project stays fresh in my mind.

0

I don't. If I'm not motivated to code on a particular day or week or month, I go and do something I am motivated to do.

It's your free time, you shouldn't be forcing yourself to do things you don't want to do - that's what work is for...

0

That happens to me as well, all the time. I'd say if you lose interest in something, just let it go and start something else. If you really, really like an idea or a project you wouldn't lose interest. If you lose interest, you didn't really like it in the first place. So in the spare time, do what you feel like doing. Keep trying new projects and ideas till you find one where you don't need any artificial motivation. Even if takes years for that idea to come by, keep trying out whatever comes in your mind.

-1

Come to your workplace at 8 in the morning, only to spend 2 hours working on your project in the downstairs cafeteria (then go to work). :) Fresh brain will keep your productivity stable, and flow of motivation undepleted.

-1

Try to earn money with it. Even if you don't make much, hopefully it'll be enough to subsidize the cost of your hobby.

4
  • 1
    While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes.
    – Jalayn
    Commented Aug 22, 2012 at 6:34
  • @Jalayn really? This is almost 2 years old and there are many, many better answers above it. Commented Aug 22, 2012 at 17:16
  • 1
    Hey Stephen, sorry to bother you. this message is printed automatically when I "review" (check out the new "beta" review system") low quality (few words) answers. Nothing personal. I just choose to indicate this answer should either be edited or removed. I can remove it if you want.
    – Jalayn
    Commented Aug 22, 2012 at 17:32
  • @Jalayn No, it's cool. I expanded it as I realized it was a poor answer anyway. Commented Aug 22, 2012 at 17:42

Not the answer you're looking for? Browse other questions tagged or ask your own question.