I'll cut to the chase. I'm looking for advice on how an experienced developer would convince a prospective employer that they should be considered for a position that uses another language. This is with other non-language specific requirements being met (knowing version control, OO, degree, etc...). For example an experience PHP developer looking to move to a Perl position. Is it even possible? How diffiult would it be? Is it language dependant?

EDIT: The answers that I got are proof that this communitys future is bright indeed, but sadly it only allows me to select one answer. Thank you to all that replied.

An experienced programmer should be able to take-up just about any programming language, in addition to any reasonable programming tool. If you want to move to a new language, just read a book or two in your own time, practice it at home, and then send in a resume just like everyone else.

I ain't buying it. It takes time to learn the libraries that come with a language. Will a c++ pro/php newbie be as good as a 10-year php vet? Also, going from a memory-managed language to one that is not is much more difficult than the reverse.
–
byeMar 25 '11 at 8:03

9

@NRM, why do you want to "learn" the libraries? There is always a reference available, you should not clutter your brains with such an unimportant stuff as APIs.
–
SK-logicMar 25 '11 at 8:30

4

@NRM Bad example. C++ => PHP should be an almost trivial transition. Now, trying this the other way is hard.
–
Konrad RudolphMar 25 '11 at 12:45

1

@NRM - of course a "newbie" won't be as good as a 10 year "vet." However, there are plenty of jobs for "newbies". That's where vets come from.
–
davidhaskinsMar 25 '11 at 12:46

1

The problem here is convincing the prospective employer that you can switch languages, especially getting by HR, who just has a req that says "minimum 37 years Java experience" or something equally stupid.
–
Fred LarsonMar 25 '11 at 14:49

It seems to me that you'd need a two-part strategy to make this work. First, you need to get your foot in the door for an interview. That means getting past any resume and HR filters. Any way you can work the new language keyword into your resume without lying (e.g., contributing an open-source project). Once you get an interview, you need to prove to the hiring manager that...

you can speak intelligently on the new language (especially if you're not an expert yet)

you're capable of coming up to speed quickly so you're not lagging your coworkers

I would think any sufficiently talented programmer in any language should be able to pull that off with enough patience. You'll need the right opportunity at the right company with the right circumstances to get hired for a new language. So, in short, just like getting hired for a normal job. :-)

Over about 25 or maybe even 30 years I have had to learn many new languages. So many now I've lost count. Here is a rough list.

IF I go way, way back...

8080, Z80, 6502, 8086, 80286 assembler.

BASIC (about 6 varieties).

APL (yay)

PL/1

FORTRAN 4 and 77

COBOL (believe it or not)

PASCAL (several varieties including Delphi)

OCCAM2 (heaps of fun - instant process creation)

C (lots of compilers, lots of processors, lots of strange variants)

C++

Ada (big systems and also embedded systems)

A little Perl just for fun

PHP

These have been used on all sorts of machines - little embedded systems, development boards, IBM mainframes running TSO, VAX/VMS, CP/M, DOS, Windows, Solaris, Linux, embedded systems with no OS, remote hosted development environments, on and on the list goes.

And there are a few more obscure things thrown in along the way that I can't remember (or don't want to... PL/M).

Each of these had to be learned because it was part of getting a job done. In most cases I had no experience beforehand, just a tolerant manager and a willingness to leap in and get the job done.

If learning something new is of interest to you, then buy a book, have a play, do things in your own time. If going for a position it looks good on a resume that you have done this because you are interested.

As one of the other answers pointed out, most of the time the concepts for doing mainstream stuff don't change a lot, only the means of expressing it. (Or course you can get into some very unusual languages that are no OO or procedural and this does require a shift in mindset.)

If you get the chance to do something a bit out of the ordinary as part of your job, then grab the chance while you can. Most of those things listed above I have not used for years and am not likely to use again, but you never know. One day I'd really like to build a microcoded APL machine :)

I've only ever taken one job where I already knew the primary development language, so yes, its not only possible, I always assumed it was common.

The thing to remember is that its only one langauge out of many languages and technologies they probably use. SQL is SQL. It doesnt matter if you do it in python or perl. And configuring the DB server isnt even language related. HTML is HTML, it doesnt matter if its generated by PHP or ASP. Same with XML. Sockets are sockets, they basically operate the same in all languages. OpenGL works the same in Delphi as it does in C++. The specific syntax is a small part of the picture when you look at development as a whole. Some of those skills are huge topics in and of themselves, and far more difficult to learn than a new langauge.

The point is, focus on the skills. Sure, you may not know their main development technology, but thats just one piece of the puzzle. But chances are they also use other technologies and OS's which you DO know.

As a personal anecdote, I got hired for a Java position by showing a PHP based demo.I think I got it because I knew a language from a certain domain (if it can be called that way), so I wouldn't be re-learning the complete concepts, it would just be like using a pen instead of a pencil (you get the idea right?).

I believe that what is really really important is to show that you have good software development, CS concepts and communicating skills, that you seek solutions to problems even to the most difficult ones, that you want to be helpful to your co-workers, automate and simplify their work and most importantly (to me at least) that you are humble and admit that you don't know everything and that you're willing to learn more.

It's certainly possible. I've just started a job where I'm working in ruby, javascript and go. Before I started I didn't have much experience with any of those languages.

I think the key to my success here was that in the time between the initial response and the interview, I made sure I knew enough ruby (their main language) to understand and write real world code. I think it also helped that I knew Python and C which are quite similar to ruby and go.

The company I work for didn't look for "C# programmers". Any good programmer would do as he can pick up a language in no time.

If you hire programmers with the idea of them staying for a few years then I really can't see it as a problem, they have plenty of time to learn the ins and out of the language. If they leave after a year then it's probably a waste of time.

In my personal experience, I love to learn new language but it comes to love or hate very quickly. I can fall in love with a new language the first day knows it and use it for years to come. I also hated languages from the beginning till now, even hundred of thousands if not millions programmers are using them.

So I'd advice not to command a peer programmer into another language. Instead, chit-chat about language preference during the Friday evening beer time, to discover his/her love or hate.