Jay Fields is a software developer at DRW Trading. He has a passion for discovering and maturing innovative solutions. His most recent work has been in the Domain Specific Language space where he's delivered applications that empowered subject matter experts to write the business rules of the applications. He is also very interested in maturing software design through software testing. Jay is a DZone MVB and is not an employee of DZone and has posted 116 posts at DZone. You can read more from them at their website. View Full User Profile

Language Specialization

10.30.2008
| 12662 views |
  • submit to reddit
Didn't you just totally sell out? -- Obie Fernandez @ Rails Summit Latin America
Obie and I are good friends. He wasn't trying to insult me. I was talking about how much I liked my new job (at DRW Trading), and the different aspects of the job. One aspect of my job is that I spend a fair amount of my time working with Java. I do some C# and some Ruby also, but these days it's more Java than anything else. I believe Obie was genuinely curious if I felt like I sold out since I'm not doing Ruby full-time anymore.

It's an interesting question, but it comes packed with all kinds of assumptions. For the question to be valid, I would have had to trade something I truly care about for the combination of something I did and did not like. Luckily, that wasn't the case.

Obie isn't the first person to be surprised that I'm no longer working full-time with Ruby. Truthfully, I find it a bit funny that people think I would base a career move on a language. Ruby is my favorite language, but it's not the correct choice for every problem that needs to be solved. And, languages have never been my primary concern when deciding what job to take.

My first job primarily used Cold Fusion. When I joined AOL Time Warner I gave up Cold Fusion for PHP. When I joined IAG I gave up PHP for C#. And so on. As you can see, I've never been too tied to a language. I've always been most interested in learning and growing. I love jobs that help me improve my skills.

Chad Fowler talks about something similar. In the section "Don’t Put All Your Eggs in Someone Else’s Basket" of My Job Went to India, Chad says the following:
While managing an application development group, I once asked one of my employees, “What do you want to do with your career? What do you want to be?” I was terribly disppointed by his answer: “I want to be a J2EE architect.” ...

This guy wanted to build his career around a specific technology created by a specific company of which he was not an employee. What if the company goes out of business? What if it let its now-sexy technology become obsolete? Why would you want to trust a technology company with your career?
I think Chad got it right, but it's not just companies you shouldn't trust. I wouldn't base my career on any technology, whether it was produced by a company or an open source community.

I prefer jobs that allow me to learn new things. Think of it as job security -- I shouldn't ever be out-of-date when it comes to technology experience. Think of it as an investment -- everything I learn creates a broader range of experience that I can leverage for future projects or jobs. Think of it as experimenting -- by trying many different solutions I may find ways to combine them and innovate.

I've turned down several jobs that paid more or offered comfort. I've never regretted it. Your career is long and (as Chad says) you should treat it as a business. When you look at it from that perspective it obviously makes sense to spend the early years learning and deciding which is the best direction to take.

The truth is, if you focus on one technology you'll never be as good as your teammates who have more experience mixing technologies to produce the best solution.

As I told Obie, I definitely don't feel like I sold out. In fact, one of the reasons I joined DRW was because they use Java. I've never worked with Java, messaging, or the financial domain. Having experience with those 3 things will make me better. And, diversifying your experience will make you better as well.
References
Published at DZone with permission of Jay Fields, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Otengi Miloskov replied on Thu, 2008/10/30 - 9:29am

Welcome back to the Real World!, Java Rocks!.

 

Ivan Lazarte replied on Thu, 2008/10/30 - 10:26am

Didn't you just sell out?

 That's classic.  I love how prominent Ruby advocates are basically high schoolish counter culture psuedo elitists...  

Sudhakar Ramasamy replied on Thu, 2008/10/30 - 2:04pm

IMHO for anyone with such views, it will be hard to settle down into any one technology once they've mastered it. So this is not only a way to spend your young professional live absorbing as much as possible but in actuallity it is how they function irrespective of if they are 5 years into their career or 35 years.

Unless of course your assumption is that people will tend to change their priorities as they grow in their professional life.

I'm curious to see how many senior (20+ years experience) IT professionals approach their jobs with the same views as in this post.

Martin Flores replied on Sun, 2008/11/02 - 8:50pm

Hi, I'm new here and I want to add a comment about this topic. When I was in college a professor that was a kind of CEO of a software development company told us that when his company looks for IT professionals he prefered to hire guys with knowledge in all available technologies (such programming languages, databases, networking, web stuff...), he says that: "a IT professional must be able to work with any kind of technology".

One year later, another professor (an IT manager) told us that as part to obtain a professional grade involves a specialization in a very specific field, no matter what... programming, databases, web development, networking and so on. He says that if you are interested in .Net (for instance) you have to exploit and learn all the .Net features you can, and if in the future you will have to work programming in another language (such Ruby) all your .Net experience will help to apply a similar approach to get the best of that language.

Now... what is my opinion? With the object-oriented approach now we count with several programming languages that share common features, the Java specification has been using as reference to write new a improved languages. Become an specialist in a language I think is not a problem if you can get the best of the language and can continue learning from another sources new practices. Java, .Net, Ruby, Groovy, even script languages such Action Script share commons features ("if" are always an "if"), but a good developer must research how to apply/improve patterns, performance, memory leaks, etc, to get the best of the language.

I think the huge problem is when you are obsessed to learn how to program legacy systems where you can't found any kind support from his vendor.

Shawn Hartsock replied on Wed, 2008/11/12 - 10:18am

I'm biased, but I hope this means you'll try Groovy! I am a contributor to GroovyMag.com and I share your opinion about having a broad set of skills. I think that as more developers gain experience moving between platforms projects that are like Groovy, Grails, and Griffon will allow us to bring the best of all worlds to our niches of the JVM.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.