Question

At the moment, like a fair few of you I'd imagine, I spend at least 40 hours working on projects that use a specific set of technologies. Sometimes I'm doing maintenance, and have those technologies enforced, and sometimes I'm doing new builds.. but have the skillset of the team enforced due to maintenance reasons (quite rightly).

Yet I've got a growing set of technologies I want to test the waters with; be they custom Javascript frameworks or new Mobile Development techniques.

I have no idea how to get to grips with them though! Take for instance the Chromium Embedded Framework; I've always been a fan of the UI of the GitHub app, and also been impressed by both Evernote and Spotify. When I found out how those UIs were produced I naturally tried thinking of a project that I could toy about with and produce over a weekend. (Which, with minimal OS interaction (perhaps simple file manipulations), should be ample) But I can't think of a single thing to develop.

At work I've been tasked with retraining on Ruby on Rails; not wanting to go in blind - I decided to hammer a few books and try a few techniques. Now aside from the usual Lynda.com examples, and the very good "Agile Web Development with Rails" project from the book... I can't think of a single thing to develop.

Ordinarily I'd consider contributing to some FOSS software, and with frameworks I use regularly I do actually have a few ideas and I belong to the relevant mailing lists - i.e The Apache Cordova mailing list, and have signed the appropriate paperwork where required. (i.e For Apache Licensed projects)

Sometimes it's good to have an idea and run with it from scratch though, especially if you're new to the technology. So how do my fellow programmers manage doing that, and more importantly, how do you get ideas that allow you to use that specific framework/technology? It's hard to shoehorn ideas in to specific technologies at times.

I fear this is half the battle and the other half is how to keep such a project when work commitments can eat in to your personal time, and as it is, downtime is quite a valuable commodity!

Was it helpful?

Solution

There are a couple ways I get ideas for things to work on. As you go through your normal life, think of useful programs that might be nice to have and then make a note of the idea. That way, when you have a need to learn a new technology, you can look at this list rather than trying to come up with an idea from a blank slate.

Here are the ways I do it.

Standard utilities

I've got a few general utility programs I keep around that I rewrite into new technologies. For example, I've written a program to print addresses on envelopes on pretty much everything I've owned. Keeping one or two ideas like this around is great because you already know the requirements, you can focus on learning the technology to build it.

For example, if you want to learn CEF, you can build a really nice HTML view for the envelope and a pretty UI. You could build it in ruby on rails and install it on your home server so that it can store common addresses and be accessed by your whole household. If you want to learn an image framework, you can start making the printouts prettier. You can write a mobile phone app for it to learn iOS or Android.

Hobbies

Hobbies are usually a good source of ideas too. There's usually some fairly easy things that could use automation or support. Here are some examples from my life:

  1. I've got a friend who has a small golf league and needed a website to track scores, compute handicaps and create round-robin matches.

  2. A local charity my mom worked with was spending a lot of time manually writing labels for their Angel Tree program at Christmas. A few hours spent got the info out of their systems and put it on the labels.

  3. Keeping track of all of the possible adventure and plot hooks for a roleplaying game can be difficult, but a system to tie them together works well.

  4. Data mining home finances by extracting transaction data from various bank accounts, categorizing it and doing projections.

Anything can work

Just remember, your idea does not need to be original! It's perfectly fine to reproduce something that already exists, because the goal is to learn, not to produce a finished product. If you have an idea that is new and that you can share with the world, that's great. But don't get stuck because you can't find the next world-changing product.

OTHER TIPS

All of us are short on time, but somehow manage to find it for our pet projects. The reason? There is usually a problem that needs solving or a cool tool/feature we want that is not readily available elsewhere.

Without this spark of inspiration, you're going to find it that much harder to get going.

If I were in your shoes, I'd maybe find a piece of software you admire/like and try the following:

  • Write a clone (or subset of it)
  • Write a complementary/value-added feature
Licensed under: CC-BY-SA with attribution
scroll top