views:

1425

answers:

20

I hate to be subjective in this way, but with many people calling this website a .NET oriented website it's probably the best place to target this question at.

In the current climate, should I, a simple beginning programmer, learn a .NET language? Obviously the most popular languages/frameworks around at the moment are ASP.NET (I know it's a framework, I'm using it as an example of knowledge you can put on a CV/Resume) and C#, but is there any real advantage to learning a language on the .NET framework than learning another, independent language? Is there any theoretical or practical advantage to it? It seems that everyone wants to develop their start-up website in LAMP, instead of using Microsoft-based technologies; probably a reason that this website caused such a fuss in certain tech-circles on the Internet. Can anyone explain any of these questions to me?

For extra clarification, let's say I had already learned Java, but wanted to add more to my expertise. Is .NET the way to go, or would targeting other languages provide a better advantage? I could always learn another paradigm but I'm not sure whether that would add to my CV/Resume as much as having a .NET (framework) language would.

In short, learn .NET to expand my knowledge/employability, or learn a different paradigm to expand my knowledge/employability?

+2  A: 

It all depends on where you want your career to go. It can't hurt learning, but there is a chance that you'll never use it. Really that is up to you.

The difference between C# and VB.net is about 20,000 anually and the /doc compile switch.

Kevin
For the average developer, would learning a .NET language affect his ability or employer-recognition? For example, if an employer were to see both Java and .NET would the person have a better chance for a job?
EnderMB
Yes....We look for that all the time.
FlySwat
I would rather hire someone who knows two or three languages well than a master in one language.
Thomas Owens
Yes, knowing both Java and .Net could significantly expand your opportunities. Some large companies emphasize one or the other, while others do both. Many small and medium-sized companies only do one. So, your opportunities would be more numerous knowing both. And how easy to do both Java and C#.
DOK
+3  A: 

I'd say you should learn the languages that businesses are looking for. Generally C# is the most popular language in the framework for that reason.

Erick B
+12  A: 

Just to be clear:

C# is a .NET language. ASP.NET is a platform for building web applications on top of the .NET platform, using any .NET language.

That being said, I think (slightly biased) that C# is the way to go. .NET is a very solid and wide-spread platform. While either C# or VB.NET would get you to the same end result, C# uses syntax that is very similar to a host of other languages such as Java, C and even JavaScript. I find that when working on things like web applications that require crossing disciplines, having the syntax remain consistent is key in avoiding typing errors and minor bugs caused by syntax differences.

Andrew Van Slaars
I might say C# is similar syntactically to C++, I don't think I would say it is similar to C...
tloach
It's pretty dissimilar to C++ as well. I think it's most directly comparable to Java.
Adam Lassek
+4  A: 

Just to clarify something: ASP.NET is a framework, not a language. The most prominent languages targeting .NET are C# and VB.NET, with C++/CLI and F# bringing up the rear - and the new batch of dynamic languages such as IronPython and IronRuby.

Personally I think C# is a lovely language to learn - it allows you to explore a functional style when you want to, but be imperative where that's more appropriate. That's not to say it's perfect, of course, but it's generally been very well designed.

One nice thing about .NET (certainly when .NET 4.0 is out) is that you'll be able to learn a functional language (F#) or a dynamic language (IronRuby or IronPython) and still use the same framework you've become familiar with due to C# - as well as reusing your own libraries etc.

Jon Skeet
+1  A: 

Should you learn flute if you plan to play Rock? You might be able to hit a niche with it (Jethro Tull) but it probably isn't a good idea. So as for your question, it depends on what sort of programming you plan to do.

EBGreen
+6  A: 

Learning a .NET language wouldn't hurt. I would suggest C# as it's the most popular, and it's closer to C++/Java, so the syntax will be familiar.

I find it very useful to be current in both .NET (my primary development focus) and the LAMP stack as it helps you to keep an open mind to useful techniques and practices that work across the board.

Jeromy Irvine
A: 

If you plan on programming in a Windows-oriented shop, e.g. WinForms or ASP.Net, then I'd say it makes sense to learn a .Net language. If on the other hand, you really like Linux and other open-source software then Java or PHP may be better. There can be cases made for programmers knowing how to program in Java or .Net being better than some others though there are other programming worlds out there like Flex or SAP or Oracle if you want a few non-Web areas.

JB King
A: 

In my experience it's worthwhile to learn about .NET, but keep in mind that .NET is NOT c# or VB.NET or any of those. .NET is a Framework, upon which different languages sit.

In some ways, this makes sense, and in some ways, it's ridiculous; it's amusing that there are the same libraries exposed in (mostly) the same ways beneath the .NET languages; it's annoying that support is not symmetric for all of the framework functionality beneath .NET.

From my experience, the most useful thing to learn would be C#; and on that, let me just say that I find the amount of difference it has from Java is very small. I consider them (and experience with them) to be largely commutative. I.e., if you know Java, C# is pretty much the same, with the differences being relatively small (but growing, with subsequent revisions). I'd take a little bit of time to learn some of the .NET framework, but it's so large, you never really know what you need of it. Gain some familiarity with the language, use some little bits of the framework, and when (if) you get a job in C#, you'll figure out the Framework as needed.

McWafflestix
+1  A: 

There are bigger differences between VB & C# than salary and the /doc switch. I'd suggest picking what you feel most comfortable with, and starting with that, but in the end, try to learn BOTH languages. Each language has its own strengths and weaknesses, and you'll be better off being able to go in either direction - especially if you are a consultant or are on the market for a new job.

Scott Ivey
A: 

Not to be too nit-picky but ASP.NET is a web application framework that can be implemented in C# or VB (or any other .NET language for that matter).

If you are just wanting learn how to program then it doesn't matter what language you use just make sure you learn best practices.

Managed code (like .NET and Java) allow you to focus more on the functionality of your program rather then spending a lot of time on things like memory management. It's not that you can ignore this in .NET but it does a lot under the hood for you (garbage collection).

A language like C or C++ forces you to think about the bits and bytes. It's good to have an understanding of these concepts as it will make you a better programmer even when using a language that does not require you to know what is going on behind the scenes.

Loki Stormbringer
A: 

Its been my experience that while it is always good to learn new languages for your own development, the business world rewards experts more than jacks of all trades.

Pick a strong popular language that will probably survive the span of your career and master it. Fiddle with other languages after you're a guru and have little to nothing left to learn. Though with the advances in .Net of late, it'll be hard enough to be an expert with all the web stuff (Silverlight 2, MVC, Dynamic, Webforms, Ajax/Jquery) let alone mastering more client oriented stuff like WPF, WCF, LINQ, Parallel Processing, etc.

Echostorm
A: 

Surprisingly, I've seen many industries refer to .NET and the languages associated with the framework as "hot commodities" in the application development industry. I've even seen articles published stating that .NET is "one of those development tools" that hasn't been heavily affected by the economic slowdown. Whether or not that is true is a different story, but I remember a time when the huge argument as to where the industries were going was full blown, and now.... .NET seems to be doing very well.

+2  A: 

The important thing is to be hungry. Learn the principles of programming and whichever language or or platform you choose, apply those principles. If you like programming anything that you come across will be of interest. Read a lot. As your skills grow and the differences between different technologies becomes clearer it will be easier to focus to one particular.

A: 

Doesn't really make any difference which specific .NET language you learn as you'll know them all if you learn one. .NET programming is mostly about deeply understanding the Framework. VB and C#, for example, are essentally the same thing these days. Heck - there are tools that can easily convert from one to the other.

So the answer is .. Yes you should learn .NET

Scott Evernden
+1  A: 

Stack Overflow may seem like it's .NET focused (and .NET is certainly popular, as well as a HUGE topic), but in the past two months that I've been here, I've seen a bit of everything. A couple of days ago several of the questions on the front page were about Cocoa and Objective-C, mixed in with Python, Linux, Ruby on Rails, Java, and so on. SO has a strong FOSS contingent as well. Just wanted to put that out there.

To answer your question, I have always said that people should learn what they're interested in. Folks tell me I should learn Python, and there are plenty of good reasons why, but I just haven't been able to do it. It's a great language with a lot of uses, but I'm not interested enough (yet?). That's true of everything, whether it's a programming language or a musical instrument.

Robert S.
A big .Net crowd was inevitable on SO, given Jeff it will probably fall more in line with the greater developer community eventually.
Adam Lassek
@ALassek, my sentiments exactly. I'd assume most people who read Coding Horror are .NET folks, but Joel's blog cuts a wider swath.
Robert S.
A: 

I would learn C# first and then once you get that you should be able to quickly pick up LAMP. LAMP is less pure/strict than C#. So learn the strict one first then if you want delve into LAMP based development.

Brian G
A: 

If you are looking to get a job I would recommend learning the skills in the top 10:

http://www.salaryservices.co.uk/topskills?expand=topskills&cboIndustry=-1

Greg Finzer
A: 

C# all the way. It will make Javascript a bit easier to understand (if you don't already). And plus, VB sucks.

dirq
A: 

I started my career working in Java, then moved into C#, and have done quite a bit of C and C++ as well (in addition to those being the language of choice through my university studies).

I've found C# to be far more enjoyable to work in than any of the others. Of course, Java has changed a lot since 4 years ago when I worked in it last, and languages like Ruby and such seem cool as well. Truthfully, as long as you learn any one language really really well, you'll probably be able to pick up other languages quickly anyway. But, for interviewing purposes, a lot of interviewers see C++/C#/Java as the same thing. A lot even think there's no difference between VB.NET and C#, and figure if you can work in one, you can work in the other (which is probably true, if you can take the pain).

Sam Schutte
+1  A: 

best way to answer this question (although least scientific) ...

open up craigslist in your area. Go to the software job category and count how many are for .NET and how many are for other languages. Also, take note of the pay rates. I'd put money on there being more and better paying .NET jobs.

Kyle West
Good idea, thanks.
Liran Orevi