Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I can program in Java, C#, C, Scala, and Javascript fluently. I'm comfortable with Objective-C, but I don't remember the conventions used for memory management. I can read Python and Ruby and I've written scripts in Ruby. I was given the task of writing a job posting. Our application (Hansen) was built in C# (not by us) and it uses some event triggers written in Visual Basic. My group has used C# to build programs that interacts with Hansen through Hansen's web services.

I wasn't specific on the technologies we need. I felt listing specific skillsets (knowledge of C# and IIS and Oracle) were a barrier to entry that wasn't necessary. My junior co-worker (by two weeks) felt that we should be focused on .NET only. Our managers are hiring for an entry level position. It started an argument where he takes the belief that we need C# and that a Java trained guy couldn't possibly adapt. I counter that there's not an infinite amount of knowledge in a programming language and that there's new languages out there and that it's fairly easy to pick up a programming language if one has knowledge of the functional programming world (C# added anonymous functions and generics and Java added anonymous classes and generics because of pressure from that world). Our code is better off by having it.

I've had this discussion before when I was working in a Java group within my department. I just don't think there's an infinite amount of knowledge in a programming language or a programming platform. I think someone comfortable the JPA can adapt to LINQ and to ADO.NET. Am I missing something in assuming that programming languages don't have any infinite amount of knowledge and that four years of experience dedicated solely to C# doesn't automatically make one a better programmer?

share|improve this question
    
I think it's more a matter of motivation, If they really want to learn about the differences and how they can use the unique parts of C# to make the appliction better they will. However it's not easy for somone to change their point of view if they're used to doing things a certain way. –  Daniel Little May 1 '12 at 5:46
1  
My feeling is, that as long as a programmer has the basics of software developement/CompSci under their belt then they should be able to switch between languages as and when necessary. Imagine a plumber who has only ever used one type of wrench - they've used that wrench to fix all kinds of plumbing problems for 5 years. Then they are given a completely different kind of wrench... one with a hammer on it (as a stupid example), that plumber can use their previous knowledge to figure out how to use the new one. It's a bad example, I know. Can you tell that I don't do plumbing? –  Jamie Taylor May 1 '12 at 8:06
    
My personal view is that anyone who cannot adapt to learn a new programming language simply is the wrong person for that job. If I was required to learn JavaScript I would have a hard time, at the sametime, I don't come from that sub-planet that is a scripting language. I know this about me which is the reason i would request another position or task, the barrier to learn JavaScript for me is great, the barrier to learn Objective-C would be very low after a single course on the subject. –  Ramhound May 1 '12 at 13:17
2  
Nobody knows any programming languages when they are born. If you could learn Java, you can learn C# too. –  user1249 May 2 '12 at 5:53
    
Functional programming is not equal to anonymous classes and generics. F# or Haskell is closer to pure functional programming. For example, see programmers.stackexchange.com/questions/145866/…. Functional programming requires totally different mindset from usual imperative programming languages such as Java or C#. –  Mikko Rantalainen May 3 '12 at 11:12
add comment

6 Answers 6

up vote 1 down vote accepted

Am I missing something in assuming that programming languages don't have any infinite amount of knowledge and that four years of experience dedicated solely to C# doesn't automatically make one a better programmer?

C# is a different way of spelling Java (Not quite, but pretty much). If any developer knows C# then they won't have too much of a hard time going for Java or Java to C#.

More importantly, Learning will give a valuable perspective into the way you code in C#, because in spite of their many similarities, Java and C# approach many things differently. As per my opinion, programmers are who have more skills and can demonstrate they can pick up more languages are more valuable.

As per my opinion beginner will take more time to understand the concept of the programming language and programming skills rather then experienced developer who know the programming tactics and logic mindset to solve the problems. According to me Logic matters rather than syntax of programming language.

I am agree with @dasblinkenlight last statement that "programming language is just a tool. The programmer who is using the tool is a lot more important than the tool itself."

Programmers are programmers, is methodology, paradigms and experience what matters the most, not the specific language you're programming with. Even beginner can start with these practice easily but concepts of OO languages never change, it will benefit the other language programmers with some experience of code.

Here are some reference that somewhat help you to understand regarding this question:
Transitioning To Java
Switching Programming Languages
Moving from C# to Java
Should we choose Java over C# for a new project?

share|improve this answer
add comment

No, you are not missing anything: Java programmers can and do adopt to writing C#, and they do it reasonably quickly. Moreover, junior guys often have easier time adopting to new patterns, because they have spent less time practicing the old ones.

I went to C# from Java in a few months. It took me a day or two to get used to the new syntax, learn the new documentation style, and figure out what are the equivalents of mutable strings, hash maps, array lists, and so on. After about two month, my first C# code went into production, and we had little trouble with it ever since (a habit of writing lots of unit tests acquired in my Java days has helped with the "ever since" part).

Moreover, the language can and will change in the future. Programmers who were previously exposed to other languages will have an advantage when adopting to changes in the language, because they went through a very similar experience before.

Everything else being equal, I would prefer a stellar Java guy to a so-so C# guy. At the end of the day, programming language is just a tool. The programmer who is using the tool is a lot more important than the tool itself.

share|improve this answer
1  
While I agree with this (and other) answers, I would still include the language that the job uses in the job posting since candidates will want to know that, even if experience in the language is not a requirement. –  Telastyn May 1 '12 at 11:49
1  
@Telastyn Absolutely! Posting the language is definitely a requirement: not all candidates are open to learning new languages on the job and switching away from the technology stack with which they are familiar the most. Even the ones willing to switch would unlikely appreciate learning about it during the interview. –  dasblinkenlight May 1 '12 at 13:10
3  
@dasblinkenlight: It's not even so much about switching to or learning the language... some people know certain languages extremely well, and never want to work with them (again). –  Steve Evers May 1 '12 at 20:02
add comment

tl;dr. ASP.NET experience won't be any more valuable to you than any other coding experience.

The differences between C# and Java are TINY; any reasonably good programmer in one could take up the other and be functional in less than a day.

The libraries are larger, but even those if you've got an existing codebase to draw from... well, it took me a couple of days to figure out JSP by being dropped into an ongoing project. Some of the things in ASP.NET might take a week or two-- data binding, knowing all the kinds of templates, stuff like that.

The most difficult thing about learning to code in your codebase is likely to be your company's specific procedures, and learning the particular warts that your code has. That stuff is all language-neutral; an ASP programmer is going to have just as much trouble remembering that All Date Variables Must Begin With "time," or whatever, as a Java coder.

share|improve this answer
    
"...any reasonably good programmer in one could take up the other and be functional in less than a day." Well, maybe not functional... they're mainly geared for OOP after all. :P (tongue in cheek) –  Mehrdad May 2 '12 at 6:22
add comment

I agree with what I think you're trying to say. In most cases, knowledge of individual programming languages is secondary to knowledge of how to solve problems. Somebody who's fundamentally a good programmer can pick up another language fairly easily as a rule.

Even the best are likely to have a bit of trouble if you try to get them to make too big of a jump at once. Trying to jump directly from BASIC to Haskell would be a bit like asking somebody jump across the Grand Canyon. Going from C# to Java (or vice versa) is more like stepping across a crack in the sidewalk.

share|improve this answer
add comment

It depends on the answer to the question "Is there infinite number of software paradigms?" Personally I believe there is. This is because unlike many other areas (materials, mechanics) you won't find such thing as software in nature. It's fully human mental entity. And seeing how much was "invented" in mathematics for last decades (where many parts had also sources in human brains), we (and our descendants) will probably see increasing amount of knowledge in programming languages.

share|improve this answer
add comment

Absolutely not, beyond a point most languages are transcendental. As in the same algorithms, data structures and design patterns do not significantly change. Each language may edge the other over something, but then lag behind on other factors. C# and Java tend to be very similar with some differences of course.

The question is efficiency, a guy who has been doing C# over a year vs a guy who has been doing Java over a year can come into your enterprise and perform better than the Java guy since he knows his way around. The java guy, will naturally have to spend sometime getting up to speed with this. But you are missing you by specifying languages , in which case I say you should do a contract hire, where you get a guy who is specialized in a language. Most software engineers should be tested on computer programming concepts and there skill set in the language they are good at and a look at the portfolio and coding samples. They should be able to adapt to whatever language that comes there way, which is what I would do if I was looking to hire someone for the long run. If I need somebody to walk in execute a few projects and leave (or stay if I like him/her) within a very specific time frame, then I am looking at a guy who is really good at the specific language.

Hope this helps!

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.