Further Examination of .NET Framework Features Survey

Chart taken from http://www.hanselman.com/blog/SurveyRESULTSWhatNETFrameworkFeaturesDoYouUse.aspx Last week Scott Hanselman created a simple but comprehensive survey about the usage of different .NET Framework features trying to evaluate the usage of different portions of the .NET Framework and their popularity among developers when they build their daily projects.

On Wednesday he published the results of the survey in a separate blog post with a single chart that represents the results very well, and he adds some notes about the survey and its results. Fortunately 4899 responses are received which adds to the value of the survey significantly.

In the current post I’m just trying to analyze the results in different aspects and discuss some facts that I can elicit from this simple survey.

The Accuracy of Results

The first and foremost aspect of any statistical analysis is the accuracy of data and their relationship with real world model. There is no doubt that it’s always an error but an inherent part of this science is abating the error as much as possible, and using the best method that reduces this error for a specific model.

There are various methods to select sample data from a model but one of the best-known methods is random selection of a small group and extending the results to the general group. Somehow Scott has used this method targeting his audience on his blog as the random selection.

There is an argument about this point at this early step. In such a sampling method we need to have a homogenous selection of model data that reflects every kind of model members but Scott’s survey lacks this point. In other words, as Scott has used a random selection of .NET developers who are readers of his blog, I’d expect to see a random selection of a higher level of .NET developers rather than the normal one. I’m almost sure that all Scott audience are professional developers who are actually leading a community in lower level, and that Scott has many followers and has a wide range of subscribers but they’re still grouped in a higher level of .NET community stack.

Based on my experience with developers in the past years, I think that the norm of the .NET community use the core technologies in the stack. Therefore, we would expect a huge addition to the number of votes for some technologies like WinForms, ASP.NET web forms, and ASP.NET AJAX which differentiates them from other technologies in this set. At the moment there are many developers who even don’t know anything about Dynamic Data, Entity Framework, and WF. Extending the survey to the general case would drop their position.

Moreover, in any statistic method we try to have a logical relationship between our parameters, so our comparison allows us to get a good result. For example, we cannot compare the sales of a company in one year with the sales of another company in three years and conclude that the second company has a better sales rank. In this way, Scott’s survey is not collecting information about technologies that have been available for an equal period of time. I think that it’ s something obvious that the age of the technology plays an integral role in its usage (if it doesn’t, then Java is certainly better than .NET even though in my opinion it really is!!), so it had to be considered.

Having this point in mind, we can simply understand that some technologies like Dynamic Data, Entity Framework, and ADO.NET Data Services are not old enough to be compared with others, even there aren’t many resources about them. We’d allow a technology to exist for at least one year to see a good level of its applications in real world projects. I even can advocate that WCF, WPF, LINQ to SQL, WF, and CardSpace have not achieved the acme of their usage yet.

What about the applications of a technology? Doubtlessly the applications of a technology is a key factor in its widespread use. A core technology in the stack which has generic applications would be used in more circumstances than a technology that is built to simplify, ease or supplement a core technology. Obviously, ASP.NET and Windows Forms are core technologies that have a wide range of applications, while LINQ to SQL or Entity Framework are marginal technologies that target a part of the process (data interactions). Obviously having more options in this area breaks the usage of a single technology, so if we intersect LINQ to SQL results with Entity Framework, then we get astonishing view about the usage of these technologies in building data interaction parts.

The last factor that affects the results of this survey is the policy of the answers, and how survey takers were informed about answering the questions. What was the definition of using a feature in a project? And what was the definition of a project? This is important when you consider some situations like this: suppose that you have an ASP.NET site and you integrate an ASMX or a WCF service with it. You may include this in your response to the survey but this may be a very small portion of the project. The nature of ASMX or WCF services allows them to be included in many projects and integrated with them but it doesn’t look like an option for LINQ to SQL or Entity Framework because no one uses them for a small portion of the project.

Regarding these four points that argue the accuracy of results, I’d say that I’m not going to dare the survey results. I’m just trying to extract the possible differences between the results and the real world case in order to be able to get a better understanding of the situation. I’m also advocating that the general direction of real world data would be very similar to what is reflected in the results and this survey is a very nice survey as is. Of course Scott, himself, states it with his own words very well:

I did this on a whim, it's not scientific, so the margin of error is +/-101%.

As you read in a moment, I trust on the result to analyze some interesting parts as well. Whatever they are, these results reflect some facts about a group of .NET developers, so can be referred as a good resource to draw some conclusions. I’m sure that Scott wanted to build a simple yet easy to answer survey and didn’t want to make things complex because such a complexity could prevent many users from answering to the questions.

By the way, I’d expect this chart to show a conspicuous difference between some technologies like ASP.NET web forms and Windows Forms with others, and exhibit such a noticeable distance between WCF, DataSets and LINQ to SQL with others. I stated this based on the impressions that I have on the norm of the .NET developers.

ASMX vs WCF

The first interesting conclusion that can be drawn from the results is the comparison between ASMX and WCF services and their usage. Somehow WCF encompasses ASMX features in its core (read this great post by Keith Elder) but it has less responses than ASMX. One of the possible reasons is the fact that most of times, people just require some web service methods that is easier and faster to achieve with ASMX. On the other hand, building WCF applications require more effort. I personally prefer WCF and have replaced it in almost all of my projects, can foresee a better place for WCF in the near future.

Windows Forms vs ASP.NET Web Forms

These two technologies are the most common types of projects that are built with the .NET Framework and all the other features are somehow supplementing them. It’s interesting to see that ASP.NET Web Forms have a better place than Windows Forms, and obviously comes from the fact that web-based applications are preferred by all clients these days.

WCF, WPF and WF

WCF, WPF and WF are the main part of .NET Framework 3.0 which tried to bring modern features and solutions for new software development problems to the .NET Framework. Except WPF that may be considered as a core technology, WCF and WF are adding extra features to the framework that will be integrated with core technologies. I think that these three technologies, except WF, have had a good progress. Their middle position in the chart is a direct result of their age. I can assert they will have a much better position in the future.

ASP.NET Web Forms vs ASP.NET MVC

It was really interesting to see such a widespread usage of ASP.NET MVC in comparison with ASP.NET Web Forms. My prediction was something totally different because MVC is a technology that requires a deeper knowledge. Not only it requires a good background in principles of unit testing and MVC pattern, but also it doesn’t come with some classic features that are available in ASP.NET Web Forms and allow a few drag and drops to build an application!

However, I don’t think the results are dependable because ASP.NET MVC shouldn’t have such a high usage in comparison with other technologies. I think that the results come from two facts:

I’m sure that this version of ASP.NET MVC is not something that everyone can use (like ASP.NET web forms) but some guys have the wrong believe that they can use ASP.NET MVC. Although they may be able to build applications with MVC, I don’t think their applications can be regarded as an MVC application!

ASP.NET AJAX

I don’t think it was a good idea to separate ASP.NET AJAX from ASP.NET Web Forms because it was evident that ASP.NET AJAX is the most commonly used AJAX technology with ASP.NET.

Moreover, AJAX interactions are a part of today’s web development not a separate part even though ASP.NET AJAX is built as a separate technology for the ASP.NET.

However, there is no discussion about ASP.NET AJAX because its results is concise!

Windows Workflow Foundation

This is not something concluded from the survey results but they’re confirming my assertion about the failure of Windows Workflow. Actually I was going to write about this but my busy schedule has stopped me from many tasks including this.

Recently I noticed that Windows Workflow has not received such as a good acclaim like WCF or WPF, and there isn’t such a huge noise around it anymore.

In my opinion Windows Workflow has not succeeded and I try to write a separate post explaining my supporting ideas.

CardSpace

Like WF, CardSpace could not achieve its main goals and even had a bad failure in its lifecycle. As always, Microsoft was going to dictate its words to the software world when global identities where being formed, and Windows CardSpace was the main attempt that couldn’t succeed.

Data Technologies

It’s interesting to see that Microsoft has provided a wide range of alternative and modern data interaction methods in the past two years after the advent of .NET Framework 3.5. While DataSets are still the most common tool but LINQ to SQL and Entity Framework are going to challenge DataSets seriously.

Taking a look at the usage of these data technologies, you suddenly believe that most likely developers have preferred Microsoft tools to alternative third party products.

Summary

A simple calculation represents that each survey taker uses ~4 technologies in the list in his daily projects.

While it was better to exclude Windows Forms, WPF, ASP.NET Web Forms, and ASP.NET MVC as core technologies, it’s obvious that ASP.NET Web Forms are the most preferred option for building the infrastructure of a project and communicate with users.

Windows Workflow stack (except WF) have had a good progress and it’s predictable that can have a more vita role in newer projects.

In my opinion some parts of the results are not very reliable especially the part for ASP.NET MVC.

Windows Workflow and CardSpace could not achieve their goals in these years and they’re likely failed projects.

Modern data interaction technologies have a good demand and usage which reminds us of the necessity of easier data manipulation in modern software.

In the end, I hope that Scott can present more surveys with a better organization which fit to his audience. He has a great range of readers and followers that can help his surveys. For example, one good topic for a survey can be a general research in open source software among .NET developers, and their interest to contribute to this community or use open source products as well as the importance and position of open source inside Microsoft and its outside.

[advertisement] Axosoft OnTime 2008 is four developer tools in one: bug tracking, project wiki, feature management, and help desk. It manages your development process so developers can focus on coding. Installed or Hosted – Free Single-user license -- Free 30-day team trial.

2 Comments : 10.24.08

Feedbacks

 avatar
#1
Dew Drop - October 25, 2008
10.25.2008 @ 10:30 AM

Pingback from Dew Drop - October 25, 2008 | Alvin Ashcraft's Morning Dew

Pingback from Reflective Perspective - Chris Alcock » The Morning Brew #209

Leave a Comment