Hacker News new | ask | show | jobs
by stuff4ben 6068 days ago
I like what he says about learning a new language every year and I sincerely want to do that. However if you're in a Java shop and are learning Ruby/Python on your own, how do you keep from forgetting it. If you don't use it, you lose it right?
6 comments

No matter what kind of shop you're in, you own your own machine. Use those languages for local stuff, your stuff, shell scripts and such that aren't part of the company product. Any good developer uses the command line a lot, it's the most efficient way to do lots of shit.
Then find ways to use it.

At work, my project is purely C++. But if I have to write a tool for data analysis or to test a subsystem, I'll use C# so I improve my .NET skills. Before,I used Python for that, but C# became more appealing.

Same thing at home. Web projects (of which there are few!) use PHP, everything else is C/Assembly (I do a lot of microcontroller stuff) or C# front ends using Visual Studio Express.

The important thing is to learn the concepts and structures that programming languages indirectly talk about.

If you understand the differences between the OO concepts in Java, Ruby and Python, then you'll find it easy enough to pick up the surface layer (the syntax) of the languages.

This is true but a large part of "knowing" a language is knowing its standard library, where to find the function you need, and which of several similar functions is the exact one you want. The syntax you can learn in a day, but the libraries need time.
He gives two examples in the same article; "Try to use it at work" and "Get involved in an open-source project".

If you're in a java shop and learning Python, have a look at jython and see where you can use it for testing, automation, etc. Even if only for your own local scripts.

I think learning a language that may not be applicable at work has two key benefits:

1. I learn it "enough" to know what it's good at, what it's bad at, and to have enough hand-written code to pick it back up pretty quickly (particularly if you set up a test-driven learning environment)

2. Even when I forget the language's particulars, it changes the way I see other programming languages. For instance, while I don't use Ruby in my day job yet, I still think of things I can do with method_missing and how I might approximate that same power and flexibility in my work where appropriate. In short, learning languages helps me program "into a language" rather than "in a language", to borrow Steve McConnell's terminology.

One option would be to, in your free time, get involved in an open source project that uses the new language. Additionally, that might also help build your reputation and resume quality experience.