O'Reilly logo

Making Software by Greg Wilson, Andy Oram

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

First Attempts at Studying API Usability

It seems obvious now that the usability of an API plays a critical part in the overall developer experience. But at the time that I joined the Visual Studio user experience team, it simply didn’t occur to me.

As a developer who had used Visual Studio before joining the Visual Studio team, I was often frustrated by the tools I used. Compiler settings were difficult to find and set. Configuring library paths seemed cumbersome. These were the types of usability issues that I wanted to fix when I joined the Visual Studio user experience team.

It’s not that I hadn’t experienced any difficulties with the Microsoft APIs. On the contrary, some of the biggest difficulties I had faced were related to understanding how the Microsoft Foundation Classes (MFC) APIs worked. But in stark contrast to the way I responded to the tools when they didn’t work as I expected them to, I blamed myself for not being able to figure out how to use MFC. Not once did I think that the problem could have been with the design of the API.

This reaction to a badly designed API can be quite common. Many developers explain away the difficulties they are having with an API by putting it down to their lack of experience with the API. If they only had enough time, they could work it out. I have heard many developers say that the problem is with them, that they aren’t smart enough to figure out how to use an API.

So, even though I was part of the Visual Studio user experience team, the ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required