Do you want to build a game for Android, a theme for your blog or a twitter desktop client? Have a great idea but lack the development chops to take it from the pages of your legal pad to the App Store? Want to make sure your kid learns to program, even though your local school system may not offer the best options? This post should give you a good starting point for learning to program.

We have many developers who read ReadWriteWeb, so this post is meant to both be a help for aspiring programmers and a place for those of you with much more knowledge than I, to drop in suggestions. Please let me know what we've inevitably left out.


Books

There are a variety of great books and resources that will teach you to code in the language of your choice. Interested in the look and feel of a website? Consider learning a front end language, like Javascript, or learn to create stylesheets using CSS.

If the underlying technology of a site or application is more interesting, consider learning a back end language. Scripting languages like PHP, Ruby, Perl, and Python are popular for a variety of applications, not least of which are Web applications. If you want to develop desktop applications, you might want to look at C++ and APIs like Cocoa.

Some great books for any of these options can be found on Amazon, O'Reilly or at your local library. Note, if you work for a technology company, you should check your benefits because many technology employers offer Safari Books Online, from O'Reilly, as an added benefit for their staff.

Meetups/Classes

Some people would rather get together with like-minded folks and learn by doing. There are meetups available to you, for most any language, even segmented by gender and age, or by what you might be creating. From learning Ruby on Rails in Chicago at CodeAcademy to teen camps in San Francisco, local meetups/classes can be a great way to learn.

It does warrant mentioning that you will have a much easier time finding programming meetups on Meetup.com or on a meetup's homepage if you live in a big city. If you live in a small town, like I do, you can check in at your local schools to see if there are any meetups going on that are off the grid.

Structured Coursework

Some colleges, including Stanford, UC Berkeley and MIT, offer much, if not all, of their programming classwork online. In some cases, you can have them delivered directly to you as a podcast. Mozilla and Google also offer dedicated resources to educating yourself. Other options include the prolific Lynda.com, which will teach you to do almost anything for a small fee. Most languages also offer online documentation, including some of the best tutorials and sample code to get started. Do a quick web search on your language of choice to find where the best learning options for that language exist.

Pick It Apart

I'm a kinesthetic learner, so if I want to know how something is built, whether it's an old CB radio (that I was sure, as a kid, I could turn into a way to get cable television signals through) or a drop-down menu script, the first place I'll turn is to Github. There are so many kind developers on there that will give away their code, just to teach others and help them do their jobs easier. I never cease to be amazed at the kindness of developers. Another option is Codecademy, which is just about as kinesthetic as you can get. My daughter is going through this option now.

Ask for Help

After about 15 minutes of dipping your toes into the proverbial water, you're going to get stuck. You'll hit a roadblock and you'll either quit, or struggle through it. In these cases, it's helpful to know where to go to debug. StackOverflow is likely your best option, though most of the homepages/repositories for your language of choice will also offer a forum with super helpful folks that haven't forgotten the early days of learning a programming language. The CarlHProgramming sub-Reddit is another place to get help with where you went wrong, via 10,000 Words.

App Building Tools

Some folks are skipping the deep dives into programming traditional languages and opting to learn just enough to build the app they want to build. In these cases, Conduit, a product we reviewed just yesterday, or RunRev's LiveCode are worth looking into. RunRev is putting on a free LiveCode Game Academy, today through January 31st, if you're looking to both learn how to build an app and work with others in a more structured environment. Both Conduit and LiveCode offer tutorials and videos that will help you learn to use their products.

Here's an example of a RunRev engineer's start to finish app, using LiveCode.