Showing posts with label Software. Show all posts
Showing posts with label Software. Show all posts

Monday, March 04, 2013

The challenges of a software API Design



Designing APIs poses multiple challenges, among them:
  • APIs are targeted at developers
  • APIs have 'stickiness'. A bad APIs is a nightmare for years as many internal and extenal apps depend on it.
  • APIs are shared by many applications, so problems can impact multiple applications (differently)
  • APIs must be discoverable, intuitive, and use consistent conventions
  • Versioning and backwards compatibility on change
  • Good (and updated/correct) documentation is required
  • Likewise, automated testing is required

But there are benefits for exposing APIs even internally:

  • hide implementation
  • reuse code
  • reduce duplication
  • easier to optimize
Exposing APIs externally has many market benefits that we'll discuss separately. Just note that all major platforms (Facebook, Linkedin, Windows/Win32) are really APIs; and being a 'platform' can be very beneficial to a provider.

Wednesday, February 27, 2013

Innovation Technique: JTBD (Jobs To Be Done)

Jobs To Be Done: Instead of focusing on what you are doing, focus on the jobs your customers (internal or external) are trying to accomplish. Instead of improving the lawnmowers you are manufacturing, maybe you should genetically engineer grass? (the job to be done: keep lawn looking tidy). Software industry relevance: similar to User Stories, but much more higher level than most people use User Stories. Based in part on The Innovators Toolkit