tags:

views:

936

answers:

11

We are in web era standalone applications are almost gone everyone wants their internet application to run inside browser, programming languages like Ruby, Python and scala are becoming more and more mainstream.

Sometimes I wonder what these programming language offer which make them top choice of IT companies, if I plan to become a freelance web developer is it worth learning C# or Java. I read beginner's book for both of them, but to master any of them require some time investment.

+11  A: 

Truthfully, it doesn't matter. Lots companies use one another, some or even all (depending on the size of the organization). You'll find work no matter which one you pick.

if I plan to become a freelance web developer is it worth learning C# or Java

Sure, it's always good to know at least a little about it, especially if you are going to be a contractor. You never know when something might come up.

The real truth is that you'll get work eventually based on who you are and not what languages you know (although that can help). You'll start to get a reputation and people will seek that out.

Heck you want to talk about learning obsolete languages. Sometimes those are the people who get paid the most, because no one else knows them, and will never be out of work in the foreseeable future. I'm not saying this is true all the time, but I know several people who are experts in "legacy technologies" and make a killing because the several consulting firms (not saying all) hire people just out of college who think knowing C means they got one on there last term paper in college. For the record I don't mean that C is by any means obsolete. I just needed something to make a joke on :)

Kevin
And with my upvote, I suggest not only the OP learn either but both with the "advantage" of being at the cross-roads. I'm "stuck" in C# at the moment and loving it, but I know an employment transition from one to to other is harder after you know one well because your expectation of same renumeration will likely not match expectations.
John K
...however, "light" *frameworks* in languages like Python(Django) and Ruby(on Rails) **will** help you as a freelance developer.
Aviral Dasgupta
But I want to master only one, Mastering a programming langauge take some time. I want to be productive in any one of the programming language to be successful in web development. Ruby,Python,Scala,C# or java.
Dhawal
At the risk of sounding cliche, you'll never master one language until you know several.
drharris
@dhawal, @drharris is right. Learning stuff about lots of languages helps with mastering the one you want to focus on. In all honesty, over the course of your career, you going to have to master several languages. It just happens, languages do go out of vogue eventually, or you may get bored with one. In this field you'll most likely never be able to say "I'll learn just this one" and then stop. Really, it's what makes this field fun.
Kevin
-1 for "you'll get work eventually based on who you are and not what languages you know" It's hard to be a consultant and got a job just based off who you know.
Nate Zaugg
Really? are you serious? That's really what being a consultant is about. I have a list of people I would hire, because I know they are smart and get things done. They'll learn the language they need to know without problem and I'd take them over most people who'd been programming in the language for years.
Kevin
You would be foolish to take someone you know over someone you know is qualified. http://en.wikipedia.org/wiki/Cronyism
Nate Zaugg
@nate, You just proved my point. I know the people I worked with before are competent programmers. I know what their capabilities. I know they can find the answer. I know what their real experience is. Just because someone lists on their resume 5 years of x. It doesn't mean anything except if they aren't lying the showed up to work for 5 years and maybe used x. I don't know anything about them, even if they interview well, they may have been lucky that I didn't ask the right question. That is why it's better to hire someone one know that's smart over someone who says they are.
Kevin
@Kevin: I'll agree with you to the extent that if their skills are congruent with the job to be done and you already know they have the aptitude and work ethic then it may be better to bet on that guy, but this maybe the case half of the time. I'd never hire someone who had the attitude of "I can google it!" For example, if I was hiring someone to write a kernel mode device driver, I will hire someone who has done some device driver development. No amount of googling or aptitude by the inexperienced is going to produce a device driver that is reliable and stable with the same budget.
Nate Zaugg
@nate I would agree with you in that case where you need a very specific skill set, but most places don't need that level of ability. Most development, especially what the poster is talking about, is CRUD development, where a very small subset of a language is actually used, and the basic skills of reading data, parsing text files etc., is more or less similar. There are differences, but in these cases, it is quite easy to Google the answer. For people who've been programming for a while picking up pieces of a new language isn't that difficult to do with a little bit of reading etc.
Kevin
@nate my example is this. I would much rather pick say a Java programmer for a C# job who I know can write parsers and compilers, and understands system design etc. over someone I just met and doesn't show these skills anywhere on their cv especially if I know that the Java programmer will immediately start heavily learning C# the moment he got the job. Skills like those can come in handy and take time to learn, where using the basics of a language is not nearly as difficult.
Kevin
A: 

Depends completly on what you want to do.

More mainstream web-apps I would say C#. For heavier business apps I would say Java.

More info is needed to give a good answer. Isn't this community wiki btw?

Oskar Kjellin
I wants to know whether its worth investing time in learning Java or C# and mastering any one of them, or its good to master ruby and html/javascript to be successful in web development.
Dhawal
See some suggestions here in accepted solution to answer your question: http://meta.stackoverflow.com/questions/392/should-the-community-wiki-police-be-shut-down/7183#7183
John K
@Dhawal A good understanding of html/javascript will be useful for all of those, regardless of which you pick. When you get into it you often need to understand and/or override the html/javascript that is rendered.
AaronLS
HTML/Javascript is very important to master for any web developer, but I am looking for good back-end programming langauge to master. Lot of guys would have choose java few year back but today situation is confusing as ruby,scala,groovy ect. looks more tempting.
Dhawal
+4  A: 

standalone applications are almost gone

Far from it.

if I plan to become a freelance web developer is it worth learning C# or Java.

C# and Java are definitely still relevant web languages. It's true that a lot of rich client side applications are being written in Javascript these days, but you still usually need a server at the other end to feed the data to the client. The server is often written in C# or Java (with PHP being another popular alternative).

Mark Byers
For server side I notice many high traffic gaming website and social networking websites are written in dynamic languages like ruby,python,scala..ect. these languages are different from java and C#.
Dhawal
@Dhawal: Many high traffic websites are written in dynamic languages, but many other high traffic websites are written in static languages. For example, StackOverflow is a high traffic, social networking (sort-of) website, and it's written in C#.
Daniel Pryden
@Dhawal scala is not dynamic
Jeriho
+1  A: 

Yes. As in, learn both. Learn all 5 you mentioned. Yes, corporations and HR departments may think they need a "Java guru", or a "C# Wizard", but the good companies are looking for people who know how to program, and know how to do it well. If you limit yourself to a single language, you don't become an expert on programming, you simply become an expert on an API. Learn many languages, learn what makes each good/bad, and learn which ones are better suited to particular problems. Java and C# are good places to start because both have good job markets, but don't limit yourself. Learn as many as possible, and how to move among them at will. Your future self will thank you for it.

drharris
Well I will learn each language I mentioned, but being expert in any one of them will help me becoming more productive?
Dhawal
Not really. The amount of time it takes to become an expert in a language is far, far greater than the amount of time it takes to learn a new language. Learning a new language can show you a new way of doing things, lessons which you can take back into your main language. For example, only spending time in C# may make you really good at learning the .NET API, but if you went into Ruby for awhile, it may show you how to better approach problems even in C# to make your code look more natural. Limiting to a single language almost always makes you a worse programmer, IMO.
drharris
Agree on that, I am in no mood to limit myself. But wants expert at least one language and know rest of them. Being expert in one of them will make me more productive I belive.
Dhawal
+2  A: 

An hour ago I've asked a similar question. You may find the answers interesting.

Dave
+6  A: 

At the time of writing Java is currently number 1 on the Tiobe Programming Index and C# is 6th, so of course they are still relevant.

mR_fr0g
As for me, I don't believe in this index anymoe. Just look at the second position! Who are those people programming C (17%, simply nonsense)? Are there THAT many nix core developers? Or people, who were participating in the poll, are confusing C with Objective-C?...
Vasil Remeniuk
@Vasil: C is not only used for kernel development. A lot of embedded programming is done in C. (Microcontrollers are usually programmed in C.)
Jochen Walter
@Vasil Don't forget that C is still used for hardware and embedded systems. So as long as there are new devices being developed, there will probably still be people writing C.
AaronLS
Well matter is not C# is popular or Java, actually its easier for Java guy to master C# or vice-versa, I know basic of all languages I mentioned in my question. What I want to know more specifically is which set I must choose to be more productive in my work, is it wise to learn either java or C# today when top websites using Ruby,Scala ect.
Dhawal
Probably no confusion, since Objective-C has its own listing. And C still outperforms any of the trendy interpreted or VM-hosted languages. There's a *lot* of embedded systems work going on, and it's almost all C or C++.
TMN
C# + VB > Java? That would be interesting to know.
Nate Zaugg
Just because you don't use a language doesn't mean that there aren't other people using it. There are probably people out there making a good living off languages you've never even heard of.
Slapout
@Vasil: Anybody doing number crunching programming (image processing, matrix transforms, physics simulations, scientific modeling, 3D graphics) is almost certainly going to be doing it in either Fortran or C. Yes, even today. You are not the universe: just because *you* aren't using C doesn't mean nobody is.
Daniel Pryden
@Slapout: Working in the inner-bowels of the corporate IT world, you learn that a large percentage of professional programmers program in [RPG](http://en.wikipedia.org/wiki/IBM_RPG) or [CL](http://en.wikipedia.org/wiki/AS/400_Control_Language). Most of the ones I've met know no more about computers than the average user, and wouldn't use a search engine to diagnose a programming problem (you can forget about them visiting Stackoverflow).
BlueRaja - Danny Pflughoeft
+1  A: 

Learn C# first. It has a good user experience for both web and windows programming (very similar). Of course my opinion is not unbiased! :) I've just never seen a Java equivalent of WPF and I really like WPF!

Nate Zaugg
A: 

if you plan to become a freelance web developer, your best chance is PHP.

irreputable
A: 

My background - Soft Eng graduate. Did projects in C# (The course focussed mainly on Java and C but I really enjoyed C#)

What I found about C# is its great for corporate type projects. It can quickly become really bloated and horrible, one application was using 800mb of RAM. This isn't a reflection on the framework itself but rather the people doing the system. What I loved about it was that MS were always updating it with things such as CCR and DSS...

Flash forward 18 months. I move jobs and get a mac... no C#. So I go back to the realm of java, use some scala and ruby. I'm now an apache junky. If you wanna do anything 'cool' or crazy you really need to use things such as lucene, solr, mahout. Therefore you need to know java, c or some sort of compiled language.

If you want to be a corporate developer (Who earns lots of cash!) C# is amazing.

steve
+1  A: 

It's certainly worth learning either or both of those languages, along with those others you mentioned. Learning a new language is not really very hard. Several times I have learned a new language solely for the current job.

However, it sounds like you really don't want to learn either of those languages, and want to learn one of the others. If that's so, don't force yourself. You can do plenty of good work in the languages you seem to be gravitating toward. There's no one best language; there's plenty of room for whatever you want to do. Heck, people still make a living coding exclusively in COBOL.

Just choose the language that you like best and that you think you can get a job with. It really depends on your personal circumstances and preferences.

tloflin
+1  A: 

learning several languages is less time consuming, than learning several Frameworks!

I would recommend you to get yourself a PHP or better C or C++ book for starters. When you know the basics of the language including pointers and arrays, you can go ahead and look at java. start to use eclipse(or netbeans) as an IDE and do some stuff.

1-2 months later look at c# and visual studio, you will most likely not switch back..

SwissCoder