Developers Are Users Too

I'm currently whipping up a mini-API for the BetaBrite-specific subset of the Alpha Sign Communications Protocol. Naturally, I want it to be easy to use and understandable for other developers-- a classic usability problem. How do you approach usability when your audience is other developers?


This is a companion discussion topic for the original blog entry at: http://www.codinghorror.com/blog/2005/03/developers-are-users-too.html

if something is hard to document, it can often mean that it was poorly designed

Makes sense to me. Luckily, most of .NET is a pleasure to work with-- the things I expect to be there, are just ‘there’, and it’s quite consistent.

The one area of .NET that has been a real disappointment to me is ASP.NET. I really struggle with the whole “let’s pretend the web is a windows forms environment” model. It really doesn’t map well-- and the model breaks down all over the place. I think that’s why you see prominent developers abandoning the forms model entirely:

http://www.iunknown.com/commentswithentry.aspx?entryid=a03a77b1-2ad8-407e-9631-e656d5513814

http://mikeroberts.thoughtworks.net/blog/archive/Tech/dotNet/GoodbyeWebForms.html

http://dotnetguy.techieswithcats.com/archives/004300.shtml

I don’t have an answer, but that’s the area of the framework where I’ve struggled the most. I see the merit of the concept, and I agree that we need something better-- but I am not sure the webforms model really works.

As regards your last point, it’s been observed in UE/UA circles that if something is hard to document, it can often mean that it was poorly designed. Assuming competent writers and such, of course. A bad design that doesn’t map to user’s requirements or expectations requires hard-to-write documentation that people don’t want to read anyway.

I’m really hoping ASP.NET 2.0 is a big improvement, because I sure don’t want to go back to embedding a bunch of % % tags in HTML, ala classic ASP or PHP…

Some other resources on API usability:

http://openide.netbeans.org/tutorial/api-design.html
http://www.artima.com/interfacedesign/
http://www.codeproject.com/gen/design/APIUsabilityArticle.asp
http://www.artima.com/forums/flat.jsp?forum=106thread=142428
http://www.cafeconleche.org/slides/javapolis/xom/index.html
http://www.orocos.org/documentation/deep-shallow-api.html
http://developers.sun.com/learning/javaoneonline/2006/coreplatform/TS-6218.pdf
http://www.martinfowler.com/bliki/HumaneInterface.html

I completely agree with you regarding ASP.NET. I have come from a primarily forms and console-based application experience and am trying my hand at web development. Using ASP.NET is not intuitive at all with all of the analogies that are obvious from the form development in VS.NET. Events don’t fire like you think they would is my main complaint(although I know why now).