Skip to main content. Skip to secondary content (sidebar).

Should programmers be language independent?

As a software engineer I work with Java every day, and I enjoy the challenge of learning what the language has to offer. Although, there are those weeks when I envy the ease with which Rob, our systems architect, is able to whip out some crazy complex functionality using Ruby on Rails. This puts me in a bit of a pickle, and I am ill at ease. My goal this quarter is to learn the basic underpinnings of Ruby on Rails, but I have the sneaking suspicion that I have yet to master a mere tenth of Java’s core functionality.

The principal e-commerce MVC framework that we support is built in Java, but the mere breadth and depth of the application proves difficult to troubleshoot. The DAO layer is complicated, and modifications or additions to the database can provide a few days of “fun”. I certainly will not deny that the design pattern is brilliant, but Rob never lets me forget how much easier it is to access the necessary data with Ruby on Rails. All those built-in Prototype features are the icing on the cake.

I guess you could say I am torn between two worlds. I question the motivation behind beginning to teach myself a new language before getting an expert handle on an old language. I spent the last seven years mastering each version of JavaScript, while tinkering on the side with ASP, PHP, Java and .NET. The final leap, ditching all others for better or for worse, was in favor of investing a serious amount of time in the world of Java. However, reading some blogs and articles now leads me to believe this language dependence is a poor choice, especially in a field as furiously fluctuating as ours.

I do have a hard time believing that the vast majority of programmers are even capable of commanding multiple languages, fully understanding the idiosyncrasies of each. Naturally, the only evidence I have to support this theory, is that the number one thing programmers like to complain about is other programmers. With all the bad blood and wounded egos, there must be an intense shortage of intelligent, hard-working software engineers who understand a single language, let alone two.

Besides, how can I even know which way is the right way to develop Web sites and Web applications anymore given the number of poor opinions floating around the Web these days? The first design pattern I ever implemented was a Singleton, but even this well-documented pattern will now push a few noses in the air. It appears that sticking to the confines of a single language provides me with the greatest opportunity for success. I can more easily weed out the fanboyism, and get a solid grip on what I should learn as well as how I should be learning it.

If you are a Web developer, then I am sure you can sympathize to some degree. Surfing forums and social bookmarking sites is like drowning in a sea of server-side languages — LISP, Python, Perl, PHP, Ruby, .NET (C#, C++, VB.NET), Erlang, Java, etc. Discovering a resume pumped full of more than two or three of these is every recruiter’s dream, which proves that diversity through language independence improves marketability. Unfortunately, that says nothing about the reputation of the programmer claiming to possess this plethora of knowledge.

Programming languages do share enough common characteristics, which makes picking a new one up a little less difficult than I previously thought. I suppose you could argue that you do not need to be language independent, but more a student of languages. It is difficult to tell if a predisposition toward interpreting syntax and understanding primitive logical concepts is enough to cultivate the best in any software engineer. I like solving problems, so if I could do that with equal effort in any language it might negate the question altogether. I guess I will never really know until I try.

In the near future I will have to learn Ruby on Rails in order to support the new projects that Rob is developing. There is some resolve in knowing that I will have him to lean on for training and support, but in the present Java still beckons. I am weighing all the pros and cons as you can probably tell, and I suppose in some alternative dimension I do get comfortable enough with Java to be satisfied. During this process I would not mind feedback from seasoned professionals — you know, without the bad blood.

A day late and a dollar short... comments are closed.

01  |  August 28th, 2007 at 5:16 am

Nice post. Unfortunately the situation as is at the moment does trouble me also. There are so many languages out there it’s difficult to learn 1 since at some point you will most likely need to use another due to specific project reasons or that that specific langauge will not be used anymore. I suppsoe there’s two temporary solutions to the problem, learn as much as you can by using a number of languages as the job/project requires, or just focus on (and stay focused) one language until that becomes obsolete or for any other reason. Tryign to do everything and spreading too thinly will not do you much. I quess once you do master the basic’s of a number of languages you can further expand on these depending of what your current job or project requires.

Comment by:

Andreas Maratheftis

02  |  August 28th, 2007 at 3:29 pm

I feel your pain. My plan is to try and minimize the learning curve.

If you could somehow get Rob to meet you halfway, you could use Grails(http://grails.org) which is built on the dynamic language Groovy and follows the Rails convention over configuration scheme. He can have his syntactic sugar and you can leverage all your Java knowledge. Groovy can use any library from Java and compiles down to bytecode.

I’m stuck in between two worlds with a Java backend with an ancient classic ASP/ASP.NET 1.0 front end.

Comment by:

James Williams

03  |  August 28th, 2007 at 3:48 pm

I takes years to get really good at a language. Learn from other languages.

Comment by:

Robert

04  |  August 28th, 2007 at 5:01 pm

@Andreas

I fear sticking with Java until it is in the grave, so to speak. I think instead I will stick to it, and sample several other languages as they become “mainstream”.

@James

Thanks for the tip on Groovy. I will have to check it out… or have Rob check it out. We may already be too far into the rabbit hole at this point. So many options!

@Robert

I am in it for the long haul — I would add that it takes quite a bit of personal time as well.

Comment by:

Brian

05  |  August 28th, 2007 at 5:27 pm

I’m a Java developer at the core and understand your situation, but as web developers we don’t have much choice than to understand multiple languages and technologies. The web is evolving yet again and your going to find that companies are looking for developers with more than just one talent. Web programmers can’t afford to be language independent anymore.

Comment by:

Jason Crow

06  |  August 28th, 2007 at 5:39 pm

[...] I was reading this article today, and was a little bit peeved at myself for not writing about this sooner. The weight of the article is questioning whether a web developer should try to learn other languages? or if they should become really proficient at one in particular. [...]

Comment by:

Black Belt Coder » Language Independence

07  |  August 28th, 2007 at 7:21 pm

I guess you do “everything” in Java, you don’t do any shell scripting or Ant programming via brain-dead XML, and you don’t do any database programming or if you do the DB is code is wrapped in such a way you don’t have to know SQL…

Comment by:

Bubba

08  |  August 28th, 2007 at 11:46 pm

I understand your grief man, I’m also a java developer developing mainly web-apps.

psst.. I have bought the pickaxe ruby book, the pragmatic RoR book but yet I just only step unto the introduction page. I want to learn ruby but in the same time I want to learn java till I can call myself an expert.

Time time time. I need more time to learn it all.

Comment by:

Fadhli Rahim

09  |  August 29th, 2007 at 3:29 am

@Bubba

There will always be additional skillsets that a programmer needs — SQL, a good grasp of servers, XML, etc. — but I would say those are peripheral to learning an entirely new language, and I understand that those will always be a part of the job.

@Fadhli Rahim

Thanks. It is good to know I am not alone.

Comment by:

Brian

10  |  August 29th, 2007 at 6:25 am

@ Fadhli Rahim,

“I want to learn ruby but in the same time I want to learn java till I can call myself an expert.”

You may find that learning Ruby actually makes you a better Java programmer. Certain aspects of Ruby make you think about problems differently, which you can then apply to your learning about the intricacies of Java.

Comment by:

Curtis Summers

11  |  August 29th, 2007 at 6:49 am

I am a CS student.
I began to learn Java because I was planning to create some mobile application with J2ME.
Since then I have been learning Java,and refuse to learn a second one.
However,the question about language independent really troubles me a lot.

Comment by:

Torain

12  |  August 29th, 2007 at 7:15 am

Brain, you are a Software Engineer man! You are not a programmer alone, you are much more than that. Software engineers know how is software built as compared to a programmer (who does some course on programming). I am a software engineer too and I love java too. However till date I have worked on .NET, PHP, VB etc. And I don’t find it difficult to adapt that because all programming are the same in their bare minimum concepts. Only their way of use is different. If give a project in any language you should take a reference book, learn just the overview and get a jump start in it. Who told its all that difficult? Just be optimistic and see how it works wonder’s for you.

Comment by:

nitinpai

13  |  August 30th, 2007 at 4:53 am

Learning other languages pays dividends. One is that extra languages looks good on your resume. It shows a breadth of knowledge and passion for software development. Also you never know when the market might turn and knowledge of a new language will become the hot commodity.

The second (and most important IMHO) dividend is that learning a new language can help you see problems in a new way and might even improve your skills in other languages. For example I was originally (and currently) a C++ developer. My OO skills were ok, but learning Java helped improve my OO immeasurably. I’m dabbling in Smalltalk and Ruby for more OO improvements. I’ve started with Erlang to learn functional and concurrent programming (I even applied the Actor pattern used by Erlang in a C++ program to fix come concurrency problems).

Sure I cannot claim a depth of knowledge in that many languages (and I don’t try) but each new language learned improves me as a developer. I have found that most OO languages I can get up to speed relatively quickly, but learning functional languages is a little harder for me (I have less experience with them).

Here is an excellent article:
http://www.norvig.com/21-days.html

The book “The Pragmatic Programmer” also recommends learning new languages.

Comment by:

rstehwien

14  |  August 31st, 2007 at 5:08 pm

If another language grabs your attention don’t be afraid to spend some time learning it. It’s always good for your resume and it helps keep your mind fresh and open to new possibilities and other ways of doing things.

Comment by:

Scott Dysinger

15  |  September 2nd, 2007 at 12:04 pm

Ruby and Rails is all about the process and pleasure of development. It is the most agile language as we know it.

So even if you stick with something else it’s worth learning and doing apps with it at least for yourself.
It makes you better developer, and it makes you smile.

Comment by:

Michael

16  |  September 4th, 2007 at 5:33 am

I think one of the biggest risks to a programmer’s career is getting pigeonholed into a single language. The problem is that languages come and go, especially in terms of job opportunities. And, when they go, your career can go with them if you aren’t willing to learn something new.

Comment by:

Frank C

17  |  September 4th, 2007 at 6:59 am

“…that I have yet to master a mere tenth of Java’s core functionality”. I think there is a mix between language and APIs; if one doesn’t know 10% of the language then it would be difficult to finish a simple ‘hello world’ in Java, so I think you probably mean APIs. On the other side though, understanding the idiosyncrasies is another matter, I do agree.

Comment by:

M Ibrahim

18  |  September 5th, 2007 at 4:10 am

Thank you everyone for the great comments. I think the concensus has been, that choosing any single language without regard for any other is career suicide.

It could be that this is why the best programmers enjoy programming so much. It takes time to learn several languages, and anything that takes that much effort should be in most respects an enjoyable experience.

For those who have been “practicing” in the field for some time, an extra thank you for the advice you have offered.

@M Ibrahim

I think it is a combination of both Java syntax, and the API. There are some expert topics I have yet to touch in Java.

Comment by:

Brian

19  |  November 22nd, 2007 at 2:57 pm

[...] I was simply going to post a comment @ this blog but Alanis Morissette is telling me to make a post instead.  I’ve always been a strong believer in learning more than one language for two major reasons: [...]

Comment by:

Straw Dogs » Language Independence Makes You Stronger

20  |  February 10th, 2008 at 7:00 pm

I’m pretty good with Perl. I really enjoyed it for years, and I got to appreciate how to really use the CGI module for big forms.

I’ve also got a handful of PHP sites up. I was never crazy about the language. Sure - it’s perl enough. But it took perl to a crazy level.

In both cases I ended up with sites that I hated to deal with. They started simple and elegant, though. And now I hate them.

Then I installed the Perl AJAX module, which takes you back about a decade in implementation. The code examples are all big fat HEREDOCs. Seriously. I felt so dirty I vowed to turn the page and learn something a little more current.

I started playing with Ruby on Rails, and I am entranced. I come home and I can’t wait to get back on the computer to do more. This has been going on for about 3 months now.

So yes, I think it is necessary to learn something new regularly. You don’t have to throw away the old either.

Comment by:

Barrett Clark

21  |  April 15th, 2008 at 2:10 pm

To whom it may concern,
I am looking for someone who can write a program in Java J2ME Micro Edition or Brew. I want to be able to download the program to a cell phone. I also want the program to be GPS sensitive or active. If you are interested, contact me by e-mail at benjohn2007@yahoo.com

Sincerely,

Ben Vick

Comment by:

Ben Vick