Designing .NET Class Libraries: Designing Progressive APIs

 

Learn how to design APIs that are appropriate for a broad range of user personas, while at the same time providing a unified framework with gradients between levels of complexity.


Notes from CLR Program Manager Joe Duffy...

Slide 1: This talk is highly complimentary to the API Usability presentation

Slide 2: Steven is the usability engineer from the last presentation... his blog is available at https://blogs.msdn.com/stevencl/. Anders is a Distinguished Engineer here at MS, and the chief designer of C# (https://en.wikipedia.org/wiki/Anders_Hejlsberg).

Slides 3-5: It really is amazing to observe first-hand the different problem solving styles for the three primary personas. It’s quite noticeable, for example, during usability studies. Which persona do you feel like you fall under? What about your target user? You actually don’t need to reuse one of these three, a lot of teams go ahead and create their own...it’s a pretty common and well documented activity in requirements development.

Slide 7: I love how Krzysztof casually says, "Oh well, I suppose I'll switch from VB to MFC." Easier said than done... ;)

Slide 8: How did we do on this goal in the Framework? That is, were we successful in making it straightforward to progress from the accessible, common programming tasks on up through the complex, powerful functionality needed in some situations? Any areas you think we did particularly good with? Bad?

Slide 9: Just to reiterate: This is the most important point in this talk, the 1st principle of API design. If you take only one thing away from this talk, it needs to be that API design should start with writing (or at least think hard about) code samples... before diving too deep into your API details and implementation.

Slide 12: Our UE (user education) writers are awesome, and as Krzys mentions our docs have gotten more progressive over time. However, our score as API designers is directly proportional to the amount of time you have to spend with your nose in the docs, trying to figure out how to use an API or decoding confusing exception messages.

Download The Video

56k 100k 300k