views:

244

answers:

5

Say, one is a business applications developer (database, UI, 3-layer architecture, you know) working on Java or .NET platform and not going to change his career direction.

What new programming language would you recommend him to learn to continue his professional growth and why?

+1  A: 

C, for the reasons Joel has spoken about in depth before.

[see podcast #2] for example. [1]

You will learn a lot about why you should do things certain ways in other languages after using C.

sparkes
+1  A: 

C, to gain deeper understanding of areas such as manual memory management, which in turn helps you write more efficient code in just about any other language as well, like sparkes said.

Ruby, to see what a concise, non-compromising (everything is an object) implementation of OOP looks like.

Sören Kuklau
+2  A: 

not going to change his career direction

If you are not willing to change your career direction, then your first choice would be the languages that are currently at the top or are quickly on the rise in your field. For the market you specified that would be Java or .Net (C# ahead of VB.Net), but you have those. There are not any other languages that appear to be posed to threaten those except in niche markets.

So that leaves learning a language not because you will use that language in your profession, but to stretch your overall knowledge and skills. As everyone else has stated, C would be the obvious answer. After that you could pick up any number of languages. To pick the right one, decide which areas you could use the most growth in currently. Then choose the language that will focus on that area the most.

Carlton Jenke
+1  A: 

I'm biased as a Mac OS X developer, but: Learn the Objective-C language and Cocoa framework. You'll learn what development is like on a different platform and you may also learn some things you can apply to your day-to-day development since Cocoa and other frameworks sometimes use very different patterns to accomplish similar tasks. Also, you can use what you learn to develop iPhone applications.

That's part of why I try to keep up with what's going on in the .NET world even though I'm a Mac OS X developer. It's not like I'm going to switch from Mac OS X to Windows development any time soon, but I think knowing how .NET developers work helps me in my Mac development.

Chris Hanson
+2  A: 

Perhaps Ruby or Python because they are useful scripting lanaguages and have implementations (Jython, IronRuby, JRuby etc.) for .net and the JVM that could allow you to use them as alternatives to Java or mixed in with existing legacy Java code.

Also learning a functional language like Haskell will benefit you even if you wont get the chance to use it professionally. Learning functional programming forces you to take a different perspective on the way you design your programs and there are ideas and constructs that you can bring across into your imperative/procedural programs.

Simon Collins