If you were advertising a programming position for a (say) PHP developer, and someone with a great resume applied, but they were a specialist in (say) ASP.NET, and the PHP component of their CV was very light, would you still consider them for the position? Do you think that programming skills in general trump specific language skills?
Not being familiar with some technology/language is just that - not being familiar. If a person has a great resume and shows deep immersion in the technologies he has been working with and has good programming and problem solving skills he should definitely be considered. The only exception is the situation when you are need a qualified specialist right now because you don't have time or can let him learn for some reasons.
Very transferrable. For a good programmer, syntax is trivial, as long as they know where and when certain design patterns and problem solving techniques should be used (And when they are available for a language), then there should be no reason they shouldn't be considered.
Absolutely. General programming skills are the core value for any developer. In fact, communication skills may even outweigh everything else. A good programmer is a good communicator.
Programming should be about communicating as code will spend more time being looked at and being modified than it will take to write it the first time around, so it better communicate what it is supposed to be doing.
A programmer that has a solid foundation in programming fundamentals should be able to come up to speed reasonably quickly in almost any language.
That depends. If someone has a strong technical background, talent and passion it should be fairly easy to pick up a new language or domain. I mean that's the whole point of computer science - things change daily, and every good programmer should be able to adapt.
A good programmer can easily transfer between languages.
However, the catch is that a good programmer, by definition, is someone who has the skills to use a variety of languages already. If you are hiring someone that only has experience in a single language and programming environment (compiler, framework, etc) then they may not have the necessary experience, especially given that the PHP 'stack' is somewhat different to .NET.
If, however, you are hiring someone who knows Java, PHP and has some experience with Python, then this indicates they have a good range of programming experience already and it's much more likely their skills will transfer easily to ASP.NET.
That is my opinion.
Honestly, it may not seem so, but I believe that this question is almost too vague to be accurately answered. I think that much of this will depend on the specific job for which you are hiring.
If you are expecting someone to come in and be immediately productive at a high level, then you really want someone with strong experience with the language that you will be using. It's always best to have at least one person leading the project who really understands the language and how to use it without "going against the grain" in his design choices. Similarly, if the candidate has strong language preferences, and is the type that will always be lamenting your choice of languages (talking about how his fave would have made everything better), then he won't be your best choice for this role.
On the other hand, if this isn't necessarily the lead developer on the project, there may be other options. It's completely possible for a competent PHP developer to come in and assist with a Java project and vice versa. A strong developer with good general skills will be better than an average PHP developer in many respects. The challenge there, as always, is in assessing their skills and whether or not they will be able to adapt quickly to the new platform.
I'd like to add the caveat to the other answers here that while programming skills are valuable and transferrable, HR departments may just trash your resume because you don't have the 'right' stuff on your resume. If you then proceed to solve that problem by putting a language on your resume you're not ready to answer interview questions on, you probably wont impress the people interviewing you. It's catch-22 and a pretty big problem in hiring at some firms, which sucks for the firms and for the people who want to work there and for the people already working there.
I would say that in general, being a good PHP programmer means you have a very good chance of becoming a good ASP.NET programmer should you spend the time leaning it. Being able to program is a talent, and learning a language is mostly training. Having that said, I believe there's much more than being familiar with the language's syntax. A good programmer should have a good understanding of the available frameworks, libraries, language-specific practices etc. A ASP programmer can write PHP code after reading a good PHP book. But in order to become a good PHP programmer, a much deeper understanding is needed, and that understanding comes mostly from experience.
So, it all goes down to this - a good programmer can probably learn most languages. Question is, would you pay for making him an experienced programmer?
Agreed, a good programmer can transfer between languages.
But, no matter how good you are, a new language/paradigm/mindset takes some getting used to. If I were hiring a java dev. and had a c++ dev who was 'smart and got things done', I would have to have a very compelling reason to hire him/her over someone with java experience, considering that 'familiar' and 'productive' are two different things.
In a nutshell, if I needed a senior, the person with the relevant experience wins over someone who is familiar with the syntax. Junior, maybe then there is some leeway.
As long as the transfer is between programming languages of the same paradigm, I think it is easily transferrable. Converting a C programmer to a Java programmer is quite hard, and a lot of teachers I know prefer students without any background to those with "C" type background when learning java.
PHP and ASP.NET may be similar, but PHP and C# are very different, and if you are using C#3 then there is a very sharp learning curve. If the programmer can just do front-end work then it won't be a big deal.
Now, how transferable is knowledge between languages is different, as it depends if the language is the same type of programming (structural, functional, object oriented). A great C programmer may not transfer his knowledge to OOP or FP, for example, as the way to approach the design is so different.
The tricky part about those high level languages is the "class library", it takes some time to get use to what "built in" functions you can use. (you don't want to reinvent the wheel).
But if you only look at the language it self, since most languages are related to each other in some way a guy that knows 5+ languages has a advantage over a guy that only knows one language.
And if you boil this down to a recruitment, it is a question about how long do you plan to keep the programmer? Is he hired to do a quick job, say 2-3 months or do you hire a new programmer that you want to keep 3+ years?
The multi language guy will probably be better in the long run but it will take some time to get him up to speed if he don't know this specific language....
/Johan
If you have given yourself a good education in programming yes. By that I mean you've done lots of programming, learned what the cpu is doing at a low level, understand algorithms and runtime complexity, and are good at solving problems.
I think some languages still have a long learning curve. You may be able to drop into a team of C++ programmers and help them without any experience, but you'll certainly butt against its dark ugly corners often.
High level languages like sql or python may look very easy to get into, but people with years of experience understand the tricks, undocumented features and pit falls that are not obvious at face value.
The skills are easily transferable, but what makes a person great at a particular language as opposed to just okay at it is their in-depth knowledge of that language's quirks.
Every language has its strange idioms that one can only pick up after working with the language for some time. Being skilled in another similar language really doesn't help with that at all.
Even for someone who knows ASP.NET like the back of their hand, the first time they switch over to PHP, there's still going to be a substantial "WTF" phase that they have to get over, during which they'll produce some pretty nasty code. It might be working code, but it won't be easily maintainable, and probably won't integrate with the rest of the project very well.
Wrong question, I think. It's how transferable are programming skills between frameworks. An asp classic developer and jsp developer can probably read and write each others code. Same for Java Server Faces and ASP.NET. As I know from my current project, a C# winforms developer may have a hard time transferring his talents to a C# ASP.NET project. Syntax is such a small part of mainstream programming languages (I'm exlcuding oddballs like Prolog and F#, which have a fundamentally different approach to code than the family of curly-brace langauges)
One of the things that shapes my attitude towards any technology (/platform/product/language) is how specific the learning experience is. I have colleagues who are hugely knowledgeable in MS Access, and have built a huge variety of bespoke business systems over the years (of variable quality). But despite this, they know next to nothing about sql. If they had spent three months maintaining a small PHP/MySQL site then they'd be in a much better position (skills wise) to at least start looking at Informix/Sybase/SQL Server/etc systems.
Beyond a certain point though the cost of learning new techs probably fades. Switching between PHP/VBscript I found quite irritating when learning both since simple changes in conventions (e.g. use of ";") added that little extra annoyance not needed in the learning process. More recently I've had to switch between C#, Perl and VBScript quite a bit and it just isn't an issue - you follow the rules of each grammar without thinking about it.