views:

305

answers:

12

What 1 thing in programming has had the largest payoff that you've learned over the past 3 years. Yes, 3 years is an eternity it IT. I'm trying to decide what to learn next and want to see what you've learned that has the most payoff and why.

This could be anything like (but not limited to) coding to an interface, unit testing, TDD, mocking, lambdas, regular expressions, F#, WPF or linq.

+9  A: 

Unit Testing with NUnit and TestDriven.NET is about the most useful thing I ever learned.

JohnIdol
Can you recommend any good resources to learn how to write unit tests? What about testing code that makes database calls? Are you using any mocking framework?
asp316
using either mock-up objects or dbs setup for unit testing only - I'll gather a few links
JohnIdol
how to write unit tests is really another question - but there's plenty on stackoverflow --> http://stackoverflow.com/questions/61400/what-makes-a-good-unit-test
JohnIdol
with regards to mockup objects (again this could be another question) NMock is pretty good - have a look at this pretty good msdn article --> http://msdn.microsoft.com/en-us/magazine/cc163904.aspx
JohnIdol
here is a good book that just came out http://weblogs.asp.net/rosherove/archive/2009/05/20/art-of-unit-testing-the-samurai-book-get-it-now-it-s-done.aspx
quimbo
+8  A: 

LINQ and Lambdas, for sure.

Matthias

Mudu
Any specific flavor of linq?
asp316
Mostly LINQ to Objects, there was no similarly simple elegant way for selecting, filtering and processing in-memory data before. At the moment I'm working (and learning) on Entity Framework with LINQ to Entities which is cool too.
Mudu
+1  A: 

Where the GAC is physically located, and how it interacts with existing PATH and other environment variables.

Multiple versions of "identical" files on the same machine drove me crazy, until I understood how the GAC enabled such behavior.

John Pirie
Do you have a link to any specific reference material or article that you found especially useful?
Greg D
One of our experts walked me through the whole thing, but I just glanced through the wikipedia entry and it looks pretty good.
John Pirie
http://en.wikipedia.org/wiki/Global_Assembly_Cache
levinalex
+4  A: 

Recently XAML, not so recently Lambda, and back in the day Generics. I am in love with XAML for some reason.

But to answer your question directly, the one thing I learned 3 years ago that has significantly improved my skill level is picking up a book on Design Patterns and spending countless hours of going through different patterns. This has helped me write more intelligent and maintainable code. I cannot stress enough the importance of Design Patterns. They have definitely had the largest payoff for me.

Stan R.
+1 for the Lambda and +1 Generics, -1 for the XAML
Dan Blair
i updated my post a little bit. but i still like XAML :P
Stan R.
+1 Yeah, I'm working with the Design Patterns book too. I think this is the most important piece of my learning during the last few months. Didn't mention it because it's not .NET specific.
Mudu
+1 for genericsMy readings on design patterns also helped me a lot... I don't apply patterns all that often but what I learnt about good object design helped me a lot.
Meta-Knight
+2  A: 

RhinoMocks mocking framework for unit tests

Grzenio
A: 

Static analysis, performance and memory profiling, design patterns.

I know it is general answer to specific C# question but it does save my day.

Perica Zivkovic
A: 

Two things stand out as major game-changers:

  1. http://martinfowler.com/articles/injection.html (not specific to .NET, but definitely applicable)
  2. Resharper
Jeremy Frey
A: 

Part of the stack, although not directly .NET, would be Team Foundation Server. The improvement in process, build qualities, test automation, and issue tracking have allowed us to start focusing more on the code we are writing, as opposed to the draconian way that we had been managing and tracking it.

joseph.ferris
A: 

Everything.

3 years ago I hadn't touched .Net, now you can see my answers for what I've learnt and can do.

Before I used PHP and VB.Net, but had never seen OOP, or even true testing.

ck
A: 

Without a doubt, LINQ. It lets me turn complicated gobbleygook code into much simple, easy to manage and maintain, code.

WPF is becoming a fovorite of mine as well. It is a lot harder to master than LINQ, but it has tremendous power for managing the display.

RB Davidson
A: 

Microsoft enterprise library. Logging is one of the parts I love, since it is some times the only way to get exception messages and error messages, when things are running in production.

Functional programming, still trying to learn that (both in F# and C#).

I like the new way of setting propeties when creating new objects TextBox txtXX = new TextBox(){ Text = "Hello"};

Gaotter
+1  A: 

All of these are somewhat interdependent, but:

  • Generics (may be older than three years?)
  • LINQ
  • Entity Framework
Stefan
Finally someone that mentions Generics, the best invention since sliced bread :-)
Michael Stum