I have just completed a new tutorial, Creating a DotNetNuke® Module using LINQ to SQL For absolute beginners! I just went through the tutorial from scratch and it took me 15 minutes. I estimate that it would take a beginner about 30 minutes. However, that same beginner would then be able to complete the tutorial in 15 to 20 minutes on their subsequent tries.
This is a significant time savings because this module has the exact same functionality as my previous tutorial. I estimate that the previous tutorial would take a beginner at least 1 1/2 hours. Most importantly the percentage of people who should be able to complete the tutorial is vastly higher due to the fact that it is significantly easier. This tutorial is mostly drag and drop. The amount of code you have to type is less than a printed page.
Handling the CRUD
The time savings is mostly attributed to the fact that creation of the data access layer mostly consists of creating a .dbml file and dropping a database table on to the Object Relational Designer. Linq to SQL handles the CRUD operations for you.
Setting Control Properties Instead of Creating Code
Another interesting aspect of this Linq to SQL tutorial is that it doesn't contain a single line of Linq in the code behind. All the code behind code that is created is to handle injecting the current ModuleId and UserID. The database operations for selecting records, inserting records, updating records, and deleting records are all handled by simply configuring the LinqDataSource control.
You would be incorrect to assume that this is not fully extensible and customizable. See the "Adding Business Validation Rules" section of ScottGU's blog.
Note: At this time using Linq to SQL requires the addition of some keys in the web.config of the DotNetNuke site. For this reason Linq to SQL is not a practical option for module developer's who are selling their modules. However, for internal development the web.config modifications are simple.
These Are Exciting Times
Linq and Linq to SQL are new technologies that bear little resemblance to code that I have been creating for more than 10 years. Having to "start from scratch" as a beginner is a major bruise to the ego. However, it does bring pleasure to explore new things and capture the excitement of discovery that attracted me to the programming profession in the first place.
Fear of failure to learn drastically different concepts and anger at the loss of prestige and advantage that years of programming experience has provided are common motivations to resists new technology. However, the advancements will continue whether we choose to participate in them or not.
The DotNetNuke project itself continues to be an example of rewriting all the rules. I cannot count how many programmers I know who refuse to consider levering DotNetNuke and continue to have late and over budget projects. If I am not the most efficient and productive programmer that I can be aren't I basically "robbing my employer"?
Disruptive Technology
Linq to SQL and other recent technologies from Microsoft represents a "Disruptive Technology". Wikipedia.org defines Disruptive Technology as "a technological innovation, product, or service that eventually overturns the existing dominant technology or status quo product in the market". I believe that in this case it does this by saving time and allowing for a "lower barrier of entry" for an aspiring programmer.
A future aspiring programmer/full-time carpet salesperson could create a page to store the companies customer list in the companies DotNetNuke website rather than waiting for months to have one of the overwhelmed DotNetNuke consulting firms to do it for them.
I believe this will be a good thing for all of us. While it may result in yet another poorly coded application that one of the DotNetNuke consulting firms may be called in later to "rescue", it may also turn out to be a successful application that saves a company thousands in time and money. This will contribute to our growth. And that I believe will be good for everyone.