Question

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'"?

Was it helpful?

Solution

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.

OTHER TIPS

When I run out of applications or utilities I want to write, I usually go solve math problems on Project Euler (I also often use those problems when I'm learning a new language).

Solving math-based problems programatically may not be the most rounded use for programming skills, but I've had a lot of fun and learned some things as well (ymmv).

What are your hobbies, outside of programming? Make something for one of them. This way you'll have some actual interest in the project, and it may end up being something useful to others.

Make a game.

That way you can increase your skills in almost any area you want. You'll need to touch many of the things mentioned below, but you can have extra focus on those bits that interests you the most.

  • You want to program AI? Go ahead!
  • Graphics programming? Check!
  • Physics? Check!
  • Resource managment? Check
  • Network programming? If you want to.
  • Ui programming!
  • Gameplay programming
  • Mixing sounds
  • Creating graphics

The list goes on and on!

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.

I tend to try to recreate things I find interesting - for instance, I recently decided to make my own version of Ta-Da list, just to see how it could be done.

Licensed under: CC-BY-SA with attribution
scroll top