First the context – I come from a finance major. My background in application programming is close to zero. I am probably a typical ‘business’ guy with no technical skills and no MBA.
At my last startup, I spent approximately 1.5 years on and off working in T-SQL on SQL Server 2005/2008. I’ve written hundreds of stored procedures during that period.
Now, I am teaching myself to code in Python with the aim of creating a databound web application all by myself. I have found that a lot of Python books just ‘talk at you’ which I don’t particularly like. I learn most when I’m hands-on with the tutorial so my learning process has a lot of ‘doing’. Traditionally, the HeadFirst series of books are good at this kind of teaching but I really didn’t like their book on Python. (Their HTML/CSS one was brilliant though)
This is the current learning process that I used:
- Read Learn Python the Hard Way. This is for a complete beginner and it forces you to learn by doing. I have to admit, I skipped some parts because author got really into his game example. Also note that some basic concepts like list comprehensions are not mentioned in his book.
- Having done that, I tried applying my newfound knowledge by practising exercises from the CS department at the Michigan State University here . I found their site randomly. Whilst doing the questions, I had to ask a lot of basic questions on Stackoverflow like this and this. Some of my questions started to get down voted because it seemed as if I didn’t do my research/homework properly. There were also some comments saying Learn Python the Hard Way is not an ideal starting book. So with that, I realised I had to strengthen my basics and read other books and tutorials
- The next beginner book was Think Like a Computer Scientist. I liked this book a lot but it does assume some basic prior knowledge in Python. I followed up by doing questions from the MIT open Python course which can be found here. I did all the questions there except for the last bit on creating a Tetris game. I wasn’t too keen on that so I skipped it.
- In between the books, I also watched some video tutorials. I found thenewboston good in explaining OOP concepts. He has a very laid back relaxed approach to his tutorials and his videos are all in bite-sized chunks.
- Currently, I am internalising all my knowledge by doing exercises. I found a good one at Pyschools.com. I like the fact they have a leaderboard game mechanic template on their site. There are 165 questions in total and so far only 1 dude could be asked to finish all the questions. I’m skipping all the questions about matrics just because I don’t think I would be needing that knowledge in creating a webapp. Are you purists flippin’ out now?
So far, I have devoted on an average of 15 hours per week for the last 3-4 weeks. Once I finish the questions at Pyschools, I would consider myself an ‘expert beginner’.
It’s probably worth noting that I spent 1/2 days dabbling in Django. Because I was using a windows machine, I spent a lot of time messing about the configuration and setting it up. Once I did though, I realised I wasn’t good enough in Python to fully understand what was going on.
At this juncture, I am probably going to attempt a simple OOP programme with classes and methods. Following which, I will attempt to learn Django again and see how it goes. If I feel my Python is still not up to scratch, I will probably attempt Dive In Python 3 as a lot of Stackoverflowers and HN-ers have been recommending it.
Hope this helps the next wannabe Pythonista (Yes, that’s what they call themselves). Feel free to add resources and recommendations to the learning process in the comments.
Some other helpful links:
http://codingbat.com/python (not tested)
http://www.awaretek.com/tutorials.html (not tested )
http://www.pythonchallenge.com/ (not tested).