This story was written by Keith Dawson for UBM DeusM’s community Web site Develop in the Cloud, sponsored by AT&T. It is archived here for informational purposes only because the Develop in the Cloud site is no more. This material is Copyright 2012 by UBM DeusM.

Learning (More About) Programming

Vast resources exist online for learning about software development at all levels. Here is a starter set.

When you look around online with the goal of learning (more) about programming, the available resources can seem overwhelming. Here's a guide to some starting points.

If you're just getting started -- maybe you've read Marc Andreessen's take on how software is eating the world and you figure that having some programming ability in your toolkit will enhance your job prospects no matter what line of work you're in -- you're probably right about that -- you can go one of two ways: old-school or post-modern.

Old-school: if you seem to learn best using old-fashioned methods, you may be well served by Learn Code the Hard Way. Author and teacher Zed Shaw insists that you type in all the code examples in the lessons and get them to run. No copying and pasting. Separate books cover Python, Ruby, C, SQL, and regular expressions. HTML versions are free and e-book versions are available for purchase. Shaw claims that his teaching method instills three critical skill that any programmer must have cold: reading and writing, attention to detail, and spotting differences.

Post-modern: For those who love interactive online tools, social exercises, game-play, and competition with friends, Code Academy may be your best bet. The emphasis is on Javascript, with follow-on modules for learning HTML, CSS, and jQuery. More modules are being developed by course creators, who can be anyone with knowledge to impart. (Because course creation is crowdsourced, a facility for community ranking of the growing library of courses will be important; user voting on course quality does not seem to exist yet.)

Picking up languages and environments
Python: This scripting language probably has the deepest and widest selection of available learning resources of any Web language. Cameron Laird surveys these in his blog post Installation-Free Programming in the Cloud.

Ruby: In the post-modern mold, Ruby Monk walks you through a tutorial on the Ruby language. As with many tutorials, this one makes it somewhat difficult to get an overview of the material to be conveyed. Another modality of learning is offered by Peepcode tutorial screencasts. Subjects on offer include Ruby and its popular Web framework, Ruby on Rails.

More advanced, more ambitious
If you're already operating at an expert developer level, Stack Overflow is an invaluable resource for broadening your knowledge and stretching into new areas. The site is a community-generated and -maintained resource with questions and answers on programming topics across the board. Typing a query into the search box -- try "functional programming" for example -- returns a wealth of knowledge from overviews to deep-dives into particular technical questions.

Udacity offers courses, ranging from beginning to advanced, in computer science and related disciplines, taught by big-name university instructors. The courses are free, and the site makes money from certification and recruiting.

Finally, two other university collaborations bear watching as they develop. Coursera is starting up with courses taught by professors from Stanford, Princeton, the University of Michigan, and the University of Pennsylvania. Subjects include Computer Vision, Software Engineering for SaaS, Computer Architecture, and Cryptography. EdX is a partnership between MIT and Harvard University that was recently announced; eventually it will offer an open-source technology platform to deliver online courses, taught by faculty from those institutions.