I am into new desktop app development. I feel at home with .NET 2.0 and c#. I guess I don't need linq, nor care for WPF and other Vista-oid fancy keywords. I also like rather tight and slim 2.0 redistributable, even more for reason it's Vista and 7 included.
How far behind are you willing to be? .NET 4 is coming soon. Cloud (via Azure or even Live Mesh) computing is the next wave, so you'll probably want to be ready for network connectivity by knowing WCF.
If you don't want to learn the new stuff, then you'll still be able to create some good desktop apps with 2.0. But part of being a developer is understanding what's coming next. Even if you don't choose to target a later version of the framework, you should at least spend some time to learn a bit of LINQ, WPF and WCF so that you know their power. Then when you need something that is only available in a later version of the framework, you'll know why you're using it and also should be able to justify the framework download to your clients.
If you are creating or consuming web services, then you should be aware that Microsoft now considers ASMX web services to be "legacy technology". All new web service development should be done using WCF - which is not available until .NET 3.0, and gets quite mature and stable at .NET 3.5.
Assumption: You're working with Visual Studio 2005 and .NET 2.0.
Reason #1: Vista includes .NET 3.0 as a part of the OS Install; Windows 7 includes .NET 3.5
Reason #2: There are ways to target .NET 2.0 using Visual Studio 2008 (and VS 2010) so you can gain from the productivity "goodies" of those tools without abandoning .NET 2.0, then move to .NET 2+ when you're ready. (Visual Studio can help you avoid non .NET 2.0 assemblies while you code.)
Reason #3: Extension methods, particularly the static class Enumerable. Technically, a part of Linq, but a good way to write code cleanly, clearly, and in a more maintainable way.
Reason #4: Bug fixes to the .NET 2.0 framework. Remember that .NET 3.0 and .NET 3.5 still use the same .NET 2.0 runtime under the hood - they just add new frameworks/libraries and some compiler tricks. There have been a ton of bug fixes to the runtime which you're missing out on.
I know various people who feel right at home with C, 8086 assembly, APL, punchcards, and front toggle switches (not kidding). They give the same reasons you do.
Would you advise an assembly programmer to try out C# 2.0? If so, perhaps you should try C# 3.5 for the same reasons. If not, keep enjoying C# 2.0, and know that people will, one day soon, see you the same way we see assembly programmers today. :-)
C# 3.5 is much better at letting you build higher-level abstractions than C# 2.0, just as C# 2.0 is better at this than C, and C than assembly. After all, isn't that why we program in HLLs in the first place?
Shouldn't the request really be "Convince my users/customers to move from .NET 2.0 to 3.5"
You didn't say whether you're writing code for a customer/user or just as a hobby. If it's the latter then yes, it's all about convincing you.
Otherwise, I can't see your customer being really excited about you being able to use Linq in your code, unless it will let you get things done substantially quicker and more reliably then before.
Of course if you're an experienced 2.0 developer you most likely are already very efficient even without lambdas, query syntax etc. Sure, they would provide some improvements but probably not great enough to excite your customer.
Now, if your customer comes to you and says, I want my new desktop application to have a GUI like one of those web pages with fancy animations etc, then it's obvious. You should seriously look at going to .NET 3.0/3.5 for Windows Presentation Foundation etc.
In summary, if there is a real and tangible reason to use newer technologies, go for it, otherwise it's often costly to get up to speed with a new platform/environment without direct benefit.
How far behind are you willing to be? .NET 4 is coming soon. Cloud (via Azure or even Live Mesh) computing is the next wave, so you'll probably want to be ready for network connectivity by knowing WCF.
If you don't want to learn the new stuff, then you'll still be able to create some good desktop apps with 2.0. But part of being a developer is understanding what's coming next. Even if you don't choose to target a later version of the framework, you should at least spend some time to learn a bit of LINQ, WPF and WCF so that you know their power. Then when you need something that is only available in a later version of the framework, you'll know why you're using it and also should be able to justify the framework download to your clients.
If you are creating or consuming web services, then you should be aware that Microsoft now considers ASMX web services to be "legacy technology". All new web service development should be done using WCF - which is not available until .NET 3.0, and gets quite mature and stable at .NET 3.5.
Assumption: You're working with Visual Studio 2005 and .NET 2.0.
Reason #1: Vista includes .NET 3.0 as a part of the OS Install; Windows 7 includes .NET 3.5
Reason #2: There are ways to target .NET 2.0 using Visual Studio 2008 (and VS 2010) so you can gain from the productivity "goodies" of those tools without abandoning .NET 2.0, then move to .NET 2+ when you're ready. (Visual Studio can help you avoid non .NET 2.0 assemblies while you code.)
Reason #3: Extension methods, particularly the static class
Enumerable
. Technically, a part of Linq, but a good way to write code cleanly, clearly, and in a more maintainable way.Reason #4: Bug fixes to the .NET 2.0 framework. Remember that .NET 3.0 and .NET 3.5 still use the same .NET 2.0 runtime under the hood - they just add new frameworks/libraries and some compiler tricks. There have been a ton of bug fixes to the runtime which you're missing out on.
Moving from .NET 2.0 to .NET 3.5 shouldn't even be a consideration. Here are some reasons why.
Without .NET 3.5, you're missing out on a lot. Seriously. Make the jump. You'll be glad you did.
I know various people who feel right at home with C, 8086 assembly, APL, punchcards, and front toggle switches (not kidding). They give the same reasons you do.
Would you advise an assembly programmer to try out C# 2.0? If so, perhaps you should try C# 3.5 for the same reasons. If not, keep enjoying C# 2.0, and know that people will, one day soon, see you the same way we see assembly programmers today. :-)
C# 3.5 is much better at letting you build higher-level abstractions than C# 2.0, just as C# 2.0 is better at this than C, and C than assembly. After all, isn't that why we program in HLLs in the first place?
Shouldn't the request really be "Convince my users/customers to move from .NET 2.0 to 3.5"
You didn't say whether you're writing code for a customer/user or just as a hobby. If it's the latter then yes, it's all about convincing you.
Otherwise, I can't see your customer being really excited about you being able to use Linq in your code, unless it will let you get things done substantially quicker and more reliably then before.
Of course if you're an experienced 2.0 developer you most likely are already very efficient even without lambdas, query syntax etc. Sure, they would provide some improvements but probably not great enough to excite your customer.
Now, if your customer comes to you and says, I want my new desktop application to have a GUI like one of those web pages with fancy animations etc, then it's obvious. You should seriously look at going to .NET 3.0/3.5 for Windows Presentation Foundation etc.
In summary, if there is a real and tangible reason to use newer technologies, go for it, otherwise it's often costly to get up to speed with a new platform/environment without direct benefit.