My Secret Life as a Spaghetti Coder
home | about | contact | privacy statement
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 - 5 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 - 5 hrs

Leave a comment

Leave this field empty
Your Name
Email (not displayed, more info?)


Subcribe to this comment thread
Remember my details

Picture of me

.NET (19)
AI/Machine Learning (14)
Answers To 100 Interview Questions (10)
Bioinformatics (2)
Business (1)
C and Cplusplus (6)
cfrails (22)
ColdFusion (78)
Customer Relations (15)
Databases (3)
DRY (18)
DSLs (11)
Future Tech (5)
Games (5)
Groovy/Grails (8)
Hardware (1)
IDEs (9)
Java (38)
JavaScript (4)
Linux (2)
Lisp (1)
Mac OS (4)
Management (15)
MediaServerX (1)
Miscellany (76)
OOAD (37)
Productivity (11)
Programming (168)
Programming Quotables (9)
Rails (31)
Ruby (67)
Save Your Job (58)
scriptaGulous (4)
Software Development Process (23)
TDD (41)
TDDing xorblog (6)
Tools (5)
Web Development (8)
Windows (1)
With (1)
YAGNI (10)

Agile Manifesto & Principles
Principles Of OOD
Ruby on Rails

RSS 2.0: Full Post | Short Blurb
Subscribe by email:

Delivered by FeedBurner