views:

415

answers:

7

I believe that spare time programming projects are an important way to improve my skills as a developer, but lately I've been having troubles finding the motivation to work on them.

I used to have at least 2-3 projects going on at all times, but then I got a job in the industry... Don't get me wrong - I love working as a programmer, and I still get the same kick out of creating stuff, but I'm just not motivated to code when I'm at home.

I don't know the exact reason for this, but here are some guesses:

  • I simply get "enough" code at work... my coding needs are fully satisfied
  • I have become better at estimating tasks. This is putting me off, when I think about a project, because I know exactly how much work it actually requires.
  • Back then I didn't care about things such as source control and other tools that I now think of as essential - I just started hacking away. Now I get tired of just thinking about all the tools I would have to install and configure to have a good development environment at home.

I have lots of ideas for projects and I guess I have the time as well (that's a matter of priority).

How do you find the motivation for doing spare time projects?

+2  A: 

Money.

Well, that and glory, of course.

tylerl
Nothing motivates you like a looming dead line and the guy paid you for it.
uriDium
+1  A: 

I know what you mean: I used to code a lot in my own time. These days it's ahrd to find the motivation even though I have a half dozen or so ideas or projects in the works.

Source control is easy. Setting up a subversion repository is easy and then you're basically done and don't have to think about it again.

As for motivation I find the key is immediate gratification, namely if I know I'll have to spend 600 hours to get something to the point where it'll produce something interesting it's never going to happen. But if I know that by spend 10-20 hours it'll produce something rough but nonetheless interesting then it has a much higher likelihood of happening.

For example, I might have an idea for a desktop app to do something that is hard to do by hand. Say it's a screenscraper. The first stage is to write something that'll read an HTML local file and spit out console output. Not sexy but it'll do something interesting. At some point I'll then add to that. Later I'll wrap a desktop app around it, make it sit in my system tray, make it fetch Web pages automatically, have it store data in a database and so on. Each is a new feature that can be done independently and isn't required to make it produce something.

If you can incrementally add useful or interesting features then you are much more likely to add them.

cletus
That's good advice. And actually that's an advice that adhers to professional work as well: split your project into managable pieces ;-)
toxvaerd
Do SCRUM at home, use the fridge ^^
Oskar Duveborn
+1  A: 

Choose small projects, with new or challenging technology. For me it's all about learning - when I'm learning I'm more motivated than otherwise to work on personal projects.

Steve Willcock
A: 

I do really small things, more with intention of trying out something new and different from daily work, then actually get the project done.

vartec
+1  A: 

For me I really need to be around and pushed by other creative and skilled spare-time-coders or whatever category of creation we're talking (graphics, music, art in general and so on).

Seeing progress in a project by a friend showing new stuff to me always gets me going - without this part it's harder these days to find motivation on my own especially after working all day in a great team, satisfying much (but far from all) of the creative hunger.

Attending demo parties like Breakpoint regularly (might be mostly a european thing) also inspires me a lot and gets me started on projects, basic demo coding, 3D art and even trying to dive into stuff I don't usually do like creating music and doing artsy photography.

Supporting a bunch of people in these kinds of settings with kick-ass web sites and utility tools is also a great motivator to me.

When I see how much awesome and cool stuff these people produce on the side around my age I get a mental workout and a new mindset that makes me much more effective - and also taking me back to that "just hack away, don't estimate" feeling you mentioned of days past (but with added experience and basic safety like version control to enhance the pace rather than slow it down).

Setting up the basic tools, hey that's not too hard, take an evening to do it properly and feel proud over doing it - leaving the actual "doing stuff" to another night? ^^

Oskar Duveborn
A: 

Two ways:

First, by writing a widget I actually need. Usually I can piggyback learning a new tech on top of this. For example, I needed a way to get the text of some of my twitter posts the other day, and ended up writing a python script to get them. Bonus: learned both the Twitter API and got a better handle on JSON (both awesome, by the way.)

Secondly, by reminding myself every time I lose interest and start thinking about re-playing Bioshock, that if I get this done, I can put it on my resume. Nothing looks better on a resume than "I wrote this. Go download it here."

Electrons_Ahoy
A: 

Guilt, I have things started and a huge personal responcability dept build up.

But SO is really killing those micro moments where I might started getting revved-up and thus do stuff.

So this is really an anti-answer.

But i agree there are some large projects I'd love to-do, but I very aware of required work to be done, and the level of quality I'd want to deliver.

Ahhh, but there might be new SO questions to answer, so it's not that bad really.

Simeon Pilgrim