I don't know if this belongs here but I am just wondering what are the differences between these two coding languages and what benefits do they offer. I am new to all of this so please dumb it down for me =).
Python is easy to prototype behaviors and models.
Google is your friend, though:
https://spreadsheets.google.com/pub?key=p7efJLoHuYE-iw6JxBmpSQg&hl=en
You might start out by telling us why you are choosing those two languages to compare. One is a scripting language native to *nix systems (MacOS X included), the other is a compiled language (C#) plus a set of frameworks (.net) that is native to Windows. .net is almost exclusively windows (Mono does parts of .net). Both are available on the other platforms, but things get hairy/complicated.
Keeping us in the dark about why you are comparing this just means you get bad answers.
If someone really is an 'expert coder', then a lot of that skill will be in their understanding of computers, algorithms, libraries etc. - and this is all transferrable knowledge that will significantly shorten the amount of time it takes for them to learn another language.
Is the .net being coded as server code, or visual/screen based code? I'd expect screen based code to be a bigger stretch for the Python coders - server based stuff probably more similar to what they're used to.
A lot of language learning these days is about learning which libraries to use - as languages such as Java/C# etc. are heavily reliant on them. Most core languages popular today share a lot of syntax with C as an ancestor, so learning the 'core language' often isn't the problem.
Another thing to think about is that noone these days codes in a vacuum. You often don't need exhaustive knowledge of a language to piece together example bits of code, and alter already existing modules.
I've often seen people 'test' programmers at interview by giving them some gnarly grammar questions. No-one codes from first principles in most business settings - you always modify an existing shell, or similar code (it would just take too long otherwise). So while your C# people may be right that it would take a long time to reach 'expert level', someone who can code well in another language could be productive and useful in a relatively short period of time.
The .net is server & visual/screen. I understand that if someone is an expert programmer in any language (Python for example) that they can pick up another language at a faster rate than someone with 0 experience trying to learn at an expert level it just wont be overnight or within 6 months (I would presume, correct me if I'm wrong here).
TWe have 4 developers on staff, 2 know Python and 2 know C Sharp.net. The C Sharp.net developers say it's impossible for a Python coder to pick up Python quickly, efficiently and in a time sensitive manner as an expert while the Python guys say it can be done (none of this has been tested to prove there arguments so basically I need an answer from a different source aside from these guys).
What other languages do these developers know? How well do they know those languages?
I think there are basically 3 levels of language knowledge:
1. Needs ongoing guidance and assistance.
2. Can work independently, given a goal.
3. Could teach someone else the language.
There's a lot of gradations within each level. The latter 2 levels imply that the person is also sufficiently self-directed that they can learn new things without having to be taught them step-by-step.
There's also a 4th level, which is the ability to teach someone else in multiple languages. I don't think you can really call anyone an expert in a single language until they know some other language really well.
Exactly what is your goal here?
Are you trying to decide which one of the two pairs of developers have to learn the other's language?
Why is "expert level" needed? Why not simply a productive level?
This reiterates firestarter's question: How much skill is enough to be productive? One doesn't need to be an expert simply to be productive.
If you already have 2 experts for each language, why not let them provide the guidance after the other pair has achieved a productive level of skill?
OK, well if that's the situation, then why would you bring in Python developers to do .net?
A lot of the unproductive time in a project is accounted for by developers coming up to speed with your environment, the problem domain, clients, existing system etc.
If you had 2 productive Python developers on site, then they're already 60% of the way to being productive in another language, because they know all this extra stuff already. In that case I'd say, let them go at the .net.
If you're bringing in fresh developers who you haven't worked with before, they wouldn't be 100% productive from the get-go, even if they were 'expert level .net'.
But if you're planning on bringing in contractors who aren't familiar with the environment, apps, systems etc. and then you're planning to train them in a different language on your dollar, that makes no sense at all.
The fact that you're talking about contractors changes things a lot. If you had to finance some down time as your own staff learnt something new, then it's an investment that may be worthwhile. Training a contractor? Not so much. Get the agency to send you some .net guys.
I'd also like to disagree about calling a single person an expert without knowing a second language. You can be an expert with only knowing 1 language, nothing proves otherwise.
My guess is they would be picking up .net as they went.