Say you just started out learning Python. I know that it’s extremely hard to focus on specific areas of your education.
Let’s take the perspective of a practitioner: what’s most useful for your coding productivity?
For example, yesterday I have programmed on my Python training app Finxter.com for solving Python puzzles. To deploy this app I’m using Django which is a Python framework, too. I realized that the #1 challenge was not the Python part but to combine different technologies to make the larger objective work.
This whole stack is huge. And if you want to create your own applications and start earning money as a Python developer, you need to solve this problem altogether. You need to combine all these technologies, the whole stack, into a single application that works. And of course, doing this is often not very clean at all. It’s dirty and messy.
Where to invest your learning time? A multi-dimensional optimization problem — with a simple solution (read on).
While isolating some of these technologies or programming languages and learning them separately (e.g. learn Python by solving Python puzzles) generally makes sense, it’s still only the tip of the iceberg.
By doing this, you improve your skill level in a single area. But what you need to do is to take a step back, look at the global landscape, and learn what you need to know — at this moment — to finish the project.
That’s why Python students should not simply focus on Python, but focus on shipping a self-imposed code project.
One example is my puzzle-based learning project Finxter.com. But you can also select projects like “creating your own chatbot”, “creating your own cryptocurrency trading program”, “analyzing Twitter data to find trending topics”, and so on. Then you simply choose the technology that enables you to finish the project as fast as possible. You don’t focus too much on a single language because this will cause you to have a limited view and seriously restricts your coding productivity.
How to spend your learning time is a very important factor for your career — it may be the most important decision in your life. In my course “Reach Python Freelance Level in 3 Months”, I recommend dividing your time into 70% implementation of practical code projects and 30% theory.
So 70% of your learning time should actually be invested in implementing and finishing your own project (if you don’t know which one, read my article with 10 practical Python projects to get started). This ensures that you don’t lose sight of the overall goal — and learn only for the sake of learning. It’ll force you to take a global view and to focus on how the different pieces fit together.
The theory part exists only to fuel your progress in the practical code projects. For example, you solve Python puzzles to increase your Python skills, to be more productive in coding your own Python-related project.
It’s like an optimization problem where you often got stuck in local minima. If you only solve practical projects, you’ll get stuck in a local minimum because you don’t feel like you’re making progress anymore. That’s why you have the theory part to push you out of this local minimum by increasing your skill level even more.
In summary, take a project-first mindset. The concrete technologies are really secondary (and constantly changing, too). For me, as a Python teacher, it would be easy to recommend to focus your learning time on Python. But I want you to make progress towards your goals of finishing practical code projects.
In the real world, learning only a single technology is not how it works. You should consider the whole picture. You select the technology that solves your problem in the fastest and easiest way. And then you solve the problem. And by doing this, you create value for society and the marketplace and earn money in the process by selling your services or your product.
If you want to learn about the state-of-the-art as a Python freelancer, check out my free webinar (links to the Finxter website) — you’ll get three hacks for super productivity to increase your hourly rate.