Testing your skills is not what will guide you towards improvement. Instead, learn by doing. Come up with another learning project and complete it. Do another. And one more. And so on. Start with something simple and gradually challenge yourself to achieve more. (If you're not the idea guy, here's how you might generate these ideas reliably .) You will naturally do some research while building these, and it's perfectly fine! Just don't get too dependent on tutorials . Coding-wise, here are a few things that you can practice: Model real-world objects and behaviors to get better at object-oriented design and modeling data in general. For example: try to model a credit card. And a POS to charge that card. And an ATM to lookup its balance. Think about how that could be implemented. Test. Instead of testing your objects and functions by hand, write simple functions that call "test" the behavior of these. You can write the tests right inside that file, and you can use pytest to run the tests. For example, to test a function that would add two numbers, you could write a function that would do `assert add(1, 2) == 3`. Another thing that can boost your own understanding of programming concepts — any kind of concept — is blogging about your "aha" moments and discoveries. My partner is a beginner Django learner, he recently did 3 relatively "simple" posts about Django, targeted at other beginners like himself, and they got well received on Reddit (http://reddit.com/user/arevej)