For the last couple of years we have given a quarterly internal class on how to write great APIs for WinFX.  One of the highlights in a class like this is the Q&A.  We built in some time for an hour+ long Q&A time with Anders Hejlsberg and I always learn something from those sessions. 

 

One of the pearls of wisdom I took away from yesterday’s class was Anders’ assertion that when the C language was developed the learning curve for most developers was 90% in learning the language and 10% in learning some libraries.  But today with C#, VB.NET, MC++, etc the learning curve is more like 10% for the language and 90% for the library.  (Well, OK, maybe it is 20% for the language in the case of C++ ;-)).  The relevant point for my class was that if most of the learning curve is in the library then to make the system easier to learn we have to focus on the library.  It is also worthwhile to think about what the implications of this assertion is on the great language debates (C# vs. VB vs C++ vs Eiffel vs Cobol vs Ruby vs Perl vs….)

 

As library designers the burden has moved to us to make the system easier to use.  In a lot of ways that is scary as the job is more diffuse across a wide range of library designers inside and outside of MS.  But the good news is that there is the design guidelines and tools such as FxCop to help.