When I graduated from college, all I knew was C++ and a little Python. I have come a long way since then and picked up a number of resources to help me do so along the way.
How do you go about learning a new programming language? Whether it’s for work or just for fun, solving a problem or starting from scratch, there are many resources available. Today I’m going to talk about a few of the tools and approaches I’ve used to help me.
Static Language Tutorials
One of the tools I’ve used is language tutorials. Specifically, static tutorials produced by the creator(s) of the language, by some organization, or even by an individual.
At my first job out of school, I had to learn Java to be successful. Thankfully, Oracle has a pretty decent Java tutorial that helped me get started. The nice thing about tutorials is that they generally give you a broad overview of the language, explaining its features and helping you put them in context with one you already know.
Many tutorials will give you exercises and sample code to help you learn, but they lack an element of interactivity, like the next tool I’m going to talk about.
Interactive Online Academies
Something that I find very helpful about Codecademy it is that its interface includes a code editor and interpreter so that you get instant feedback about errors with suggestions for correcting them. While exercise evaluation isn’t always perfect and the exercises themselves will probably be a bit simplistic for more experienced programmers, it’s still a great resource to pick up some basics of the languages it offers.
One of my favorites is StackOverflow, which is a Q&A based platform that I have found helpful in solving specific programming problems. Many of the answers I have found there have explained peculiarities of a language I was learning, saving me the time of reading through the entire language documentation.
That’s a great way to get outside advice. But a lot of the time, some of what you’re needing to learn is either proprietary, sensitive, or internal. A tool that we use with each of our clients is GrokOla. GrokOla is a knowledge transfer engine – essentially allowing members of your team access to a private instance in which they can ask questions to project leaders (in addition to having access to project documentation, development tutorials, and a UI mocking tool). It’s a good way to collaborate with members of your team, especially remotely.
Other Resources Online
There are many other tools available on the Internet including personal blogs from other developers. We here at Keyhole have a blog that we release on a weekly basis talking about various development technologies. If you find a number of companies and individuals that align with the technologies you work with and subscribe to their blogs, you have a wealth of information in your inbox regularly. Think Thoughtworks, Coding Horror, Martin Fowler, Bitnative, and other good ones.
Learning a new programming language can be fun and challenging, and there are many different tools and techniques for doing so. I have highlighted a few of my favorites here.
What are yours? Let us know in the comments!