This week's advice from
My Job Went to India is easy to follow: invest in yourself. In particular, Chad mentions some advice found in
The Pragmatic Programmer. Namely, that you should learn a new language (every year). But don't just learn
any language - it should be a paradigm shifting language. In other words, "don't go from Java to C#." Go from ColdFusion to Haskell or Java to Ruby or Visual Basic to Lisp.
To illustrate the point, Chad tells the story of the developer who, when asked about having used a particular technology, replied, "I haven't been given the opportunity to work on that." Unless you don't own a computer (which Chad says probably was the case for that developer), you don't
need the opportunity to be
given to you. You need to take some time and do it yourself.
As I said in the last post about this book,
I used to be that developer. Since then, I've improved myself considerably in Java and learned a great deal about Ruby, among other things.
But
asking "what's your new language this year?" misses the point. The big shift comes when you
accept responsibility for your own improvement. Once you've done that, instead of feeling threatened by new (to you) technologies, you start to embrace them.
Now, instead of avoiding projects in unfamiliar territory, I'm asking for them. Instead of laying down to be steamrolled by something I've yet to try, I take at least a few minutes to familiarize myself with it, like
I did recently with ANTLR. When I've got a bit of extra time on my hands, I'll go all out and even do something useful with it.
Go explore.
Now.
Hey! Why don't you make your life easier and subscribe to the full post
or short blurb RSS feed? I'm so confident you'll love my smelly pasta plate
wisdom that I'm offering a no-strings-attached, lifetime money back guarantee!
Leave a comment
I agree that taking responsibility for your own personal improvement is important but just learning new languages only proves that you can memorise new syntax.
learning more higher level skills like project management, quality management and OO design and pattens will enhance your job security a whole lote more. Applying these new skills to a new language at the same time would give you the best of both worlds and allows you to put on your resume you are familiar with the flavour of the month language.
Posted by pat
on Aug 08, 2007 at 06:26 PM UTC - 6 hrs
Hi Pat. I agree that you should concentrate on more than just learning new languages (it's why I said simply focusing on that "misses the point.")
However, don't confuse learning the syntax of a language with learning a language. Learning a language includes learning new concepts and idioms.
For instance, take iteration over an array in Java vs. Ruby:
for(int i=0; i<arr.length; i++) { ... do something with arr[i] ...}
arr.each{ |elem| ... do something with elem ...}
These are two very different concepts, even though they may look quite similar. In Java, you are breaking encapsulation by having code that knows how to iterate over a collection. You could use an Iterator to get around this, but the concepts still differ.
In the Ruby version, you are actually passing code to the each method, which does its thing and calls the code you passed in.
Now, you could loop over the array in a similar way to Java within Ruby - but if you're just translating Java code to Ruby, you haven't quite learned the language.
It's akin to me translating "me gusta Marsha" from Spanish to English as "Marsha pleases me." You've got the words right, but the translation should have been "I like Marsha" to get the right meaning.
Posted by
Sam
on Aug 09, 2007 at 08:17 AM UTC - 6 hrs
Leave a comment