James Hague offers some advice to all those aimless, excited programmers, who want to make something using the latest technology that has caught their eye:
Stop and think about all of your personal interests and solve a simple problem related to one of them. For example, I practice guitar by playing along to a drum machine, but I wish I could have human elements added to drum loops, like auto-fills and occasional variations and so on. What would it take to do that? I could start by writing a simple drum sequencing program–one without a GUI–and see how it went. I also take a lot of photographs, and I could use a tagging scheme that isn’t tied to a do-everything program like Adobe Lightroom. That’s simple enough that I could create a minimal solution in an afternoon.
The two keys: (1) keep it simple, (2) make it something you’d actually use.
Once you’ve got something working, then build a series of improved versions. Don’t create pressure by making a version suitable for public distribution, just take a long look at the existing application, and make it better. Can I build an HTML 5 front end to my photo tagger?
If you keep this up for a couple of iterations, then you’ll wind up an expert. An expert in a small, tightly-defined, maybe only relevant to you problem domain, yes, but an expert nonetheless. There’s a very interesting side effect to becoming an expert: you can start experimenting with improvements and features that would have previously looked daunting or impossible. And those are the kind of improvements and features that might all of a sudden make your program appealing to a larger audience.