Content translated from this Twitter thread, but I removed the tutorial examples because the thread focused on contents in Brazilian Portuguese, not in English.
One of these days, while talking with some friends in the process of learning Python, I ended up organizing some quick tips about how I learn a new programming language:
1. Book or course
Usually, I start following a book or a course to “break the ice” and understand the basics of writing stuff in this programming language.
2. Automate one of your everyday tasks
When following the book or course starts to get boring (this always happens in my case), I begin to think about a pet project — any everyday task that can be automated using this new programming language (I’ll share an example, hold on!).
3. Tutorials
So, with a little project idea in mind, I change my approach. Instead of books and courses, I look for tutorials (which are usually more hands-on) to help me with practical things in this project. These can be shorter tutorials (like practical lectures or blog posts) or more comprehensive ones (like video series or blog post series).
4. Hands-on
Then, I try to implement this pet project idea by doing a patchwork with a couple of tutorials. It is essential to try, get it wrong, and learn by creating new situations not foreseen in the book, course or tutorials — but sufficiently close to these sources. We push ourselves away from the learning materials’ comfort zone and learn to be more autonomous, to ask and research these new errors… and this is when I have fun!
Examples
How I got started with Python
When I got started with Python, Whiskyton was my pet project. In the acknowledgments section, I list the book, course, tutorials and sources I used during this learning experience. I started with this course and with this book. I have never finished any of them, but I found a database about whiskies and came up with my pet project idea. From there, a web mega-tutorial helped to shift to the hands-on mode.
Sources to get started with Python
Yet on Python books, I still believe Allen B. Downey’s Think Python is an excellent starting point! There are free and paid editions translated to many languages. Just google it, and you will find one that suits you.
Regarding the course, I found mine on Coursera. Not sure if they have new classes — but if they don’t, I am pretty sure there are many other options out there. Maybe you can look at the syllabus of the course I linked in the previous section and compare them if that helps your decision-making process.
Anyway… these are merely examples. The core of the idea is to use simple, straightforward tutorials and combine them to implement your pet project. I’m afraid that just following step-by-step tutorials gets incredibly dull with time. Thus, to summarize it all, adapt these sources in a way that ends up shifting you to the hands-on mode. That’s what has been working for me :)