First, I go through a light language overview: fundamental concepts and syntax. This gives me a feel language, whether or not I want to pursue it (I keep revisiting and abandoning Clojure), and what I can learn from it and apply to other development in other programming languages I already know. For example, playing with programming languages with functional influences (Python, Scala) has influenced how I write Java code in my day job (more static functions, object composition over class inheritance, more re-use) even if I rarely touch those influential languages. For examples of a light overview, take a look at anything on w3schools.com or take a look at <a href="http://tour.golang.org" rel="nofollow">http://tour.golang.org</a> which I read recently. I've taken notes before and it seems to provide very little value, especially if you have access to the light overview again.<p>Then you must build something to exercise that learning. If you just read and don't build, it'll slip away just as quick as it came. Solving an actual problem that you have is a good motivator for building something. Recreating something as you believe it should be is another one; for example, build your ideal word processor. Complete learning involves building things of significant complexity.<p>I would learn complementary languages to diversify skills. If you know C#.NET, time spent also learning Java is not necessarily that beneficial. They are similar. However, learning Bash for shell programming is at a different level of abstraction and is optimal for tasks that the aforementioned languages are not.