Is it my imagination or is Microsoft releasing technologies faster and faster than ever before? When I was a young developer using Visual C++ it seemed that you could easily know all the technologies at any one time. All you had to learn was a language, a framework and a library (C++, MFC and STL).
Fast forward to today and there would seem to be inflation in the number of product releases from Microsoft. From the release of Vista onwards we have the following client side technologies…
Each of these covers a large area that would require many months to really understand well. In fact WPF alone is going to take you a year of full time use before you can say you’re truly proficient in it. If you want to include the server side then add the following into the mix…
ASP.NET AJAX
ASP.NET MVC
ASP.NET Dynamic Data
ADO.NET Entity Framework
Silverlight
I think I know why this rapid increase has happened and it’s all the fault of the .NET Framework. When I switched from developing applications with MFC/ATL to WinForms I noticed my productivity increased several fold. Maybe as much as a 5 fold increase in output once I was up to speed with using all the .NET goodness. Now you apply this same productivity increase to all the cubicles at the mothership and you have the above technology tsunami.
When I started as a Windows developer the only real distinction between us was the language that you used (C++ or VB). With the rise of the Internet the community split into server side and client side specialists. It was very hard to master both areas because of the sheer amount of knowledge needed although the better programmers could probably just about manage it.
Now I see the community is splitting again into even smaller groupings. Do you use WinForms or WPF? Do you use classic ASP.NET or the MVC Framework? Over time I expect to see this kind of fracturing into smaller and smaller groups to continue. Or at least that’s what I was expecting to happen. Maybe Microsoft has seen this trend and decided to try and reverse it. Is the use of XAML with WPF and Silverlight an attempt to unify your client and web developers back into one happy community again? Time will tell.
A worrying trend for Microsoft is that your average programmer is not even bothering to try and learn all the latest goodness. How many developers in your outfit actually use generics beyond List<T>? Generics have been around forever, at least compared to the above technologies, and still most developers are hardly using it. I heard a podcast where an interviewer for a .NET position found that only around 20% of the candidates actually used generics at all. Yikes.
Actually this is not really surprising as the majority of developers spend all day working on business applications that are going to generate revenue. When do you have the time to learn WPF/WCF/LINQ/etc when learning them is almost a full time job in itself? It is all very well for Scott Guthrie or Scott Hanselman to tell the world how great the new stuff is but real developers just don’t have the schedule to stop and learn for six months.
For me this is the biggest problem that Microsoft is facing. They have some great technologies but the challenge is how to get the bulk of developers, the average developer, to move forward and learn them. I expect the upcoming PDC2008 will release even more new tech but I wonder what they are going to do that makes it easier or more compelling for businesses to move forward and actually use them.
October 7th, 2008 at 1:09 pm
Nonsense. There are lots of offshore gurus who have 5 years experience in all these technologies.
October 7th, 2008 at 3:55 pm
Hi Phil,
I do agree with part, but not in full. Just remember one simple fact why IT industry is making money? Because there is a change. If industry would have been static, we would have been out of work long before! Technologies are the only thing that will keep us feeding :)
All the Technology you said above are for a reason. For eg : WPF, if there were no WPF, the progression is like moving from old VB6 to Winforms, the next step is WPF. Why ? Because winforms has limitations which can’t be broken. And the coolness of the application is going to be in contineous demand. Think how many MP3 players existed before iPod. Why did iPod still succeed ? Think iPhone, Think new Web 2.0 sites.
Change, Progression is the name of the game. If VB6 was still widely used, who would use your Ribbon Controls ??
October 7th, 2008 at 6:18 pm
That granted Dev S but the two major money spinners from Microsoft are still Windows and Office and they are all native C++.
To be honest, there is an overlap between Datasets, Linq, ADO.NET Entity Framework, WCF and ADO.NET data services. It takes a lot longer to be productive with datasets and T-SQL but once you know it, you’re a better programmer than the newer stuff – you have complete control.
Ultimately, it boils down to what you want to achieve, but MSFT and Guthrie have always pored more resources into the WEB. Do you choose MVC or Silverlight?
I personally find that .NET 2.0 was the milestone release, and could quite happily use that for a few years plus WCF. All the newer stuff has severe drawbacks as a quick look at http://www.dinnernow.net/ will show you.
Yes the new features are great, but this type of code is a nightmare to maintain, so the older tech is better in that regard.
October 7th, 2008 at 8:06 pm
I agree completely… but I do enjoy having the options available :)
October 7th, 2008 at 8:49 pm
Thanks vesuvius.
I agree some of the stuff are overlap and confusing hell out of adopters, but no-one tells that we have to use it. We can use what we want to. WCF is revolutionary, the reason it promotes much cleaner approach to SOA. WPF is revolutionary because it gives the power that we did not get upto now.
But…we have to use these technologies only if needed :). Winforms is great for data centric apps.
It’s ironic that Microsoft promoted Windows User Guidelines and it is ironic that it is making it ineffective with technology like WPF were application can be pretty descrete about UI! You can write a WPF app that is very hard to use without training!
October 8th, 2008 at 2:38 am
I strive to keep up with inflation. I browse dozens of tech blogs just to keep up on a high level with what is going on. Do I get to use any of this stuff in real-world apps? Not a chance.
I think there are a lot of devs in my position. I have landed at a very big outfit that has legacy apps. Think VB6. The big innovation for them was to convert something from C++ to C#, using .NET 1.1. And there it stays.
This stuff will last, as-is, until the end of time. Our customers are painfully slow to upgrade, and we are slow to commit dollars for even the most basic things, such as going to .NET 2.0. We are Late Adopters. Just keep the ship afloat is the watchword.
Generics? That’s only a fond wish for me. Linq? WPF? Only in my dreams.
At a former company, much more progressive, the service layer was going to be revised during 2008, but WCF was considered to be just a bit too much business risk to be considered.
So it goes. There’s a lot of maintenance going on in the Real World, and it does not revolve around anything new. Don’t get me wrong, I think that there is a need to innovate in platforms and tools. But the adoption rate is not going to keep up with the [release] inflation rate.
October 8th, 2008 at 2:41 am
DO NOT USE Microsoft Dynamic Data.
It’s the worst designed ORM ever.
http://efvote.wufoo.com/forms/ado-net-entity-framework-vote-of-no-confidence/
Use NHibernate instead. NHibernate > Dyanmic Data.
October 8th, 2008 at 6:54 pm
Pretty heavy going article, and seems to be more ALT.NET than anything. I just don’t like the tight coupling of the database queries, but object freaks seem to adore this type of programming. If I need to create a quick demo application that is data aware, then Linq and EF are the way to go.
If you really want an application with a rock solid data/service layer, then the previous technology will suffice. NHibernate has been getting plaudits for some time now and is something I will have to look into.
October 21st, 2008 at 2:34 pm
If you really want to learn these new technologies, then when you get home after work go buy a book, sit down at your computer, open Google and study. Take a night class. You can learn this stuff in 6 months without having to stop your day job. Its not rocket science. You can either make up reasons why you don’t have time, or you can determine that come hell or high water you’re going to become a guru at it.
Either way you choose which path to take. Looks like you have found reasons why you can’t learn it. You are right. You don’t have what it takes.