Which is better, Java or C#?

Hi

I am sure this must be a debate many developers have had over the years. I want to know which one is better and why?

The best tool is the best tool for the job. The End.
 
The best tool is the best tool for the job. The End.

This.

It's all good fun to be a bit of a fanboy and dish out some tough love to other fanboys, but when it comes to decision time you have to pick the right tool for the job.
 
Definitely. They may know several, but typically there is one that gets used the most.
Although all developers have a preference for 1 or 2 languages, when it comes to client / server type applications, more than one language will always come into the mix, for example: C# for Windows phone, Objective-C for IPhone, Java for Android, and PHP for JSON server API.

In the case of standalone applications my language preference really depends on the platform:
1. Windows = C#
2. iOS / OS X = mix of Objective-C, C++ & C
3. Android = Java (but recently I've been leaning towards Apportable to try to share a common codebase with iOS re they are the 2 primary mobile platforms). Xamarin btw has also done a great job extending C# across all 3 (just not my preference).

So yes, all developers have a preference, but any good developer would not try to push the envelope too far by using 1 language for everything.
 
[)roi(];11415851 said:
Although all developers have a preference for 1 or 2 languages, when it comes to client / server type applications, more than one language will always come into the mix, for example: C# for Windows phone, Objective-C for IPhone, Java for Android, and PHP for JSON server API.

In the case of standalone applications my language preference really depends on the platform:
1. Windows = C#
2. iOS / OS X = mix of Objective-C, C++ & C
3. Android = Java (but recently I've been leaning towards Apportable to try to share a common codebase with iOS re they are the 2 primary mobile platforms). Xamarin btw has also done a great job extending C# across all 3 (just not my preference).

So yes, all developers have a preference, but any good developer would not try to push the envelope too far by using 1 language for everything.
And most companies will have a team of iPhone programmers, team of Android programmers, frontend developers, backend developers and so on. Companies will also steer new programmers to whatever they know best unless they really need them in a different group. And once in a particular group time constraints will invariably mean little opportunity to move around. Thus the reality is that while these programmers might know the other languages they will use them only rarely, so they do end up specialised. It's simply not a choice they really get to make.
 
And most companies will have a team of iPhone programmers, team of Android programmers, frontend developers, backend developers and so on. Companies will also steer new programmers to whatever they know best unless they really need them in a different group. And once in a particular group time constraints will invariably mean little opportunity to move around. Thus the reality is that while these programmers might know the other languages they will use them only rarely, so they do end up specialised. It's simply not a choice they really get to make.
True, but that still doesn’t cover a clear distinction between good vs. average programmers.

Corporate’s will always tend to avoid filling their teams with any particular resource that is deemed irreplaceable or difficult / costly to replace i.e. it is far easier to find developers who are skilled in a single tool. This choice is led by a Corporate HR policy: to pick candidates based on a job specification that prioritizes future replaceability over quality of deliverables.

Much like a junior carpentor will never be masterfully proficient after only using one tool, so is it the same with most pursuits.

Now I’m definetly not saying teams can’t be successful in delivery solutions; rather I’m indicating it’s less likely, in as much as it’s difficult to conduct a symphony i.e. one weak proponent can be the difference between producing a masterpiece or an ear-sore.

With a symphony it’s the composer that holds the entire thing together (from conception). In corporates the lead position is often referred to as the System Architect; yet because good quality SAs are difficult to source, you'll often find that this gets delegated to system analysts (positions that typically require no in-depth system and/or programming comprehension); in these cases, detail design falls to the programmers (yes the ones selected on a job specification prioritized for "easy replaceability")

It’s important to understand that not everyone will be capable of becoming master carpenters, composers and/or master programmers; as this typically requires an individual with a high level of aptitude and proficiency in more than one tool.

We all know too well that is not the amount of code one can produce is a given timeframe, but rather the quality of code &. data structures that is most desirable.

In the programming world; the few notable successes tend towards leadership from a very proficient programmer.

Coming back to the OP; it's always advantageous to get to know both, you'll be a better programmer for it.
 
Last edited:
For the "do good developers specialize in a language?" debate: Sometimes yes, sometimes no - it's completely incidental. Picking up a new language should be fairly trivial to anyone who considers themselves a good developer. A few years ago, I specialized in C++. For my new job, I work in several different languages - does that mean, I'm less likely to be a good developer now? I doubt it.

For the "C# vs Java" debate: They have there strengths and weaknesses for different types of applications. It's always the same judgment call with choices for languages and technology: What is the best path to a solution, factoring in the cost of ramp up time for learning new technology vs. the cost of using a potentially suboptimal solution, and the future utility of learning those skills vs. the impact of potentially taking longer to finish the task/project. There are also second order considerations, such as factoring in time to do such evaluations.

in other words, the right answer is "It depends". The right question is "What does it depend on?".
 
The answer to the OP, is at this stage in your life, it doesn't matter. Just flip a coin. Heads java, tails C#. And if the result doesn't please you, then choose the other option :)
 
The answer to the OP, is at this stage in your life, it doesn't matter. Just flip a coin. Heads java, tails C#. And if the result doesn't please you, then choose the other option :)

Easier said than done zippy. Companies want experience and exposure to certain technologies that I simply don't have.
 
Easier said than done zippy. Companies want experience and exposure to certain technologies that I simply don't have.

Every body started with zero experience. Everyone was a newby was initially only trusted to run some queries build boring crappy reports until they proved that they where reliable.

How long have you been working in IT?
 
Top
Sign up to the MyBroadband newsletter
X