Undoubtedly if you are new to the computer programming scene you have been overwhelmed by the number of other people telling you how to go about learning a new language. These people might be saying things like “Go to Codecademy.com” or “Check out this online tutorial”. But what many of these programmers really miss is that people should use multiple resources in tandem when it comes to learning. In this article we will cover 6 types of resources that you should put into your learning arsenal. We also cover the idea of why you should actually mix several of these resource types together simultaneously to get an overall picture of what you are learning. Let’s dive in!
The 6 Tips in plain English
Read Books – This, by far, is something that everyone new to programming should do. If you are just starting to learn how to code or if this is your 10th programming language, you should always look to get yourself a good programming book. Books do a number of things for your learning process. First they are often the best source of complete information. Programming books are often written by multiple authors or authors who are specialists in the language they are writing about. Heck, most of these books are even written by those who invented the language! Case in point “The C++ Programming Language” by Bjarne Stroustrup. Secondly, they are well organized by chapter and have an index of terms (along with appendices) in the back for quick reference. Lastly, they can contain additional material like access to exclusive websites, CDs, practice questions or special access to the author.
While a book may be a bit outdated over time, I have found that in the fundamental ideas of the language itself may change very little. If anything a language just grows rather than changes function use (in an attempt to avoid the risk of breaking existing code). So books may stay more relevant than you think. For example C++ used in the 80’s is often still usable today. Despite this, I still recommend staying with books that are less than 2 or 3 years old. Also never aim to read just one book on a language. You should always read as many as you can since each book will give you alternate viewpoints on the same topics and help your understanding of those topics even more.
Join an Online Community – This resource is sadly underutilized by those learning a language and yet is so extremely important to their growth of your understanding. New people tend to only seek out a forum when they have a problem that has them stumped after days of trying to fix it. They ask their question and once they get their answer, they leave and are never seen again. But the value of the community is that you can constantly get feedback on your code, ask numerous questions, ask “why” and get answers that explain what might be going on with your code far beyond a simple problem. You might also have a shot at helping someone else and in that learn something new yourself.
I strongly recommend combining access to a community with reading books. You read the book, maybe it doesn’t explain something clearly enough for your liking, so now you can ask more about it in the community. The community fills the gaps in your understanding left behind from the book you are reading. It is almost like asking the book itself to clarify what it means. The community can also let you in on best practices or updated changes that have been made since the book was written.
Practice Projects – Any programmer will tell you that you are only going to get better by practicing and building experience. You can’t expect to just read books and talk in communities to understand everything you need to know about a language. You have to experience the bugs and the pains of tough problems jumping out at you. It is said that to fully master something you will need to put in roughly 10,000 hours of practice (while others refute this, they do all agree that practice helps tremendously). Be willing to practice code often without the worry that it will ever get finished. Learn what you can and toss it if need be or be pleasantly surprised when it all works out and now you have a handy new tool to use for future projects.
This resource is going to fit in nicely with reading books and your community. You read the book, ask questions about what you read, try out the stuff in the book in your own projects, get additional questions which you can then ask those in the community about. See how these various resources start working together?
Online Articles & Tutorials – Ok so you are reading books and you may have even finished one or two of them about your target language. Is that all you need to do when it comes to reading? No! While books can teach you the fundamentals and cover most of what you need to know, they may only gloss over some of the more complex or deeply specific topics. Most online articles and tutorials are written by those who are really passionate about a topic and can afford to focus on a topic and deep dive into it. They can give you an intimate perspective of how a little known feature really works or how to do something very specific you might be curious about.
This tip fits in nicely when practicing with your projects because you often run into specific situations that maybe you just don’t know enough about. The online articles and tutorials will then address that specific topic and help you get that part of your project working. Again you can combine this with your online community to get even more information. Many of the more respected members of communities are also often those who write a lot of articles and tutorials of their own. In addition, they often provide those tutorials or articles through the community itself. In a way this also gives you a chance to talk directly with the authors.
Classes – Classes you attend can be good or they can be bad. It all depends on the level of instruction and the lessons they teach you. I am a firm believer that if you have a great book and a good community of experts to refer to you don’t really need to attend many sit down classes. However, they can still be useful and may be a good resource to mix with your book reading. Classes often provide you with that immediate back and forth discussion of questions and answers that online communities may sometimes lack. Instead of waiting 20 minutes or 2 days for an answer, you get to ask the instructor immediately and get an answer right then. They may also walk through your code on a more personal level if you request it. Taking classes are certainly good but if you find yourself knowing more about the subject material than the class is teaching, you are just wasting your time.
Videos – Videos should be used with caution. I am talking about those 2-5 minute videos you find on YouTube and not the ones that are provided as part of an online course. While many of them can be good (and I am not saying you should totally avoid them) they are often put up by those who may not be much more experienced in the material than you. I have seen some short videos that just teach bad habits, are incomplete (sometimes due to time constraints) or are meant only to get you unstuck and not really there to teach you the “why” something was done. Once you get some experience under your belt I do find some videos helpful because you can quickly determine if they are leading you astray or not. Usually after a minute or two into the video you will have a pretty good idea if the video is for you.
Online videos do have their place in helping you learn and cement ideas you have already read or queried about in the online community… especially if you are a visual learner. I have been known to refer a video or two at times to help explain topics… especially if they have pretty visuals to describe the topic. Just keep in mind that the way someone shows you something may not always be the best or only way to do something. Mixed with the other sources videos can top off everything you need to get that learning down.
If you mix a combination of these 6 tips together you will find that no topic will escape you when it comes to learning something. If for any reason you see a topic being “tapped out” of information, try another resource. If a book is not covering why you use a variable at a local vs global scope, ask the community. If they don’t know, look for an article or try it in a personal project that you may just throw away later. Not all of these tips are going to be for everyone and I myself typically only use books, communities, practice projects and articles to get my learning underway. You may find the community, online articles and videos more useful as a mix. Find what works for your learning style. What I want you to take away from this article is that you should diversify your learning resources. Never count on just one resource telling you the whole picture. Through a combination of more than one resource you can fill in the gaps and master that language in no time! Do you have any other resources that you use to learn? Let us know in the comments below and thanks for reading! 🙂
Martyr2 is the founder of the Coders Lexicon and author of the new ebooks “The Programmers Idea Book” and “Diagnosing the Problem” . He has been a programmer for over 18 years. He works for a hot application development company in Vancouver Canada which service some of the biggest telecoms in the world. He has won numerous awards for his mentoring in software development and contributes regularly to several communities around the web. He is an expert in numerous languages including .NET, PHP, C/C++, Java and more.
The brain child of Martyr2, Dream.In.Code Mentor and veteran programmer, the Coders Lexicon is a website dedicated to the advancement of computer programming and technology. It offers advice, coding resources and references to cover web and desktop development.