C# 3.0 is reaching a point where a developer with only a few months experience will be unable to read what an "advanced developer" will be writing for, say, data access. This has an impact, particular on businesses that are looking to hire developers to work on their applications. If you like, the total cost of ownership of a developer is going to go up, because they will need more training and more experience before they can get into the code to maintain it.
This is an important point of view, but only one part of the puzzle.
Even if Microsoft is trying to differentiate the languages and make VB more RAD like than C#, Visual Basic is generally taking the same route with LINQ.
I think Microsoft expects the increase in productivity will more than compensate for the increase in complexity. And given what I have seen about LINQ (and all the LINQ supporting features that are being added to the languages), I think this is how things will be.
But there are ingredients in the mix:
- You can expect more good designers (graphical RAD tools) from Microsoft, that will help encapsulate complex components, the way the Typed DataSet designer does in Whidbey. So let those designers come to the rescue both for pros and beginners.
- With DLINQ most of the magic is under the hood. You don't need to touch the mapping of the database tables with the data types in your code. Less code to mantain, fewer bugs.
- Using queries, lambda expressions, comprehensionsons, class extensions, projections or whatever, is not something you will do to obscure your code. All those features, when used in the right context, have the power to simplify code. They take less lines of code, are more natural, and just make more sense than the existing practices. Compare a query expression with tens of lines of spaghetti concatenated SQL, field accessors data type conversions and null checks. That is expresiveness.
- If the names of these features seem frightening, just use friendlier names.
- There is nobody more conservative about adding features to C# than Anders. You can be sure for every feature added, there are thousands that never left the whiteboard.
As a developer I am today very happy with the investment I have made in .NET. Let's see how long it takes now for Java to catch up.