You can lead a programmer to .NET, but you can't make them code

Jason Haley asks: What do you do with people who are still putting off learning .NET?

From my standpoint, you keep improving .NET until they start getting the message that .NET is +the+ platform of the future.

via [Scobleizer: Microsoft Geek Blogger]

But what constitutes "improvement" in a programming platform turns out to defy common wisdom. Look at the most successful languages in the last 25 years: Java, C++, Visual Basic, dBase, Turbo Pascal, Basic, and C. There are two obvious tracks: ease of use (Basic, dBase, VB) and power (C, C++). But Turbo Pascal and Java balance ease of use and power. And while most will grant C/C++ the crown on the "power" axis, "ease of use" clearly fails to capture elements of the success of Basic, dBase, and VB: if it's ease of use, why didn't Smalltalk achieve mass success? If Turbo Pascal, why not Modula-2? If "powerful programming constructs" why not Oz?
 
One of the "common wisdom" sayings is that programming language syntax is no longer as important as it once was, because the behavior of programs are now governed much more by the abstractions embodied in the standard library (in .NET, the Base Class Library). This is true, but programming passion attaches to syntax. Nonsense like "Python is twice as productive as C\# or Java" is taken at face value.
 
Improving .NET is not (just) a matter of increasing the power of and introducing more abstractions into the BCL. It's true that making it clear that managed environments like .NET and the JVM are neither fads nor safety wheels for "real programmers" is important, but equally, the ramp between power user and programmer must be repaired.