Learning a new language or framework

Some good habits when learning something new

How do you learn a new programming language or framework? There are many options for learning media to use to guide you in the learning process: books, web tutorials, blog posts, videos.

It can be tempting when learning something new to 'rush ahead', especially when you have the goal of creating something specific in mind. For example: you're trying to learn some apsect of CSS so that you can style something on your website the way that you want. It is incredibly tempting to just keep doing quick internet or stackoverflow searches, groping your way to a solution that 'seems' to work. I'm sure that every developer has been guilty of this. Sometimes it's warranted — you have some urgent deadline and just need to get something finished. In this case you could make a note to yourself to look into it properly later, or in your own time.

When you're deliberately taking time out to learn something, it's important to understand the conceptual and technical ideas that lead to the solution being the solution (or an acceptable solution). If you view your knowledge of something as a tree, then you can see it as filling out the branches leading to the leaf which contains your end goal. Doing a quick internet search is like getting the fruit from the branch without building the branches which led to it.

Your brain stores knowledge and ideas in an interconnected way similar to the tree picture. Once you've filled out the branches leading to an idea or solution, you can re-use those later to reach other solutions quickly. At the very least, re-building those branches is much faster the second time around. You can then find solutions faster than you can do an internet search, and the satisfaction of finding those is so much greater — because you know that you've done it yourself, using your skill and creativity.

I once took the time out to properly learn CSS by going through the book Jump Start CSS. I went through the whole book, exploring things by myself as I discovered them — 'playing' with CSS. Sometimes getting distracted by mini side-projects making silly things ... such as this interactive face. The process was definitely worth it, as I became better at CSS and styling than I ever would have had I not taken that time. Not only that, but I really enjoyed doing any CSS styling from that point on!

Whatever it is that you find irritating or 'niggling' in your job — CSS can be a common one for developers — make it a goal to try to master it, in your own terms and making it as fun as possible.