I've got an itch and it needs to be scratched. I've got nothing to program these days. Normally I'd just pick my flavour of the month technology and fiddle with it, but I want to make something and take a break from serious research/experimentation for a while and just write something for fun (ie. not necessarily purely educational/professional development).

Problem is,

I can't think of software that I need that I don't already have.

Sifting through the open-source projects on various sites to help out on is excruciating (5 hrs down the tubes so far - not worth the trouble)

I'm not looking for a specific suggestion for what to work on because that would be a terribly hard task. I don't think that here knows nearly enough about eachother to effectively give good suggestions.

So I ask, is there any mental exercise that you use to decide what to make when you're not "fiddlin'"?

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.

What do you like? It doesn't have to be practical.
–
Robert HarveySep 24 '10 at 5:12

8 Answers
8

Since you don't seem interested in helping open source projects, start your own project (open source or not) but try helping a community out there on the internet. Find one first, that you actually enjoy spending time with, and create something for them: a website or a tool or something.

I mean, your a programmer, use your skills in the real world (outside your job). It will even get you to learn new technologies because you'll want to do certain things that might be outside your programming knowledge. You'll be like your own analyst and the client is the community.

Yeah Project Euler is a great way of learning new languages
–
Jaco PretoriusSep 24 '10 at 6:13

+1: This is a really good idea. I do PE problems as well, but I never considered it as a tool to learn a new language.
–
Steve EversSep 24 '10 at 15:18

I'm using Project Euler to learn Python. Not only is it good for improving Maths ability but it is useful for learning the basics of a new language.
–
RichardSep 28 '10 at 15:08

Project Euler is nifty, particularly challenging if you try to figure out a scenario where you might use the code you just wrote. I find these cases to often be more brain bending than the mathematics involved.
–
World Engineer♦Jul 12 '11 at 5:54

Personally, I've got a genealogy project on hold, and I'm concentrating on a (simple) game for my daughter. It's not an entirely contrived project, my daughter wants the game, though it could be easily be played on paper, and it will allow me to learn a bit about WCF. Like many other people, I learn more by doing than by simply reading about generic examples.

If you don't have a specific need or inspiration, simply pick an existing app or tool that uses a technology or feature that you are interested in, and build your own from scratch. Specifically, try to build a better one from scratch.

On my might-get-around-to-it-one-day list, is a synching tool like SyncToy and a replacement for SwitchOff.

Better still, in the UK their is a programme call IT4communities that tries to match needy charities with technical help from volunteers - many of which are programming projects - why not earn yourself some good karma in the process. Some countries have similar schemes running, perhaps under a Circuit Riders label.

I look for tasks in my life which could automated, or more easily facilitated, and then try to find a programmatic solution. This usually results in a nice backlog of projects, and I pick the one which closely matches what skills I want to develop.

Some questions I continually ask are:

What kind of data am I working with/on? Will I ever want to analyze it (graphically, or otherwise) in the future? Does it have any relationship to other data I'm working with?

What repetitive tasks am I performing? Am I working with something which has a programmable interface?

Once I get an idea, I try to capture it in a mind map and store it somewhere so I can go back to it. If it's very compelling, I try to work through the basic requirements and decide if it has priority over what I'm currently working on.

I also try to keep tabs on my wife and what tasks she regularly performs. If there's something she does which could be made into an application, I see if she's interested. If she is, I work through a few basic requirements with her, and do my own development cycle and walk through some prototypes with her. This usually helps inspire a number of ideas for extensions or other projects.