views:

634

answers:

15

People have been developing own solutions to the following problems:

  • Consistent messaging frameworks for remote information exchange (webservices,rpc,...)
  • SDK's for state managements for things such as Finite State Machines and Workflows
  • Authentication Frameworks
  • And much more.

For over two years now, Microsoft offers .NET 3.0 which contains consistent and well documented so called Foundations for Workflows, Communication, Authentication and a new way to build web apps.

However,... people were still building own frameworks with consistent object relational mapping to address their databases, own techniques to dynamically extend classes and methods at runtime (for customer to be able to customize application behaviour e.g.).

For over one year now, Microsoft offers .NET 3.5 which - amongst others - contain LINQ and therefor a great ORM and wonderful means to extend your code and make it much easier to write code after all.

But look around... it seems as if the majority still uses .NET 2.0. Websites are created in plain ASP.NET. Desktop experience is still achieved with a combination of CSS, JavaScript and HTML. Executables are using plain old WinForms, workflows are implemented with delegates, events, do/while and switch/case.

Without too much discussion, I would be glad to see concrete reasons for the following question:

In your opinion: Why is it that people don't jump onto the .NET 3.5 train?

+13  A: 

For the same reason I know Java developers who still code in Java 1.4-- change is expensive and, to people doing work internal to companies where Getting It Done is so much more important than using new technologies, often pointless.

For a lot of internal work there is little justification for upgrading older applications to work in newer environments.

Also, large corperations are not fond of any sort of change for various stability concerns, you will still find them making decisions to use older technology in new solutions simply because they believe the new technology is not stable enough, not enough is known about it or not enough of the software they rely on support it.

And, I've never used it so I couldn't say, but it may be the case that .NET 2 is Good Enough for people's needs, and that .NET 3.5 doesn't offer enough to warrent the learning / changing that is involved, even for companies that are OK with the more cutting edge.

SCdF
Because of the cost of upgrading we still have an entire site in .NET 1.1. At least the transition from .NET 2.0 to .NET 3.5 isn't too painful.
David Basarab
+4  A: 

Because it is not well supported web hosting companies.

I'm developing a new web application but my hosting company only provides ASP.NET 2.0 support.

tpower
+1  A: 

2.0 works, right? I think the newer stuff is great and cool and I like to stay up on the latest, but at the end of the day if it works, often the decision is to stick with what you have. I supported a shop that ran DOS 6.2x programs for years (up until 2004) and I use to scratch my head about it. But at the end of the day, there was no compelling business reason in that case to spend anything to move forward.

I'm sure there are other reasons too.

itsmatt
+1  A: 

For all new projects I try to use 3.5 (or whatever the newest framework is). But all the old sites, why would the customers pay for uppgrading when it works?

If you want specific technology in 3.5, then uppgrade, but unless; don't fix what isn't broken..

ullmark
+5  A: 
  1. Requires learning new stuff, many 'just a job' LOB developers can't be bothered.
  2. Legacy code investments, the custom systems may not be needed, but they work, recoding stuff to use Framework based systems is a waste of time if the existing system isn't broken.
  3. Dev software cost. Coding effectively in .net 3.x really requires VS2008. Upgrading a whole team of developers to that from 2005 might cost.
  4. Stability. 2.0 was an evolution of the 1.1 Framework. 3.0 and 3.5 include new v1 technologies, (those you listed). Developers like to see the technologies prove themselves before they can justify to their managers that its worth the jump. As with Windows adoption, you'll likely see more people going from VS2005 to VS2010 and .net 2.0 to .net 4.0 since that will contain v2 of the 3.x technologies.
Nidonocu
+3  A: 

If you want Windows 2000 support, you'll have to stay with .NET 2.0. It's not that bad anyway.

OregonGhost
+2  A: 

.NET 3.0 contained things which were great for new projects, but which many existing projects wouldn't want to take for the sake of updating - it would require significant rework to integrate any of them.

As for this:

For over one year now, Microsoft offers .NET 3.5

In what way is November 2007 over a year ago? Yes, .NET 3.5 is great and I love LINQ (particularly LINQ to Objects) and the benefits of C# 3.0 - but there's always a cost involved with change. To start with, there's the cost of rolling out Visual Studio 2008. Then there's the cost of retesting everything against .NET 3.5 (and now .NET 3.5SP1). Then there's the cost of deploying .NET 3.5 to all the servers, or the cost of requiring .NET 3.5 on all the clients. Oh, not to mention the cost of actually learning to use all the new technologies in a productive way.

It'll happen, but you shouldn't expect it to be very quick.

Jon Skeet
+1  A: 

To add one more note to what @SCdF said, any company with a significant IT staff, that isn't developer centric (i.e. The Majority), is usually heavily resistant to new technologies.

IT departments tend to lag behind from the developers standpoint because they don't see the business value in upgrading to new systems/hardware just to stay ahead of the curve. IT is too busy dealing with security and maintenance (real or just perceived) to deal with developers trying to get them to upgrade to .Net 3.5.

Developers are also notoriously bad at communicating with other departments about business value. When a developer tries to get IT, or the Business on board with upgrading to .Net 3.5 they start talking about automated workflows and XML, and Web Services instead of talking dollars and cents.

Brian Prince of Microsoft has a really good presentation on "Soft Skills" that goes over some of this. If you ask him nicely he just might come to your company and present :)

Josh
+3  A: 

I can speak for myself and my company. We still don't use it. Why? Well

1- Most of our users already have NET 2.0 framework installed. No need to install another framework.
2- We won't change just because it is the new thing. It has to add some value.
3- To really pay off the change would mean a huge amount of work.Again, it has to pay off.
4- It is still to early to tell if its worth it (one year is not nearly enough) in terms of bugs and new problems. It seems worth it, though.

Antonio Louro
+1  A: 

I asked a manager at a previous employer why he hadn't made the switch yet, the answer was "I don't want to have to support three frameworks," meaning 1.1, 2.0, 3.5.

I explained that upgrading to 3.5 was not the same as switching from 1.1 to 2.0 (3.5 is an extension of 2.0 using a different dll (Core.dll), not a updated dll like 1.1 to 2.0).

I can see a lot of managers using this line of thought, so its up to you to let them know!

Giovanni Galbo
+1  A: 

I'd be interested to see how long 2.0 was out before it got "majority market share" -- I mean, 1 or 2 years might sound like a long time to you and me, but you've got to remember the new language has to be released, then people have to train on it, then they have to know it well enough to "sell" it to management. Also, VS2005 was "good enough" for quite a few people, and there's cost involved in upgrading to VS2008 to support the newer language versions -- not just money, but time.

Coderer
A: 

The same reason most people are still using Windows XP!

Schotime
A: 

For government processing, the 3.5 framework is not yet approved for some environments so you're forced to use 2.0 or 3.0.

Mike Post
A: 

The biggest challenge is justifying the upgrade to the business, especially now we're in a global downturn.

There would have to be a specific advantage or technology in 3.5 that your project (probably greenfield) absolutely cannot do without, to push for it.

I am trying to put together a case for it in a large corporation, so the business benefits must out-weigh the status quo. In the current climate, 'maintaining talent' just won't cut it either, especially with a growing pool of candidates at large.

+1  A: 

A few jobs ago, I was in an interesting situation. As the original author of the company's ASMX web services, I was asked about versioning them. There was particular concern that I had based the services on a hand-made XSD and that nobody else really understood XSD that well.

I recommended to use WCF, as they won't need custom XML formats, and won't have to play with XSD, either: just define a data contract in code.

Even after I explained that .NET 3.5 SP1 amounts to a couple of service packs for .NET 2.0, plus some new assemblies, they still looked at me like I was about to become violent. Obviously, upgrading .NET versions is a lengthy and expensive process. Lessons from .NET 1.1 ot .NET 2.0 migration.

One small step in the right direction, as far as migration towards WCF: see ASMX Web Services are a “Legacy Technology”.

John Saunders