tags:

views:

495

answers:

10

Does it matter for a programming company manager if the programmers that come in know such technology like asp.net or ruby on rails, or it doesn't really matter as long as they're smart and get things done? I mean, specific technology is a matter of learning some new stuff, but it's still programming. Or do .NET technologies actually come with their own specific philosophy?


Edited Duplicate Question, here are a list of links that deal with .NET programming on Stack Overflow:

+10  A: 

Expecting downvotes for this, but... start with console apps. Any time you hit the peripheral technologies - WinForms, WPF, WCF, ASP.NET, ASP.NET MVC etc - you'll run into some problems. That's okay when you understand the core of the framework (collections, IO, dates and times etc) and the language (long list here, depending on which language you pick). If you run into the problems as a newbie, however, you won't know where the issue lies - with your understanding of the peripheral technology or the core.

Yes, console apps are unsexy - but they're great for quickly getting to test core features of the platform.

Jon Skeet
Jon skeet getting downvoted? That would be the day!
Geoffrey Chetwood
I'd do it, but a black hole would form over my head.
George Stocker
I very much agree with this, and for the same reason, think that people should start out (at least for the first couple of weeks) with something like Basic. Focus on learning the fundamentals of program flow and control, without worrying about how frameworks want you to work.
Kibbee
+1  A: 

To get started programming in .Net, check here:
http://www.microsoft.com/express

As for the "philosophy" remark: of course the technologies come with their own philosophy! Do you really think ruby or python don't as well?

Joel Coehoorn
+1  A: 

Port one of your Rails apps to Asp.Net.

Unfortunately many people responsible for hiring (especially recruiters) get stuck on buzz words and specific technologies. In my experience, however, the really good programmers are really good regardless of the specific technologies they have used.

MattH
+1  A: 

Having done things is a good way to prove that you are "smart and get things done." To hanswer the "starting .NET" question, that totally depends on your interests (it seems like you're interested in web development, so download the VS Express editions and take a look at samples like Rob Conery's Storefront example

About the "philosophy" part -- sure, good programmers can pick up any framework/language, but there are a lot of patterns unique to a framework, check out the "Hidden features of X" threads on SO for examples of things you might not have expected if you're not well-versed in your platform.

Jimmy
Agreed. I recently (in the last year) taught myself Python for a side project. Having a good understanding of (basic) programming logic is often more important than actually knowing a language. While there's still a lot to learn, the basic fundamentals are genuinely similar across all languages.
Paige Watson
+1  A: 

Given that you're already familiar with RubyOnRails, you might want to start with an ASP.NET MVC application like Rob Conery's MVC Storefront example. I'd also recommend a book like Test Driven Development with .NET or Pragmatic Unit Testing with .NET. These will help you get used to .NET without the complications of web servers, etc. Hopefully, the TDD/Unit testing stuff is something you are already familiar with so you can focus on .NET in the examples.

tvanfosson
A: 

For the web these sites are good for getting started:

http://www.asp.net/

This will be relevant based on your experience with MVC:

http://www.asp.net/mvc/

Turnkey
+4  A: 

First question:

.NET is becoming more and more like Java, where the bulk of what there is to know is in the framework and libraries, rather than the languages. As such it can be very important, depending on your needs, whether the candidate has experience with particular .NET sub-domains such as WPF, ASP.NET, Silverlight, etc.

It may or may not matter, depending on your needs. If you are heavily invested in a particular technology, and need to bring in someone who can get productive in a hurry, then looking for someone who has experience with it can make a huge difference. Any "smart and get things done" programmer should be able to come up to speed over time. But even the brightest programmer WILL take wrong turns in unfamiliar territory, and this WILL cost you time and effort in debugging and re-work.

The different .NET sub-domains I would say don't necessarily exhibit different "philosophies", but they are subject to the constraints of different underlying technologies, such as web protocols, or the Win32 API. And on top of this, they do exhibit different design choices in their architectures. Working in ASP.NET vs Winforms involves a very different set of skills and design considerations. Even deciding to do ASP.NET with or without the new MVC framework will have a HUGE impact on your design.

Chris Ammerman
+1  A: 

For an experienced, smart developer, it shouldn't be too hard at all to pick up .NET. However, if you have no upfront experience of it, it will be hard to convince someone to take you on for a specific development job that needs someone to hit the ground running.

Personally, I'd much rather hire someone smart than someone with specific syntax knowledge, but if I was interviewing you, you'd need to prove that you had enough specific knowledge, as well as raw ability.

So write something. The important thing is to have a small project in mind, and get stuck in and build it. Web or Windows, whichever is more relevant to the job you're applying for.

I started with .NET back in the 1.0 beta days, just as books were starting to hit the market. I'd dabbled in Java and VB6 before that, but no more.

I bought .NET Framework Essentials, and Programming C#, the latter of which is available in a 5th edition!

In a week, I'd got my head round things enough to write a shortish winforms program that fitted a best-fit nth-order polynomial through n+1 points, and was quite fun, and very instructive. I wasn't an expert in a week, but I was well on the way, and I had something I could show people which looked quite cool.

The IDEs are much better now, and the amount of free documentation out there is amazing compared with 7 years ago or so.

I don't know what the best books are now, but I don't doubt there are some good primers out there.

Just get stuck in.

Edit: re specific philosophy, I'd say no. An OO mindset is useful for VB.NET or C#, but it's not a religion.

For hiring, my preference would be for someone that gets more satisfaction from removing code, than writing lots of it.

ChrisA
A: 

Part of this depends on what is being hired I think. If there is a need for someone who has in-depth experience in using a specific technology that is new to an organization then this has to be in the experience of someone. Another part is whether the in-house development is a vanilla kind or some specialized macro-laden form that 99.999% of programmers have never seen before and may take a few days to get some understanding in using.

Another side to this is the question of what development methodology is being used as sometimes having this expertise may ease a transition such as if the programmer has used waterfall for many years and the organization uses that methodology then there may be a good initial fit for the programmer to get things done early compared to someone that has done only waterfall switching to an agile place which may seem like an ocean of change.

Corporate coding culture can have its own philosophy like what makes something its own class, or do multiple classes go in the same file, is Hungarian notation used or are just more descriptive names and Intellisense enough to figure things out, etc. Note that this philosophy is language agnostic as any kind of programming place will have this.

JB King
+1  A: 

For the record, Joel Spolsky would say no, it doesn't matter (much). Since the individual languages have such short lifespans, it's more important (at least long term) to be able to learn new things fast than to already know things. All else (or at least the smarts) being equal, I think it makes sense to hire the guy with experience in whatever you want them to do.

Some personal experience: I haven't learned C#, yet I've written code in it for a previous employer. It was just a short one-off project consisting of modifying some almost-done code, so don't put too much into it, but with a good knowledge of a few similar languages one can learn new things quite fast.

Jonas Kölker