August 14, 2012

Back To The Source

As a developer fairly new to web development and scripting languages, I often had to rely on tutorials, screencasts and guides to help me achieve certain tasks. Tutorials and the likes are definitely the best point to begin, but I have slowly learned the importance of being able to dig into the source to figure stuff out.

Most of the open source code that I have found on GitHub is pretty well written, with decent documentation. I have often found a related resource on the web that helped me understand how to use that particular package, or better, I have found it explained well enough in the documentation itself. However, at the slightest of mistakes, I tended to feel a bit lost. Luckily, I am not the only one who commits mistakes in this world and at that point, I used to move to Stack Overflow or other blog posts to find someone else who had the same problem. I used to correct the problem based on their solution and then off I went, tackling other problems.

This approach had significant flaws. I was becoming over-reliant on the documentation - something that is known to be out of sync with the code(most of the time). Also, relying on too many secondary sources like tutorials and screencasts generally doesn’t give the full picture of what the code can do and what it’s limitations are. Finally, learning to code is not all about writing code. There’s a significant reading aspect as well which everyone tends to neglect.

I remember that most of my learning about C++ didn’t come from books, but from reading other peoples code and incorporating the best of their ideas into my own code to make it better. As I transitioned to a web developer, I wasn’t able to understand complex production-ready code in the first go. It was way easier to progress with tutorials and for the sake of speed, I did so. However, now the tutorials have started to fall short for me in their coverage and depth. Hence, I got more interested in understanding the internal workings of the code I use. I went back to the source.