The Learning Curve

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. "urn:schemas-microsoft-com:office:office" />

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.