62

I've got about a dozen programming projects bouncing about my head, and I'd love to contribute to some open source projects, the problem I have is that having spent the entire day staring at Visual Studio and or Eclipse (Sometimes both at the same time...) the last thing I feel like doing when I go home is program.

How do you build up the motivation/time to work on your own projects after work?

I'm not saying that I don't enjoy programming, it's just that I enjoy other things to and it can be hard to even do something you enjoy if you've spent all day already doing it.

I think that if I worked at a chocolate factory the last thing I'd want to see when I got home was a Wonka bar....

Related:

How do you keep a balance between working, training, health and family?

71

Time is never found. It must be carved out, stolen, borrowed, created and wrested away from its captors. -me

To go beyond the soundbite answer, every time I ask myself this question, I find that a stark chronicling of my days for a week or so makes it REALLY clear where that time can be taken from. The same has been true of every person who has even been willing to go through the exercise with me.

TV, sports, movies, sleeping in on weekends, sleeping in on weekdays, or even less "obvious" things like cleaning your own house and mowing your own lawn instead of paying someone $12/hr to do it for you may currently be using time that you've deemed more important than the personal project.

I've asked those dynamos who prompt such a question for a breakdown of their day rather than the simpler question of "how they find time". Inevitably, I'm humbled by the sacrifices they've been willing to make to carve out an hour or 1/2 hour per day.

In some cases, I'll even go so far as to say that the sacrifices have been detrimental: no exercise (guilty), fewer friends and social interactions, etc.

Personally, my greatest productivity, either in learning new stuff or working on my own projects has come from the fact that I never watch TV or movies without a laptop in front of me. I pretty much just listen to TV and spend that time reading and writing code.

22

I don't. I suffer from the same problem that you do: I have a wife and three kids. On top of that I am working on my Masters degree. I have tried several times to start up some side projects and every time I do something comes up (I have to coach my sons soccer team or something else).

Here is what I am trying lately and it seems to be working (although it is killing me a bit). You need to set aside time after everybody else has gone to sleep. I put my kids to bed by 8:30 - 9:00. After they are in bed is my time. Now, this conflicts a bit with Wife 2.0, but if you regulate it to three nights a week, the other 4 belonging to your wife, then you should be able to get some work done AND spend some time with the family. You really have to stick to it, almost like a routine.

So far I have made some good headway in a project that I am working on and everybody seems to be happy. The only drawback: I'm tired...

16

Turn off the TV (and Hulu, Youtube...). The average American watches about 150 hours of television each month. Even if you watch just half of that, it's still a large chunk of time during which you could be productive instead.

You can also try waking up a bit earlier each day until you have a decent amount of time in the morning.

12 accepted

Agreed.. so you take a break to recharge. You can't do side projects every day after a day job unless you're extremely motivated.

Personally I make a list of things (like when I feel that I'm just slacking off or on a weekend) I'd like to do and prioritize. You don't find the time.. you have a limited amount and you make time for things that matter the most to you.

11

OK I'm going to be a bit controversial here.

I think that, having decided that you're passionate about a project that you need to force yourself to start. How many personal projects hit the buffers and never get anywhere? Most of them. Of those that do get started, how many never finish? Almost all of them.

Ultimately it's human nature to be lazy, to not want to do even more work in your spare time, etc. but what it comes down to is getting the momentum going. Once you have the ball rolling you'll find you have far more time and energy for it than you ever realised.

I'm not saying you should be unhealthy with it, or force yourself to do something you don't wanna do, rather you have to force yourself to get started and let momentum take care of the rest. Once you're doing it, you should be enjoying it. It's like the spark plugs in an engine. Occasionally you'll need to force yourself for short bursts, there are always boring and vexing aspects of any software project, but once you're done you won't regret it.

I think treating these projects like they're equivalent to watching TV or other leisure activities is the problem. You should consider them equivalent to training for a marathon - loads of work, sometimes a death march but the end achievement is so worthwhile you would happily do it all again 100 fold.

When it comes to the end of the project, shipping is also tough as hell. I wrote a blog post about shipping a personal project here, quoting Michael Abrash, a legendary coder who worked on Doom and Quake, who achieved quite stupendous results especially in the field of optimisation. Allow me to quite Michael:-

My friend David Stafford, co-founder of the game company Cinematronics, says that shipping software is an unnatural act, and he?s right. Most of the fun stuff in a software project happens early on, when anything?s possible and there?s a ton of new code to write. By the end of a project, the design is carved in stone, and most of the work involves fixing bugs, or trying to figure out how to shoehorn in yet another feature that was never planned for in the original design. All that is a lot less fun than starting a project, and often very hard work?but it has to be done before the project can ship. As a former manager of mine liked to say, ?After you finish the first 90% of a project, you have to finish the other 90%.? It?s that second 90% that?s the key to success.

10

You have to want to do it in the first place to make time for it. If you find yourself saying "I just don't have time for that," it's possible that you don't really value it in the first place (i.e. other things have a higher priority).

10

break it into bite-size pieces, and eat them slowly

see also Getting Things Done

9

I use mass transit, and can usually get about 40 minutes of time to work per day by letting someone else drive. It can be difficult because I'm working offline, but that's one way that I've been able to work on my own development.

8

a) find a job where you can work on pet projects in the office while still getting your work done

b) get a divorce

c) lose the custody battle

d) profit

e) quit job b/c your pet project just got funded $30m

f) remarry your wife, they will like the new house

6

I try to put in an hour or so every couple of nights into the pet projects. The main problem for me is how to organize the project in such a way that you can actually get something done within that time.

If you can split up the project into small enough chunks, you can get a clear part to do, or part of a chunk done every time you sit down to work on it. This way you have a clear idea of what it is you want to accomplish today. If you get it done, enjoy the rest of the evening with your family. This ensures that a another day you may put in a bit more time than you would normally do. Don't overdo taking that extra time though!

Every now and then, instead of doing the next chunk, take the time to figure out what the next steps are going to be. Then you have a fresh pile of chunks that you can hack away at.

6

Don't talk yourself out of contributing due to how little time you have available. If you have 10 minutes, sit down for 10 minutes and actively engage.

Yeah, it's frustrating to only have 10 minutes, but you've got 10 minutes, so apply yourself.

If you genuinely "don't have the time", that 10 minutes won't grow. If you do have the time, there's nothing like sitting down and doing to quickly discover it.

6

With whatever your chosen technology is, push your skill level as far as you can. That way you'll be able to get more done in less time, i.e., you'll be creating time, and violating laws of physics. You will thereby tear a hole in the space-time continuum and destroy the universe. Way to go, smart guy.

Kidding, but the skill thing is a serious suggestion. Get to know your language, frameworks, libraries, and tools.

You may or may not like Ruby on Rails, but anyone would have to agree that it's a pretty big, complex piece of software. According to its creator, it was originally developed as a side project within a ten-hour per week time allocation.

Update:

Sorry, correction: it was Basecamp, a Web application written by the people who developed Ruby on Rails that was done in ten hours per week. The example still supports the point that it's possible to build a big, complicated thing in your spare time.

5

When you are passionate about what you are doing, you find time.

Simply that.

5

If you really want to work on the project my advice would be to try find a time in the week you should be able to reserve for the program. The best should be a weekday evening because weekends can't be planed reliable. So maybe you say Wednesday from 8 to 11 I work on my project. You can make this clear to your family and yourself.
So while working on the project everybody knows this is his project Wednesday don't bother him.
And while not working on your project you don't have to feel guilty to relax or spend time with friends/family in front of the TV instead of working on your project.

This sounds very simple but it is hard to get their and have the discipline to keep the schedule. But after some weeks working this way you should get used to it.

5

1-2 hours after work == 5-10 hours per week (plus additional weekend time). That is plenty of time for a side project if you are serious about it.

4

I moved my work schedule around at the day job:

M - 9 hr
T - 9 hr
W - 9 hr
Th- 9 hr
F - 4 hr

That gives me all afternoon on Friday to get things done. Or take a nap :)

3

I find most of my problem is infact getting the motivation to start. Sometimes I'll leave work with a great idea to work on when I get home, then I get in, sit down, and I loose all motivation to do it. I find if I can convince myself to get up and start, then I start enjoying it, and at that point I don't want to stop, but its so easy to get home, cook dinner and then not move again, and then it feels like another wasted night, where I could have created something amazing!

3

For me at least, it's no different than finding time for a model train layout or a book or studying a new technology for an upcoming job. If there isn't time, there isn't time -- but if there is, it has to be something I'm legitimately interested in and have a reason to participate in beyond "I'm contributing to Open Source". That's like reading a book "Because you want to read," even though there's no interest in the subject matter itself.

3

As much as I love John Stewart and pwning n00bs, TV and video games are tremendous time sinks. I remember when I still played Warcraft and I would check my /played and cry a little bit. Those things are great fun in moderation, and they can both be useful tools to unwind, but you absolutely don't need to watch TV every night.

If you're looking for an easy win for free time to code, take the batteries out of your TV remote control and put a sticky note on it that says "hey, you seem bored, you should work on your pet project now."

3

If something is worth it you will make time for it. Whatever you are currently spending your time on is more important to you than the side project you want to do.

So it comes down to discipline - you must make time for this project if you want to do it, this means that you must sacrifice something else.

2

I think joining a group helps loads, i mean a group of people you meet monthly or somethin

it also helps if you say I ll do this really short thing I should take me 30 min so i ll put an hour aside and go and do it, it works for me sometimes

Cheers

2

I tend to migrate my focus from one hobby to another in a random cyclic fashion. Regardless of which hobby I am presently into, I try to invent new programming projects to go along with it. If I'm into scuba diving at the moment I work on logging projects ( databases, web publishing, etc), if its ham radio, more logging, audio, parsers, scrapers, etc. Geocaching has produced a number of interesting projects concerning cartography, converters, logging, and online publishing. Whatever else you are into can provide new projects as well as the motivation to work on them.

2

I work 12-16 hour shifts (sometimes as high as 18 hours) so when i finish work i am knackered and have little time left to sleep let alone have a pet project. What i do is on my way to and from work i plan what i want to achieve that night by splitting it right down and carefully micro managing. It takes a lot of work, dedication on both my half and my family to make sure i spend what time i need working and then i plan some time off to spend with them too

2

I'm the kind of person who can't get anything done in 10 minutes. Context switching seems to be more difficult for me than for normal people, but conversely once I'm engaged, I get a lot more done.

I think this has contributed to my difficulty in getting traction on some of my projects, because as others have noted, the easiest way is to carve out half an hour here, 15 minutes there, and have it all add up.

If you also have this context-switching issue, I recommend finding hack session events, like SuperHappyDevHouse, and scheduling them waaaay in advance. These types of things are the only place where I get stuff done.

Specifically: my husband and I (both developers) have a unified calendar and when I see a hack session, I put it on the calendar at least a month in advance. That way he can plan to take the kids that day, and it's not a surprise at the end of the week. Sometimes I have to cancel, but I generally make it to an average of one event per week.

2

Hi Tomasusa

I recommend trying to narrow down and prioritize your own projects. Focusing on 1 or at most 2 projects will definitely help you get somewhere. If you try to do too many things in the limited time, nothing gets done.

If you really enjoy your hobby projects and programming, then doing that over the weekend would not feel like you are giving up something :)

Doing side projects is a great way to hone skills or interests in other areas than what you find in the work place and anyone that loves programming will naturally have side projects.

I personally sometimes take off a day or 2 from work to focus on my side projects. A bonus is if you can align your side project and your work so that you can pull in the benefits from your side project into your work or vice versa.

Hope this helps.

2

It's definitely worthwhile to you in the long run to spend some time on side projects. It helps you develop other skills and can open other opportunities. If you're working on open-source projects then it's also a great resume builder and provides a public portfolio for prospective employers.

You do have to be careful about who owns the code though. Many tech employers have their employees sign contracts that basically say they own all code the employee writes whether it's on their time or not. You should never sign a contract like this, but it's very common and often hidden amongst many other clauses. If this is the case, decide if you care or not, and if you do, get an exemption from your employer for this work.

1

Where I work there is a rationale of being cautious followers with new technologies. So when I get home I get to do all the "fun" stuff that we can't do at work until the technology has "stabilized".

And then simply like Jeff and Phil Haack says: "I LOVE TO CODE"

1

Personally? If you're looking for ways to "force" yourself to work on a personal project, you probably haven't found a good idea for one yet. The idea behind a personal project is that it's supposed to be fun and/or useful (preferably and rather than or). If you find that you don't have the motivation to do a project, chances are that it just doesn't meet those criteria.

You should also consider the possibility that you don't have to start something. I find it much easier to code in my spare time if there's an open source project that I can write code for without having to worry about the administrative stuff that goes into such a project.

1

Downsize. I started several big pet projects and I realize that I don't have time for all of them. I don't watch Tv and don't have too much other distraction but nevertheless a full time job and eating consumes a lot of time. What I decided is to try smaller projects that will go well with only 15 hours a week lets say.

Share. Work in a team with other programmers, designers. By your self is pretty tough to finish a project, even a pet one.

1

Follow this 3-step process:

  1. Have a realistic, clearly defined goal
  2. Decide in advance on a (flexible) schedule to achieve the goal (evenings from 8-9pm, for eg)
  3. If possible, break up the overall goal with sub-goals, so that you see iterative improvement on a semi-frequent basis
1

I live near my job. That saves me a lot of time. It takes about 15 minutes to get to the job instead of an hour or more.

1

Overestimate, overestimate, overestimate! As long as your pet projects have some relation to your actual work you could make time by overestimating your daily tasks. If your project manager refuses to accept your aggressive estimates, refer to Painless software scheduling and make sure they understand that they don't want to get into a fight about who had the right estimate (it will make you work slower to prove them you were right).

When the timing is right you pull out your pet project and save the day. In my opinion this is how much of the innovation is done today.

1

The combination of cutting DRAMATICALLY back on television watching, and completely giving up Worlds of Warcraft seemed to greatly increase the time I had for programming pet projects. It was like magic :-)

1

I think you will find that no-one else can answer this question for you.

You have to look at how much time you want to spend on your projects vs what else you would be doing. Only you can decide the relative worth of these choices.

I will however add a note of caution. Do you own your own development tools at home, or will you be using dev tools from your work? Does your employment contract allow you to do "outside" work? Some contracts/employers can be quite generous, and others very restrictive.

1

Basically i spent 8 hours/day for work and additional 3 hours/day for my ideas. And i work on Saturday (8 hours) for my ideas. If additional time is needed for my ideas, then i extend my development period instead of adding more time to the existing above schedule

0

Usually at home I watch some short movie. But I always have pen and notebook near to note ideas that come in mind while I'm watching movie. Then, as ideas are almost always interesting, I go and try to implement it in the code. It's easy.

0

I've found that I seldom feel like coding when I've been coding all day at work (no, I am not a developer by profession) and am unlikely to sit down and code in the evenings, but getting an hour, hour-and-a-half in the mornings is something that is quite doable. So, these days, most of the code I write for fun is written between "necessary stuff in the morning" and "leaving for work".

0

I've found that I'm more likely to work on side projects on the weekend than during the week. As you said, after coding all day, you don't always feel like coding some more at night (even if it is a personal project that you're more likely to be motivated about). However, on the weekends, since you've had some time to distance yourself from programming at work, you'll probably be more refreshed and more likely to work on a side project.

While I would like to devote more time to side projects as well, I try not to push myself too hard during the week. If I get some coding in, that's great, but if I don't it's no big deal.

0

I love to code in my spare time. Motivation has never been a problem for me; finding big chunks of time is more difficult. For each project I try to keep a big vaguely prioritised TODO list with a one line summary of some "microtask" which needs doing and will advance the project a bit further. Then when you have some spare coding time, scan the TODO list, pick something which will fit the time available and go for it. Don't get distracted! Working on something always spawns a heap of new ideas; put them in the TODO list for another time. All those little bits of effort add up eventually. If you start running out of small enough tasks, figure out how to break the big ones down into smaller items; there's always a way.

If it's a FOSS project, aim to "get something out there" early. It somehow gives the work more purpose than a heap of code languishing in a private repository; having people actually using it/contributing is even better.

0

How do you build up the motivation/time to work on your own projects after work?

I don't.

I enjoy playing Chess Titans. My optimum time doing that would be about 1 hour a week, and since at work I've dedicated 0 hours to this activity, I have a motivation to spend that 1 hour a week playing chess in my spare time: I know I will enjoy it, and obviously I haven't had the chance to do it at work.

On the other hand, I enjoy programming too, but because of my work, I spend about 40 hours a week doing it. For me, this is not below my optimum enjoyable time programming, so I don't need to add programming time at home to reach that optimum - I already surpassed it, so I dedicate my spare time to do other things. (This includes some reading of technical books, for a similar reason to what I said about chess.)

I'm not saying that I don't enjoy programming, it's just that I enjoy other things to and it can be hard to even do something you enjoy if you've spent all day already doing it.

My point. :)

0

It's really hard to make time for personal programming projects when you work full time in a salaried job, commute to work and also try to have some kind of social life that extends beyond the computer.

The biggest single killer for me is housework - doing enough of that so the place doesn't look like a slum is what keeps me from programming in my spare time along with having a social life, sleep and good health. If you can find a room mate (or live-in partner) who actually helps out with that, and don't have kids you might be able to fit in a few hours.

Of course, if you want to force yourself to program remember that you'll be sacrificing time that could have been spent doing other things. Sometimes it's worth it (ie, not spending a night drinking with your mates is certainly better for the liver and pocket) and sometimes not (ie, ignoring the kids so you can sit at the computer). At the end of the day it's up to you to choose what you give up so you can program more. If you choose to give up sleep remember that the only things that suffer will be your job performance and your health in the long term.

0

I'm single at the moment, thats how. Not saying this is a solution or no social life, that is just how I currently have time to work on projects.

Oh, and I rarely watch tv or watch many movies.

0

Faced with the same problem, I am now trying to use a bug tracker (I'm using the free FogBugz Startup Edition). I try to split my large pet project into smaller tasks. I use the FogBugz time tracking to mange the amount of time a task takes (anywhere from 10 minutes to several hours for a given task). When I have a few minutes here & there, I login to FogBugz and see what I can accomplish with my free time (which would otherwise be spent surfing digg, hulu, etc.).

I'm just starting this strategy out... So far so good.

0

Sleep? What's that?

One way to carve time is to get up a bit early. Work into it. Just set the alarm 5 mins earlier each day for a few weeks and after a month you are getting up 2 hrs earlier. Move to a part of the house, make sure the laptop is quiet, and off you go.

You might find that you are more productive starting at 4am when everything is quiet then at 10pm when you are tired.

0

It's like anything else in life, you have to make time for it. Whether it's coding, exercise, church meetings, hobbies, etc, it'll involve sitting down with your spouse, family and possibly boss to negotiate a time you can dedicate to it. As an example, I take care of my son on Mondays and Wednesdays so my wife can do her personal things, she watches him on Tuesdays and Thursdays so I can do mine, and Fridays, Saturdays, and Sundays are our family and church times.

Things will come up as they always will. Let them happen and pick your schedule up again next week.

0

I have an hour commute on the bus. I work on my pet projects then.

0

I think you're in the same situation as most people. If you want time for a pet project, you have to give up time somewhere else.

Personally, I am not married, have no kids and watch an average of 0-2 hours of television a week. My girlfriend and I do live together and I do have a full-time job but I don't see that as "taking up time."

I have all the time in the world for a pet programming project but then I'd have no time for other activities such as "getting married" or "having kids" or "coaching a team." If I wanted those things it might be similar to your question: "How do I have time to raise a child when I'm programming so much."

Just a different perspective.

0

I think one of the tougher things to deal with the context switch from one project to the other. Not only is it tough page everything back into memory, but one has to deal with the (often ambiguous) choices about which project to prioritize. I think touching it's important to touch both projects on a daily basis. This is a no brainer for your day job, but harder for the pet project.

0

Prioritize your activities and work on the things that are more important in the long run first. Before partaking in a time consuming activity, ask yourself, how important is this in the big scheme of things? Make your pet project a higher priority activity so you can actually spend some time on it.

0

If ever there was a reason to support better public transport in the US! Some buses in Edinburgh even have free Wifi :D

Couple that with a nice new netbook, and I bet you could get a fair amount done :)

0

Incorporate Your Pet Project Into Your Work

Many times you can find some tie-in between your job and a pet project.

Or, take an interesting part of your work related code on as your pet project. Employers are much more open now to open-sourcing things which are not mission-critical or give them some competitive advantage. Icing on the case is that you can get free testing and sometimes get some improvements back.

Here's a small project I did that I spun off this way. It's an Oracle Python wrapper generator. It' really handy if you use a database with Python.

http://code.google.com/p/orapig/

0

I gave a week in month for the office work and pet project. In that week I am 100% for these two works and rest I share time with family and office work.

My family is well known about this schedule.

One of my week end in month is fully devoted to pet projects.

0

I try to devote an hour every day to one of my projects. It's hard to do most of the time, but when you do it you'll feel so much better. Offer yourself a reward if you get your hour in.

An hour a day may not sound like much, but it adds up quickly.

0

!i'd like my comment to be deleted please!

0

1 word - commute

0

A really good way to get into it is to find your local developers group and join them. You'll find it very motivating.

I had a similar issue. I was a full-time PHP programmer but wanted to learn and make a few Rails apps. I joined my local developers group "The Brisbane Ruby on Rails Brigade" and they have regular (once a month) "Hack Day" where we all get together for about 8hrs on a saturday and just code.

It's a great way to learn from others as well as be "in the zone"

I definitely encourage you to get into "spare time programming" it really puts the fun back into coding as you're building something for yourself.

0

You do work mainly programming for money.
You do own programming for your own satisfaction.
So you need to prioritize your free time.

0

i would to suggest you to work on small projects like rubyquiz.com .

-1

Currently my job involves working constantly. I don't get time for pet projects apart from to eat.

-1

rob a bank, bury the money and take your books and pc with you into jail. when you come out again you have god-like knowledge and money too! so you can start writing books and earn money with smart talking.