Is .NET Becoming Too Complicated?

I was talking to Stu this weekend a bit about the recent release of .NET 3.0 and all the things it professes to do. They've added some huge features to .NET and they even offer some free online training on it.

But here's the deal: I do most of my work in .NET 1.1 right now. Financial institutions are slow to adopt new technology and there really wasn't any super-pressing need to convert to .NET 2.0 when it was released. Granted, we'll be moving to .NET 2.0 soon and do some work with it for internal tools, but production work still gets done in .NET 1.1.

For the .NET 2.0 stuff, it was pretty easy for me to grasp. They added a few new programming constructs, a few of the things I commonly do in ASP.NET are easier, and the rest of the stuff, for the most part, felt like they just solidified a good existing framework.

For .NET 3.0, it's a new situation. There are whole gigantic architectural additions that have been added. Windows Presentation Foundation, Windows Workflow Foundation, Windows Communication Foundation... valuable stuff, but not trivial in size. Reading through some of the doc and examples, it doesn't look like it's super trivial in implementation in many cases, either.

I know a lot of pretty decent developers, but some fairly key .NET 1.1 concepts still escape them. Databinding is a concept I hear a lot of confusion over. Reflection is another one that stymies folks. Academically, they sort of "get it," but when the rubber meets the road, it's still pretty confusing to them.

Which brings us to the question: Is .NET becoming too complicated? Previously these large foundation-style blocks seemed to live as "Application Blocks" that the Pattens and Practices group put out. (Which, in my opinion, many times were far, far more complex than the 80% case will need.) You could fairly safely ignore these huge blocks and still be pretty sure you could write a good .NET app. Now they're part of the framework, so they're a lot harder to ignore. Was that a good decision?

Back in college, we wrote some simple Windows apps in C++. As such, I had a peripheral interest in seeing how the various class libraries grew up. I can still read the code I wrote for those apps. It makes sense. Have you written a Windows app in C++ recently? Tried to read the code for it?

I'm afraid that's what's happening to .NET. New features needed? Sure. I mean, who can question the value of a whole workflow foundation built right into the framework? But the complexity of these things will be such that you'll have a difficult time finding anyone competent in all of it. Developers will be forced to specialize because there won't be enough time in the day to keep up with all of the latest developments.

The people I feel afraid for are the developers coming out of school today. Or the developers who will hit the job market five years from now. I've been in on .NET from the ground floor, so there's a lot of background knowledge I take for granted that I've gained as I've worked in it and been present for these latest developments. I can't imagine what it will be like coming in at square one right now, trying to write a "Hello World" app in C# and then figuring out where to go from there.

The learning curve is only getting steeper, and it's just like what happened with C++. They're great new features, but are they worth it?

posted on Wednesday, December 06, 2006 9:52 AM | Filed Under [ GeekSpeak ]

Comments

Gravatar # re: Is .NET Becoming Too Complicated?
by Chris Morrison at 8/31/2008 12:56 PM
Travis, what you just said is dead-on. I programmed in Borland C++ back in 1990, when Windows was just a playtoy. Then Windows started gaining a foothold and Borland produced OWL for C++. It increased programming complexity 10-fold.
Then, the WWW came into the mainstream, and the race was on to produce server-side frameworks. ASP came into practice, and web developers enjoyed about 5 years of consistent technology for web development from MS.
During the same years to Y2K, windows developers enjoyed a consistent model in VB, with the culmination happening in VB6.
Isn't amazing how we THOUGHT things were complicated then! Boy did we have A LOT TO ABSORB once .NET hit the scene!
I put it nicely in a recent email to a colleage: before, developers had few technology choices concerning MS development and they could really focus and learn them in-depth. Now, it's a challenge just to know and keep up with what everything is called and the acronyms!
Yes, MS development technologies are emerging very fast and the whole thing is getting complex, but compared true enterprise systems, like SAP and Siebel? Hardly. It was once said by an SAP instructor that no one person understood all the SAP modules, which at that time(about 1998), was 500 million lines of code. Compare that to the 7 million lines of code behind Windows NT 4!
I think what's happening is .NET is becoming more and more enterprise level, and developers are being exposed not only to increased configuration and deployment aspects but also to the complexities of developing such software. It's not all hidden behind black box modules anymore. In a nutshell, and this is a good thing: .NET 3.x and future versions expose true enterprise capabilities that we as developers can manipulate and choose to implement. MS, IMO, is going down the right route of giving organizations the choice to custom develop enterprise software to their specifications and business rules. Freedom! Unlike say, for an SAP implementation, where it's common practice to revamp business process to conform to SAP to reduce customizations and huge costs.
Gravatar # re: Is .NET Becoming Too Complicated?
by Green Beatle at 11/6/2008 8:52 AM
You have it all wrong. How many ways are there to skin a cat- Still at the end of the day the cat gets skinned. All the new technology Microsoft is pumping out has fundamental basis that makes them quite understandable. They just look complicated because you need practice to understand the short-cuts. Besides, no developer needs to master ALL of the technologies in .NET. Be good at the fundamentals and what you use the most and you are straight. New developers always have it easier than the previous. Tools are getting better per year. There is a lot to learn but they all boil down to fundaments still.
Comments have been closed on this topic.