Had someone recently ask me what path I would recommend for someone wanting to pick up “programming.” I narrowed the scope down to writing web applications, and this is what I came up with.
- Learn HTML & CSS first. There are a million and a half free resources out there to do this. I have preferred HtmlDog.com as a reference recently. If you want to get a leg up on the future with HTML 5, check out Dive Into HTML 5 and perhaps consider the upcoming HTML 5 for Web Designers book.
- Learn a backend programming language/framework. Ask yourself this question: do I want a job at a big corporation that is safe, but perhaps dull, or a smaller and more volatile, but cooler and more application driven environment? If you want the big job, pick up .NET or Java. Out of either of those, I highly recommend ASP.NET MVC as a framework, although it has been slow to adopt amongst the big .NET based firms. For the leading edge of app development, I'd recommend either Ruby On Rails or Django. Neither of which will likely get you a job with health insurance and a 401(k), but they are favored by startups, and tend to be the source for leading edge web application and design.
From that last category, I’d recommend Rails. It is a very mature product, and there is an extremely vibrant community of developers around it and helping it grow. Additionally, the documentation is excellent and easy for someone to pick up.
PHP is also favored amongst newer programmers, but my recommendation is to stay away from it. It is easy to pick up, but in my opinion the ceiling is just too low in terms of what you can do with that skillset. The majority of big company jobs stay away from it, and the majority of startup and smaller companies have flocked to Rails or similar frameworks.
Obviously, this is not the only way to go, and if you truly want to learn software development there are several dozen more steps that you would need to take. This is just a high level view for someone interested in web development.