Learn Python the Hard Way

Over the last two years, I've spent considerable time learning several programming languages (PHP, C# and Ruby).  I started developing web applications with PHP, moved onto ASP.NET MVC using C# and then decided to experiment with Ruby on Rails.  I really loved the simplicity of Ruby and the 'magic' of Rails, but there was something about the Ruby language that just didn't grok with me — I still can't exactly put my finger on it.

A couple of months ago, I read Dharmesh Shah's post 'Why PHP is Fun and Easy But Python is Marriage Material'.  He made a compelling case for using Python and so a few weeks later I decided to take a closer look at Python myself. As sad as it sounds, I've finally found a programming language that I'm really excited about. It's simple and easy to get started with Python but it's also an extremely powerful language. And after I got over some of the initial 'weirdness' of Python e.g. using tabs for code-blocks, it really started to grow on me.

Learn Python The Hard Way

If you're interested, a great place to start learning Python is Zed Shaw's "Learn Python the Hard Way".  The online version of the book is available for free and there's also an  online class with screencasts at Udemy.com. The course is really designed for people with little or no programming experience. I consider myself to be a novice, but after a few years of programming in other languages, I realized that I actually know more than I thought I did. It was actually a very easy course for me, which I got through relatively quickly. But it was a great way to learn the fundamentals of Python. It might be too basic for a lot of people, but I still think it's worth taking a quick look at.

At the moment, I'm going through Mark Pilgrim's "Dive Into Python" book — which so far has been EXCELLENT. This is a book for experienced programmers and you will find a ton of useful information here. This book is available for free (published under the GNU Free Documentation License) and can be downloaded in a number of formats and languages. Along with this, I'm also reading Ayman Hourieh's 'Django 1.0 Website Development' book (Django is an excellent web framework for Python). I guess you could call it "Python on Django" but that doesn't quite roll off the tongue as "Ruby on Rails" does.