Welcome to MSDN Blogs Sign in | Join | Help

Guess what. SDKs are products

I think most SDKs spawn because of the well-intentioned idea that a piece of software should do everything it can for everybody. A lot of good ideas start this way. But you know about the road to hell, right?

You've created a product and it's pretty cool. The devs who worked on it used sound software engineering principles when they designed a robust, extensible architecture, pretty much. I say pretty much because they were pressed for time and cut some corners in some places in order to meet some deadline. From there, the germ to create an SDK is born.

But that's not a product.

You run some automated tool to extract comments from the code and it turns out those comments are pretty good. You throw it up on a Web site and people start downloading it.

But that's not a product.

You start getting a lot of questions on the SDK and you publish some papers up on the Web site. A couple of the devs start writing stuff in their blogs. They get awards for being “responsive.” Some SDK user writes a useful application that mines one of the gaps created when the aforementioned deadline pressure meant cutting a feature.

But that's not a product.

A whole lot of downloaders complain about the SDK and the especially the docs, which they see as two different things. And a couple of PMs and Lead Writers are called in to put some lipstick on a pig – an expression we use in the States.

But that's not a product.

Part 2 - Guess what. SDKs are products

What didn't happen that should happen? Products generally don’t get the green light simply because we have the means to create them. Usually, a more robust justification is required. But SDKs don't get this treatment because, as one of my bosses used to say, they are targets of opportunity.

I think that we need to get our heads around the idea that SDKs are products and users of SDKs are consumers.

Having said that, I think SDKs would be more successful if the same rigor were applied to them as is applied to any other product. I'm not sure what I mean by successful here, but it isn't simply the number of downloads.

To produce a successful SDK, you also need to think about these tasks.

  • Develop a robust business case for the feature. Identify how the content maps to satisfying a value proposition.
  • Develop formal user profiles.
  • Conduct a high level task analysis
  • Develop specific usability goals even for the API (as Stevencl outlines http://blogs.msdn.com/stevencl/)
  • Develop a plan/schedule for product development that includes user testing of the content and robust development of samples that map to a crawl/walk/run strategy for specific outcomes.
  • Develop a product support plan and get funding for that.
  • Develop a set of specific UE goals, such as how the feature will be implemented and documented for a specific beta or usability test.
  • Understand the level of community planned.

This takes time and costs money. Being good at this type of planning (by doing it over and over again) eventually would make it less of a hassle.

If you want to measure improvement, you'll have to build that into the planning, too. I don't think that's crazy talk.

Minor correction - I managed to remove the html formatting to Steven Clarke's blog so I took the opportunity to fix the spelling of his name as well.

Published Monday, January 22, 2007 2:40 PM by franla

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

Monday, January 22, 2007 6:25 PM by johnkenn

# re: Guess what. SDKs are products

How big does an SDK have to before it needs more than just comments created by the developers who have written it?

Tuesday, January 23, 2007 2:25 PM by franla

# re: Guess what. SDKs are products

I think the answer to that question is that depends. Yes, a cop out.

A lot depends on how well the API was designed. Can the design patterns be understood in a very easy way? Are there lots of common get and set properties for example.

In general, you have to know the audience. For me that seems to boil down to two things: what is the user trying to do, and what context are they in?

A lot of contexts have a lot of built-in knowledge. For example, a carpenter has to put in a door. Is it new construction, old construction, just the door, pre-hung door? One look at the job site and he has a pretty good idea of what tools he'll need. Is the API like that?

If you can answer those questions then you can move onto how many people will actually use this API? Twenty? 2,000?

These are all fairly basic questions, I admit. One might even call it market segmentation but that betrays an underlying business analysis and who'd want to do that?

Leave a Comment

(required) 
required 
(required) 
 
Page view tracker