This post originally appeared on Quora. Follow Jeff Dean there to get more answers and insights about programming trends and technologies.
To start, learn one language and developer framework well and then choose others that expand your base.
Dig in deep
If you begin with Ruby, really learn how Ruby works (with things like Ruby Under a Microscope). If you learn Rails, get to the point where you can contribute pull requests back to Rails itself. Once you learn the features of almost any modern language, learning others becomes easier because there are so many parallels. Once you know Ruby lambdas, Python lambdas are fairly trivial to learn.
Contribute to open source
Often times frameworks and libraries make use of much more advanced language features because they need to be so generic. Contributing back to frameworks is a great way to learn both the language features and also the culture around a language / framework, and because you are submitting code for review to experts in the field, you are likely to get very high-quality comments on anything you might be doing that’s not idiomatic.
Find a new tribe
Find a group of like-minded people learning that new language / framework by going to meetup.com and searching for meetups about the different languages and frameworks you want to learn next. Being around actual practitioners is one of the best ways to pick the important things up quickly – especially by seeing the types of projects they are working on. Ruby developers and Go developers generally hack on slightly different types of projects, for example.
Consider a code school
Right now, there are a lot of code schools such as Galvanize where experienced instructors choose the technologies we think are the most relevant. After a 12 or 24-week course you get into the industry with a strong foundation and it’s much easier from there.
Above all, never stop learning. Frameworks and technologies change at a rapid pace, so anyone who wants to be contributing member of a development team has to keep their skills fresh. I hope these tips will help you on your journey in becoming a programmer!