tags:

views:

170

answers:

8

To date I've done a lot of low-level programming (kernel-mode device drivers, native code, etc.) on both Windows and UNIX with C++, C and Ada95. I'm considering to make a career jump to application-specific programming where I can learn a business alongside software development and not just be a low-level hardware interface guy.

Besides learning SQL and basic databases, for various reasons, I've decided to go with the .NET stack rather than the Java stack. I'm not really interested in UIs, but more so server and back-end development for the time being, so I'm trying to avoid tech like WPF and CSS/Javascript/AJAX for now.

What .NET technologies should I be trying to learn to make myself more "modern" and competitive in the job market? Do I need to try to master linq, ADO.NET, ASP.NET, and WCF as well?

+3  A: 

ASP.NET, ADO.NET, and WCF are fine choices, in that order.

While LINQ is interesting, I have had some troubles finding applications that really benefit from it (but admitted, I have not tried hard). Anyway, it is less essential than the other three.

Learning to do interop for interfacing a DLL (e.g. that comes with hardware) can also be useful, as well as being able to make own providers for arbitrary databases.

Marco van de Voort
I would put Linq over any of the others you mentioned. Since I have worked with them in a real application, it's hard remembering how I managed without before. Especially since it's a skill you can port to almost anything else in the .net fw.
borisCallens
If he's not interested in UI development, wouldn't that render ASP.NET outside the scope of interest?
BenAlabaster
I think boris's suggestion to put Linq over everything else is bad, IMO. I would always suggest to a newbie that they learn the ins and outs of ADO.NET before trying to play with LINQ, simply because it is always more helpful to know about underlying technologies before playing with the new shiny wrapper, and the vast majority of things you're going to use LINQ with are database related anyway.
TheTXI
Ditto Boris precisely. LINQ is immensely useful throughout the whole of .NET development.
Noldorin
@TheTXI: I disagree, LINQ has many more useful applications than in database related code. LINQ to objects and LINQ to XML makes your code far more expressive and elegant. I completely agree with learning the underlying technology, but I wouldn't say ditch it by any means.
BenAlabaster
A: 

Now that Microsoft's ASP.NET MVC stack is out, you may want to skip ASP.NET WebForms and work with that instead.

R. Bemrose
MVC is part of ASP.NET.
Robert S.
MVC doesn't use ASP.NET controls.
R. Bemrose
However, I've made it more explicit that I'm referring to ASP.NET WebForms.
R. Bemrose
This seems like a semantic quibble. ASP.net MVC is different from ASP.net Webforms, which I believe is what R. Bemrose is really talking about in his reply (even if he didn't explicitly state it). Obviously, MVC is "part" of ASP.Net from a branding/technology standpoint.
peacedog
+3  A: 

I'd do ADO.NET first along with SQL. If you don't know that, you're severely restricted in business development - if you learn web programming, that's all you'll be able to do. If you learn database access, you can write any GUI you like.

Once the SQL is done, you can choose any other part that you like, but do low-level sockets first before going with WCF, you'll probably find that easy and you'll get the fundamentals sorted.

gbjbaanb
I definitely agree. If you don't get into database development, your are limiting yourself severely.
TheTXI
A: 

If you're not interested in UI stuff, then I'd focus on the component-oriented side of .NET. Currently, this means WCF.

Learn c# really well and then grab a copy of "Programming WCF Services" by Juval Lowy. WCF represents the future of component oriented development with .NET and you can do some pretty interesting stuff with it along the lines of reusable, interoperable and remotable components.

As far as the job market is concerned, EVERY job I've interviewed for in the last 2 or 3 years has asked ASP.NET questions, so you're probably going to need to learn the basics of ASP.NET. Most of the applications I've worked on have had ASP.NET portions as well and, in my experience, most .NET developers are expected to be able to write code in the data, business logic and presentation tiers.

Terry Donaghe
+2  A: 

Do middle tier and backend... much more fun for low level coders. WCF, LINQ (to anything), WF... plenty to learn and it's all fun.

Matthew Whited
A: 

I'd say the following are probably the most important for server/back-end applications:

  • XML/XSD/XSL/XQuery
  • Application Communication, i.e. WCF, .NET Remoting etc
  • LINQ & ADO.NET
  • Web Services
  • Windows Service
  • Console Utilities
  • Threading

If you're not really doing UI, I would say that ASP.NET/MVC/WPF is probably surplus to requirement for the moment whereas XML/XQuery is useful for application integration with other systems and is used so frequently in the development world these days that not knowing may be more of a hinderance than learning it.

BenAlabaster
A: 

Considering your background I think you'd be interested in a book titled CLR via C#. It may be a bit too academic to be of any direct use for a while, but it's really helped me understand how it all works together.

overslacked
A: 

Given your interest in low-level work, I would suggest perhaps:

kenny