Learn Python in less than 3 months | free Python tutorials

Python is a very simple, easy to learn yet very versatile and powerful programming language. If you still in doubt to learn Python as your first programming language, you can read this, this, this and this blog. Nevertheless, you need to prepare learning materials and study plan to achieve your goal. In this post I am sharing my experience finding the best way to learn Python that work for me.

First of all, let me share you why I choose this language. As a GIS engineer, I cannot escape to learn to code. Programming is increasingly needed to tackle spatial problems than ever before. Two most widely used GIS software, ArcGIS (proprietary software) and QGIS (open source one) are using Python as the scripting language that allow users to extend the core functionality of the software and automate many tasks. More interestingly, Python can be used to process tons of multispectral, multitemporal satellite imagery.

Learning a programming language, even the simplest one like python, is not easy at all. I always envy with my friends who are self taught programmers. I always wonder how can they learn to code by using documentations and text books. My learning style is just not like that, learning new things from documentations or manuals never seem to work for me.

I have long been noticed that I learn new subjects by following examples from a person that I respect. That's why I love physic and math in high school and choose remote sensing for my research in uni. It simply because I met great teachers who could 'show me' how to deal with those subjects.

The same thing happened when I got a permanent job. Suddenly I learned networking, Linux and Cisco so easily and within two years I became a system administrator in my office. And surely that happened because I had an inspiring senior, even though I worked with him for relatively short period.
Nevertheless, this was not the case when I want to learn programming. Even though I work with three or four programmers in my office, none of them inspiring me enough to learn a programming language. However, the need to master a programming language particularly to solve many GIS problems was increasing. I tried taking two or three courses, learned from eBook, online course such as codeacademy and YouTube tutorials but nothing seems to work. At that point, I though that I would never be able to code.

Amidst desperation, I found 'Learn Python The Hard Way' website. This is the online version of a book with the same title, authored by Zed Saw. Even though I was a bit skeptical, I just gave it a try. And I was so amazed by how Saw's brilliant approach guiding noobs like me learning Python with ease. I think the secret of his success teaching system is the combination of discipline  and sense of humor. He can't stress enough that the hard way is the easy way and this is the simple way.

Surprisingly, the simple way is only consists of three steps: 1) Go through each exercise, 2) Type in each file exactly, and 3) Make it run.  These three steps required you to follow these six rules: a) Reading and Writing, b) Attention to Detail, c) Spotting Differences, d) Ask, Don't Stare, e) Do Not Copy-Paste, f) Practice and Persistence.

In exercise 1, there is a warning that ensure all readers to complete exercise 0, working with text editor and terminal. What a great introduction!
In contrast, Zed deliver each subject with a real live and sometime silly example. He put jokes, poems and songs in the code examples. The dull and absurd Hello world! exercise is replaced with more engaging and fun block of code like this:

 print "Hello World!"  
 print "Hello Again"  
 print "I like typing this."  
 print "This is fun."  
 print 'Yay! Printing.'  
 print "I'd much rather you 'not'."  
 print 'I "said" do not touch this.'  

This made me comfortably grasp concepts that I found so stiff and too technical in other books or websites. Unfortunately, the new edition of the book, with Python 3 on it, cannot be accessed freely anymore. It only provides free samples up to exercise 8. I believe $32 investment for this book is well worth it. However, there are many people that eager to learn Python or other programming languages without spending any money.

There are plenty of free Python books on the internet and I found 'Automate the Boring Stuff with Python' and 'Dive into Python 3' are very good books. I personally recommend the Automate the boring stuff because like Learn Python The Hard Way, this book can be accessed in the form of eBook, website and videos.

The videos are available in Udemy website, which regularly provides interestingly discounted prize. Most of the time, Udemy provide up to 80% discount ($10 per course), but with a little bit of luck (information from a programming chatroom) I got three courses (including Automate the boring stuff) with 100% off a.k.a free. The book is also presented in a pleasant way and in a such detail that won't make you bored or confused.

If you need a book that cover only the core aspects of Python and avoiding learning elements that you will never use, you can start with Lean Python book. This is not a free book, but very advantageous if you want to learn Python quickly and use this book as a 'cheatsheet'.

While you are reading, writing, practicing and making the code from the book working fine, I recommend that you install an app in our mobile. Type 'Sololearn Python' in your App Store or Google Play and you can find an awesome app to learn to code anytime, anywhere. Learn to code with Python by Sololearn is a great mobile app to understand Python functions and syntax.

 I learned and practiced coding Python with this app in my spare time. When I was on the train, between works in the office, when I was waiting for a friend, after lunch or dinner, and before go to bed... literally anytime and anywhere. It's not only good for you to remind Python functions and syntax but also sharpening your brain by solving many challenges.

With consistency and determination, I am quite sure that you can finish the book and Sololearn challenges in 6-8 weeks. And by that time, you will have gained basic understanding of coding with Python. Nevertheless, you wouldn't be able to solve real world problem with your basic knowledge. It is time to go deeper by learning computational methods by using Python.

'Introduction to Computer Science and Programming Using Python' (MITx: 6.00.1x) course that can be accessed from edx.org is the right choice to advance your Python skill. It is free to access this course, but if you completed it and want to get the certificate, you need to pay $49. If you only need the knowledge than there is no need for you to purchase the certificate just like what I did.

The course will teach you Python basic, simple algorithm and functions, tuple, list and dictionary, testing and debugging, object oriented programming and algorithmic complexity. If you don't have computer science background, than this course is the perfect place to understand how programmer with computer science background solve the problem they face. This course is designed to be completed within seven weeks.

With a strong foundation from these three materials, you will be ready to continue learning python to create something that is needed by customers. It can be web apps (flask or Django), desktop apps (PyQt or WxPython), web scraping (Scrapy or BeautifulSoup), data science (panda, numpy, scikit-learn, keras, tensorflow) or others. Python applications is so vast but I think you need to master one or two areas that interest you the most. In my case, I continue learning Django because I want to be able to build web applications.

As my Python learning journey is advancing, I discover that YouTube tutorial series and Udemy is the most suitable learning materials for me. I can learn bit by bit for five to 20 minutes at a time from the series. You can read my favorite Python YouTube channels in this posts.

I also found that I made several mistakes during my learning journey. If you want to avoid mistakes beginners would most likely do, you can read my article about Python Learning Roadmap .