I started to learn python around December 2015. I remember because I mentioned it to 2 colleagues at a new years party. When they asked why I’d chosen Python, I’d given an easier learning curve than other programming languages and the ability to use Python in everything from web development to data science to robotics as my justification. Skip to 2018 and i’m glad I did because in this time, the Python programming language has only got more popular and useful, ranking as the seventh most popular language in the recent stack overflow 2018 developer survey
In my first year of learning, my approach was all over the place. As so many people seem to do, I started with the Code Academy tutorials, but as great as it feels to complete each exercise, I’d try to remember what I learned at the end of the week and I could recall shockingly little, even for me. I knew I needed to be serious in my approach, so I Googled forums and blogs on the best ways to learn and the book/site that kept being mentioned was Learn Python the Hard Way
The book’s emphasis is on repetitive learning; really taking the time to cement every basic necessity into your brain, and it was definitely more effective than the Code Academy courses. I’d read that some people took as little as a few weeks to complete the exercises, but that most people took around six months. At the six month mark, I must have only been a third of the way through the book. This was in part because I really wanted to know off by heart and be able to recall everything, but it was also likely because I don’t learn anywhere close to as fast as the kind of person that chooses to learn to program. However, I’m glad I took my time because it did give me a good grasp of the fundamentals.
The advice I’d read also said that you’ll never really learn fully unless you complete a project, and for this I had no idea where to begin. My job was related in part to web development, so I knew this would be a good starting point, and it was here that I started to consider Flask and Django. I read about the differences between each, and where Django was appealing, because it gave you more of an ‘out of the box’ setup, I thought it’d be better to start with Flask since this would force me to build from nothing.
A software developer friend from work recommended Udemy, and I decided on Jorge Escobar’s course Professional Python Web Development using Flask
This course was utterly brilliant and gave me exactly the understanding I’d been looking for on how to apply my basic knowledge of Python fundamentals to a web dev project using Python. In fact, it’s Jorge’s course that gave me the knowledge I needed to build www.bigeyeguy.com from scratch, rather than opting for a WordPress or a Blogger site as so many people choose to do.
For my next few blogs, i’m going to run through exactly how I built this website, where I’d like to detail everything from how to set up your development environment, to how each class or function works, a practical explanation of MVC, what each library does and I’d also like to include some information on the ease and brilliance of hosting your site on PythonAnywhere
Although I’ve really only talked about a few resources that helped me to learn Python in this post, and about my web dev project, there are literally hundreds of websites, guides and Github/Stackoverflow etc. question and answers that have got me to this point today as a semi-competent Python hobbyist. I’ve been able to apply Python to so many other situations, including and especially at work. I’ve built small scripts to help with productivity that helped me to programmatically do something I’d have done manually in the past, I’ve undertaken small data science projects using Jupyter and I’ve also built some cool SEO tools that are now part of our product range.
I hope that this post is encouraging and useful to those considering learning a programming language. I’ve learned about 1% (if that) of everything that Python is capable of, and I’m learning more and more every day. My plan is to use this blog as a way of sharing the things I’ve learned with you, and if it becomes popular enough in the future, I may even add an email address so I can help those with questions.