Paradoxes of API Design
From APIDesign
Line 2: | Line 2: | ||
Are you asking now why some API design advices feel so unnatural? Why they are so different compared to the best practices that we learned while working on our small projects or on in-house projects of any size? The reason is that even a small shift in the initial conditions may result in completely opposite advice which may seem paradoxical. However that does not mean such advice is not useful and the [[Paradoxes of API Design|chapter 14]] describes some of them and explains why adhering to them may be beneficial for any software project. | Are you asking now why some API design advices feel so unnatural? Why they are so different compared to the best practices that we learned while working on our small projects or on in-house projects of any size? The reason is that even a small shift in the initial conditions may result in completely opposite advice which may seem paradoxical. However that does not mean such advice is not useful and the [[Paradoxes of API Design|chapter 14]] describes some of them and explains why adhering to them may be beneficial for any software project. | ||
+ | |||
+ | == Money or Trust? == | ||
+ | |||
+ | This chapter also contains a note about the importance of trust in the API design. If you broke your promise of [[BackwardCompatibility]] once, you repel clients of your API to alternative offerings. It is hard for them to believe that they should once again build their application on top of your API and risk similar problems again. | ||
+ | |||
+ | I compared this situation with the importance of trust among banks and today, in the days of worldwide financial problems, I've found confirmation of my parallel: | ||
+ | |||
+ | ''Trust is a reciprocal relationship, dependent upon a desire to be considered decent and honourable. Even in the dog-eat-dog financial markets, trust and integrity are matters of self-interest. However amoral you may be, it is in your interest to care about your reputation, because if you behave badly you will not do business with me - or others - on favourable terms again. Trust matters.'' | ||
+ | |||
+ | Will Hutton, [http://www.guardian.co.uk/commentisfree/2008/sep/28/globaleconomy.creditcrunch Guardian] | ||
+ | |||
+ | Does that mean we need more [[BackwardCompatibility]] in our APIs in order to prevent collapse of software industry comparable to the one on financial markets? |
Revision as of 10:19, 30 September 2008
Have You Ever Wondered...?
Are you asking now why some API design advices feel so unnatural? Why they are so different compared to the best practices that we learned while working on our small projects or on in-house projects of any size? The reason is that even a small shift in the initial conditions may result in completely opposite advice which may seem paradoxical. However that does not mean such advice is not useful and the chapter 14 describes some of them and explains why adhering to them may be beneficial for any software project.
Money or Trust?
This chapter also contains a note about the importance of trust in the API design. If you broke your promise of BackwardCompatibility once, you repel clients of your API to alternative offerings. It is hard for them to believe that they should once again build their application on top of your API and risk similar problems again.
I compared this situation with the importance of trust among banks and today, in the days of worldwide financial problems, I've found confirmation of my parallel:
Trust is a reciprocal relationship, dependent upon a desire to be considered decent and honourable. Even in the dog-eat-dog financial markets, trust and integrity are matters of self-interest. However amoral you may be, it is in your interest to care about your reputation, because if you behave badly you will not do business with me - or others - on favourable terms again. Trust matters.
Will Hutton, Guardian
Does that mean we need more BackwardCompatibility in our APIs in order to prevent collapse of software industry comparable to the one on financial markets?