Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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?

share|improve this question

closed as not constructive by gnat, Jim G., World Engineer, Yannis Rizos Aug 27 '12 at 20:56

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

20 Answers 20

up vote 53 down vote accepted

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 dont fret it. Its supposed to be relaxing, not stressful.

share|improve this answer
1  
"a text editor for playing in ... Clojure" Emacs and Slime! That's hardly a bike with training wheels. –  spacemanaki Nov 4 '10 at 20:04

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.

share|improve this answer

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.

share|improve this answer
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 Aug 22 '12 at 6:34
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 Aug 22 '12 at 17:32

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.

share|improve this answer

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

share|improve this answer

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.

share|improve this answer
  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.
share|improve this answer

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.

share|improve this answer

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?

share|improve this answer

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

share|improve this answer

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!

share|improve this answer

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.

share|improve this answer

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.

share|improve this answer

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.

share|improve this answer

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.

share|improve this answer

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.

share|improve this answer
  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.
share|improve this answer
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. –  LennyProgrammers Nov 4 '10 at 7:20

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.

share|improve this answer
6  
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. –  JBRWilkinson Nov 4 '10 at 10:07

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

share|improve this answer

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.

share|improve this answer

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