The easiest way to get started learning a new framework or language is to go through a course or a tutorial explaining it. Someone has broken down the subject into its most important parts, and you just need to complete the exercises and do the reading or watch the videos. This method of learning is essential when you know nothing about a subject, but it’s usually dry and boring, and doesn’t leave much space to experimentation.
Learning only from a book or course is also an incomplete way to learn a skill. If you want to create a complex piece of software later on, there are many things you need to figure out on your own. You won’t find the perfect tutorial for every use case: even if you did, the result would be a copy-pasted mess that’s hard to maintain.
The solution is to learn more playfully and not being afraid to break things. Once you’re more at ease, you need to set aside some time to explore what are the possibilities and how you can use it for your projects. When you try out things for yourself in a low-pressure environment, you can see which ideas are worth pursuing and learn about parts of the framework you wouldn’t have discovered otherwise.
There are a few strategies to do this: you can do a small but self-contained project purely for the fun of it, or prototype parts of a larger project that you know are trickier. If you try to jump in a large project right away and just get going without giving yourself time for play, chances are that you’re going to introduce patterns and practices that will stick around in the long term, even if they are a bad choice. Once a project has momentum, it’s hard to turn around even if you find better solutions.
Being able to explore this way won’t come to you instantly. To be able to do something interesting, you have to build a basic understanding of the skill involved. When you play and explore, you combine your existing knowledge and experience with the new tool you wish to learn: you can’t do this if you don’t have any prior knowledge of the subject. Being playful also means being in the flow, which is hard if you stay stuck on every little thing.
To use an analogy with art, I wouldn’t be able to play with painting since I don’t have any experience painting and know very few techniques I could use to create an original painting. I would need to know more about the basis techniques and copy good painters for a while before being able to go on my own. On the other hand, an artist familiar with drawing would be able to pick it up a lot quicker and start experimenting.
The same applies to programming. If you wish to be a better web developer and want to play with new patterns, tools and frameworks, you need to be familiar with how the web works and which patterns are commonly used to build applications. Once you have this experience, you’ll be able to pick up many subjects with only a short introduction and just play. You’ll have seen many similar things before and will have a basic mental model of how things work. Even if your first impression turns out to be wrong, you won’t be completely in the dark and you’ll understand how to debug something that doesn’t work as planned.
The phase when you need to understand a skill before being able to play with it may be boring, but if you stick with it and master it properly, you’ll reach the point where the real experimentation and innovation start.
Go back to the introduction of this series: Play and learn as a software developer