From d296937e62c06d2ef1f35ecf2150cd07260f75af Mon Sep 17 00:00:00 2001 From: Sergey Konstantinov Date: Sat, 8 Jul 2023 23:45:23 +0300 Subject: [PATCH] Proofreading --- docs/API.en.epub | Bin 1799544 -> 1799522 bytes docs/API.en.html | 84 +++++++++--------- docs/API.en.pdf | Bin 9318064 -> 9317561 bytes docs/API.ru.epub | Bin 1959981 -> 1959982 bytes docs/API.ru.html | 8 +- docs/API.ru.pdf | Bin 9203466 -> 9203426 bytes .../07-Section VI. The API Product/03.md | 26 +++--- .../07-Section VI. The API Product/04.md | 58 ++++++------ .../02.md | 4 +- .../07-Раздел VI. API как продукт/04.md | 4 +- 10 files changed, 92 insertions(+), 92 deletions(-) diff --git a/docs/API.en.epub b/docs/API.en.epub index 71ced783049a1846e1831d6181be2672feaa6837..a5381c594bdd6d241df862ab81792bb3bb52e8c9 100644 GIT binary patch delta 27387 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 delta 27241 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 diff --git a/docs/API.en.html b/docs/API.en.html index a1cdd44..f182c42 100644 --- a/docs/API.en.html +++ b/docs/API.en.html @@ -5799,93 +5799,93 @@ do {

Sometimes providing APIs is a method to “probe the ground,” i.e., to evaluate the market and decide whether it's worth having a full-scale user service there. (We rather condemn this practice as it inevitably leads to discontinuing the API or limiting its functionality, either because the market turns out to be not as profitable as expected, or because the API eventually becomes a competitor to the main service.)

Chapter 53. Developing a Product Vision 

-

The above-mentioned fragmentation of the API target audience, i.e., the “developers — business — end users” triad, makes API product management quite a non-trivial problem. Yes, the basics are the same: find your audience's needs and satisfy them; the problem is that your product has several different audiences, and their interests sometimes diverge. The end users' request for an affordable cup of coffee does not automatically imply business demand for a coffee machine API.

+

The above-mentioned fragmentation of the API target audience, i.e., the “developers — business — end users” triad, makes API product management quite a non-trivial problem. Yes, the basics are the same: find your audience's needs and satisfy them. The problem is that your product has several different audiences, and their interests sometimes diverge. The end users' request for an affordable cup of coffee does not automatically imply business demand for a coffee machine API.

Generally speaking, the API product vision must include the same three elements:

  • Grasping how end users would like to have their problems solved
  • Projecting how businesses would solve those problems if appropriate tools existed
  • -
  • Understanding what technical solutions for developers might exist to help them implement the functionality businesses would ask for, and where are the boundaries of their applicability.
  • +
  • Understanding what technical solutions for developers might exist to help them implement the functionality businesses would ask for, and where the boundaries of their applicability lie.
-

In different markets and different situations, the “weight” of each element differs. If you're creating an API-first product for developers with no UI components, you might skip the end users' problems analysis; and, by contrast, if you're providing an API to extremely valuable functionality and you're holding a close-to-monopolistic position on the market, you might actually never care about how developers love your software architecture or how convenient your interfaces are for them — as they simply have no other choice.

+

In different markets and different situations, the “weight” of each element differs. If you're creating an API-first product for developers with no UI components, you might skip the end users' problem analysis. On the other hand, if you're providing an API with extremely valuable functionality and you hold a close-to-monopolistic position in the market, you might actually not care about how developers love your software architecture or the convenience of your interfaces for them, as they simply have no other choice.

Still, in the majority of cases, we have to deal with two-step heuristics based on either technical capabilities or business demands:

    -
  • You might first form the vision of how you might help business owners given the technical capabilities you have (heuristics step one). Then, the general vision of how your API will be used to satisfy end users' needs (heuristics step two), or
  • -
  • Given your understanding of business owners' problems, you might make one heuristic “step right” to outline future functionality for end users and one “step left” to evaluate possible technical solutions.
  • +
  • You might first form the vision of how you can help business owners given the technical capabilities you have (heuristics step one) then develop a general vision of how your API will be used to satisfy end users' needs (heuristics step two), or
  • +
  • Given your understanding of business owners' problems, you can take one heuristic “step right” to outline future functionality for end users and one “step left” to evaluate possible technical solutions.
-

As both approaches are still heuristic, the API product vision is inevitably fuzzy, and it's rather normal: if you could have got a full and clear understanding of what end-user products might be developed on top of your API, you might have developed them on your own behalf, skipping intermediary agents. It is also important to keep in mind that many APIs pass the “terraforming” stage (see the previous chapter) thus preparing the ground for new markets and new types of services — so your idealistic vision of a nearby future where delivering freshly brewed coffee by drones will be a norm of life is to be refined and clarified while new companies providing new kinds of services are coming to the market. (Which in its turn will make an impact on the monetization model: detailing the countenance of the forthcoming will make your abstract KPIs and theoretical benefits of having an API more and more concrete.)

-

The same fuzziness should be kept in mind while making interviews and getting feedback. Software engineers will mainly report the problems they've got with the technical integrations, and rarely speak of business-related issues; meanwhile, business owners care little about the inconvenience of writing code. Both will have some knowledge regarding the end users' problems, but it's usually limited to the market segment the partner operates on.

-

If you do have an access to end users' actions monitoring (see “The API Key Performance Indicators” chapter), then you might try to analyze the typical user behavior through these logs and understand how users interact with the partners' applications. But you will need to make this analysis on a per-application basis and try to clusterize the most common scenarios.

+

Since both approaches are still heuristic, the API product vision is inevitably fuzzy, and that's quite normal. If you had a full and clear understanding of what end-user products could be developed on top of your API, you might have developed them yourself, bypassing intermediary agents. It is also important to keep in mind that many APIs go through the “terraforming” stage (see the previous chapter), preparing the ground for new markets and new types of services. Therefore, your idealistic vision of a nearby future where delivering freshly brewed coffee by drones becomes the norm of life is to be refined and clarified as new companies providing new kinds of services enter the market. (This, in turn, will impact monetization models as detailing the countenance of the forthcoming will make your abstract KPIs and theoretical benefits of having an API more and more concrete.)

+

The same fuzziness should be kept in mind when conducting interviews and gathering feedback. Software engineers will mainly report problems they encountered during technical integrations and rarely discuss business-related issues. Meanwhile, business owners care little about the inconvenience of writing code. Both groups will have some knowledge regarding end users' problems, but it's usually limited to the market segment in which the partner operates.

+

If you do have access to end users' action monitoring (see “The API Key Performance Indicators” chapter), you can try to analyze typical user behavior through these logs and understand how users interact with the partners' applications. However, you will need to conduct this analysis on a per-application basis and attempt to clusterize the most common scenarios.

Checking Product Hypotheses

-

Apart from the general complexity of formulating the product vision, there are also tactical issues with checking product hypotheses. “The Holy Grail” of product management — that is, creating a cheap (in terms of resource spent) minimal viable product (MVP) — is normally unavailable for an API product manager. The thing is that you can't easily test the solution even if you managed to develop an API MVP: to do so, partners are to develop some code, i.e., invest their money; and if the outcome of the experiment is negative (meaning that the further development looks unpromising), this money will be wasted. Of course, partners will be a little bit skeptical towards such proposals. Thus a “cheap” MVP should include either the compensation for partners' expenses or the budget to develop a reference implementation (i.e., a complementary application that is created to support the API MVP).

-

You might partially solve the problem by making some third-party company release the MVP (for example, in a form of an open-source module published in some developer's personal repository) but then you will struggle with hypothesis validation issues as such modules might easily go unnoticed.

-

Another option for checking conjectures is recruiting some other developers within the API provider company to try the API in their services. Internal customers are usually much more loyal towards spending some effort to check a hypothesis, and it's much easier to negotiate MVP curtailing or freezing with them. The problem is that you can check only those ideas that are relevant to the company's internal needs.

-

Also, applying the “eat your own dog food” concept to APIs means that the API product team should have their own test applications (so-called “pet projects”) on top of the API. Given the complexity of developing such applications, it makes sense to encourage having them, e.g., by giving free API quotas to team members and providing sufficient free computational resources.

-

Such pet projects are also valuable because of the unique experience they allow to gain: everyone might try a new role. Developers will learn product managers' typical problems: it's not enough to write fine code, you also need to know your customer, understand their demands, formulate an attractive concept, and communicate it. In their turn, product managers will get some understanding of how exactly easy or hard it is to render their product vision into life, and what problems the implementation will bring. Finally, both will benefit from taking a fresh look at the API documentation and putting themselves in the shoes of a developer who heard about the API product for the first time and is now struggling with grasping the basics.

Chapter 54. Communicating with Developers 

-

As we have described in the previous chapters, managing an API product requires building relations with both business partners and developers. (Ideally, with end users as well; though this option is seldom available to API providers.)

-

Let's start with developers. The specifics of software engineers as an audience are the following:

+

In addition to the general complexity of formulating the product vision, there are also tactical issues with checking product hypotheses. “The Holy Grail” of product management — creating a cheap (in terms of resource expenditure) minimal viable product (MVP) — is typically unavailable for an API product manager. The reason is that you can't easily test the solution even if you manage to develop an API MVP. To do so, partners would need to develop an application, i.e., invest their money. If the outcome of the experiment is negative, meaning that further development appears unpromising, this money will be wasted. Of course, partners will be a little bit skeptical towards such proposals. Therefore, a “cheap” MVP should include either compensation for partners' expenses or a budget to develop a reference implementation (i.e., a complementary application specifically developed to support the API MVP).

+

You can partially address the problem by having a third-party company release the MVP, for example, in the form of an open-source module published in a developer's personal repository. However, you will struggle with hypothesis validation issues as such modules might easily go unnoticed.

+

Another option for checking conjectures is recruiting other developers within the API provider company to try the API in their services. Internal customers are usually much more loyal towards spending some effort to check a hypothesis, and it's much easier to negotiate MVP curtailing or freezing with them. The problem is that you can only validate those ideas that are relevant to the company's internal needs.

+

Also, applying the “eat your own dog food” concept to APIs means that the API product team should have their own test applications (so-called “pet projects”) on top of the API. Given the complexity of developing such applications, it makes sense to encourage having them, for example, by giving free API quotas to team members and providing sufficient free computational resources.

+

Such pet projects are also valuable because of the unique experience they allow to gain: everyone might try a new role. Developers will learn about product managers' typical problems: it's not enough to write good code, you also need to know your customer, understand their demands, formulate an attractive concept, and effectively communicate it. On the other hand, product managers will gain understanding of how exactly easy or hard it is to bring their product vision to life and what challenges they may face. Finally, both groups will benefit from taking a fresh look at the API documentation and putting themselves in the shoes of a developer who is hearing about the API product for the first time and struggling to grasp the basics.

Chapter 54. Communicating with Developers 

+

As we have described in the previous chapters, managing an API product requires building relationships with both business partners and developers. (Ideally, with end users as well, although this option is seldom available to API providers.)

+

Let's start with developers. The specifics of software engineers as an audience are as follows:

    -
  • Developers are highly-educated individuals with practical thinking; as a rule, they choose technical products with extreme rationality (unless you're giving them cool backpacks with fancy prints for free). +
  • Developers are highly educated individuals with practical thinking. As a rule, they choose technical products with extreme rationality (unless you're giving them cool backpacks with fancy prints for free).
      -
    • This doesn't prevent them from having a certain aptitude towards, let's say, specific programming languages or frameworks; however, affecting those aptitudes is extremely hard and is normally not in the API vendor's power.
    • +
    • This doesn't prevent them from having a certain aptitude towards, let's say, specific programming languages or frameworks; however, influencing those aptitudes is extremely hard and is normally not within the API vendor's power.
  • -
  • In particular, developers are quite skeptical towards promotional materials and overstatements and are ready to actually check whether your claims are true.
  • -
  • It is very hard to communicate to them via regular marketing channels; they get information from highly specialized communities, and they stick to opinions proved by concrete numbers and examples (ideally, code samples). +
  • Developers are quite skeptical towards promotional materials and overstatements. They are ready to actually check whether your claims are true.
  • +
  • It is very hard to communicate with developers via regular marketing channels. They get information from highly specialized communities and they stick to opinions proved by concrete numbers and examples (ideally, code samples).
      -
    • The “influencers” words are not very valuable to them, as no opinions are trusted if unsubstantiated.
    • +
    • The words of “influencers” are not very valuable to them, as no opinions are trusted if unsubstantiated.
  • -
  • The Open Source and free software ideas are widespread among developers If you try to make money out of things that must be free and/or open from their point of view (for example, by proclaiming interfaces an intellectual property), you will face resistance (and views on this “musts”… differ).
  • +
  • The ideas of open source and free software are widespread among developers If you try to make money out of things that they believe should be free and/or open (for example, by proclaiming interfaces as intellectual property), you will face resistance (and views on these “shoulds” differ).
-

Because of the above-mentioned specifics (first of all, the relative insignificance of influencers and the critical attitude towards promotions), you will have to communicate to developers via very specific media:

+

Because of the aforementioned specifics (especially the relative insignificance of influencers and the critical attitude towards promotions), you will have to communicate to developers via very specific media:

  • Collective blogs (like the “r/programming” subreddit or dev.to)
  • -
  • Q&A sites (StackOverflow, Experts Exchange)
  • -
  • Educational services (CodeAcademy, Udemy)
  • +
  • Q&A sites (Stack Overflow, Experts Exchange)
  • +
  • Educational services (Codecademy, Udemy)
  • Technical conferences and webinars.
-

In all these channels, the direct advertising of your API is either problematic or impossible. (Well, strictly speaking, you may buy the banner on one of the sites advertising the advantages of your API, but we hardly doubt it will improve your relations with developers.) You need to generate some valuable and/or interesting content for them, which will improve the knowledge of your API. And this is the job for your developers: writing articles, answering questions, recording webinars, and giving pitches.

-

Developers do like sharing the experience, and will probably be eager to do it — during their work hours. A proper conference talk, let alone an educational course, requires a lot of preparation time. Out of this book's author's experience, two things are crucial for tech-PR:

+

In all these channels, direct advertising of your API is either problematic or impossible. (Well, strictly speaking, you may buy a banner on one of the sites advertising the advantages of your API, but we highly doubt it will improve your relations with developers.) You need to generate valuable and/or interesting content for them, which will improve their knowledge of your API. And this is the job for your developers: writing articles, answering questions, recording webinars, and giving pitches.

+

Developers enjoy sharing their experiences and will probably be eager to do so — during their work hours. A proper conference talk, let alone an educational course, requires a lot of preparation time. From this book's author's experience, two things are crucial for tech PR:

  • Incentives, even nominal ones — the job of promoting a product should be rewarded
  • -
  • Methodicalness and quality standards — you might actually do the content review just like you do the code review.
  • +
  • Methodicalness and quality standards — you might actually do content review just like you do code review.
-

Nothing could make the worse counter-advertising for your product than a poorly prepared pitch (as we said, the mistakes will be inevitably found and pointed to) or a badly camouflaged commercial in a form of a pitch (the reason is actually the same). Texts are to be worked upon: pay attention to the structure, logic, and tempo of the narration. Even a technical story must be finely constructed; after it's ended, the listeners must have a clear understanding of what idea you wanted to communicate (and it'd rather be somehow coupled with your API's fitness for their needs).

-

A word on “evangelists” (those are people who have some credibility in the IT community and work on promoting a technology or a tech company, being a company's contractor or even a staff member, effectively carrying out all those above-mentioned activities like blog-posting, course-preparing, conference-speaking, etc.) Having an evangelist makes the API development team exempt from the necessity of performing the tech-PR. However, we would rather advise having this expertise inside the team, as direct interaction with developers helps with forming the product vision. (That doesn't mean the evangelists are not needed at all - you might well combine these two strategies.)

+

Nothing could be worse counter-advertising for your product than a poorly prepared pitch (as we said, mistakes will inevitably be found and pointed out) or a badly camouflaged commercial in the form of a pitch (the reason is actually the same). Texts need to be worked upon: pay attention to the structure, logic, and tempo of the narration. Even a technical story must be finely constructed; after it's ended, the listeners must have a clear understanding of the idea you wanted to communicate (and it should rather be linked with your API's fitness for their needs).

+

A word on “evangelists” (those are people who have credibility in the IT community and work on promoting a technology or a tech company, either as a company's contractor or even a staff member, effectively carrying out all those aforementioned activities, such as blog posting, course preparing, conference speaking, etc.) Having an evangelist makes the API development team exempt from the necessity of performing tech PR. However, we would rather advise having this expertise inside the team, as direct interaction with developers helps in forming the product vision. (That doesn't mean evangelists are not needed at all - you might well combine these two strategies.)

Open Source

-

The important question which sooner or later will stand in any API vendor's way is making the source code open. This decision has both advantages and disadvantages:

+

The important question that will sooner or later arise for any API vendor is whether to make the source code open. This decision has both advantages and disadvantages:

  • You will improve the knowledge of the brand, and some respect will be paid to you by the IT community.
      -
    • That's given your code is finely written and commented.
    • +
    • Given that your code is finely written and commented.
  • -
  • You will get some additional feedback — ideally, pull requests from third-party developers +
  • You will receive some additional feedback, ideally in the form of pull requests from third-party developers.
      -
    • And you will also get a number of inquiries and comments ranging from useless to obviously provocative ones, to which you will have to respond politely.
    • +
    • You will also receive a number of inquiries and comments ranging from useless to obviously provocative ones, to which you will have to respond politely.
  • Donating code to open source makes developers trust the company more, and affects their readiness to rely on the platform.
      -
    • But it also increases risks, both from the information security point of view and from the product one, as a dissatisfied community might fork your repo and create a competing product.
    • +
    • However, it also increases risks, both from an information security point of view and in terms of the product, as a dissatisfied community might fork your repository and create a competing product.
-

Finally, just the preparations to make the code open might be very expensive: you need to clean the code, switch to open building and testing tools, and remove all references to proprietary resources. This decision is to be made very cautiously, after having all pros and cons elaborated over. We might add that many companies try to reduce the risks by splitting the API code into two parts, the open one and the proprietary one, and also by selecting a license that disallows harming the company's interests by using the open-sourced code (for example, by prohibiting selling hosted solutions or by requiring the derivative works to be open-sourced as well).

+

Finally, just the preparations to make the code open might be very expensive. You need to clean the code, switch to open building and testing tools, and remove all references to proprietary resources. This decision is to be made very cautiously after considering all pros and cons. We might add that many companies try to reduce the risks by splitting the API code into two parts: the open one and the proprietary one. Additionally, the risks could be mitigated by selecting a license that disallows harming the company's interests by using the open-sourced code (for example, by prohibiting selling hosted solutions or by requiring the derivative works to be open-sourced as well).

The Audience Fragmentation

-

There is one very important addition to the discourse: as informational technologies are universally in great demand, a significant percentage of your customers will not be professional software engineers. A huge number of people are somewhere on the track of mastering the occupation: someone is trying to write code in addition to the basic duties, another one is being retrained now, and the third one is studying the basics of computer science on their own. Many of those non-professional developers make a direct impact on the process of selecting an API vendor — for example, small business owners who additionally seek to automate some routine tasks programmatically.

-

It will be more correct if we say that you're actually working for two main types of audiences:

+

There is one very important addition to the discourse: as information technologies are universally in great demand, a significant percentage of your customers will not be professional software engineers. A huge number of people are somewhere on the path to mastering the occupation. Some are trying to write code in addition to the basic duties, others are undergoing retraining, and some are studying the basics of computer science on their own. Many of these non-professional developers have a direct impact on the process of selecting an API vendor, such as small business owners who seek to automate routine tasks programmatically.

+

It would be more accurate to say that API providers are actually working for two main types of audiences:

    -
  • Beginners and amateurs, for whom each of those integration tasks would be completely new and unexplored territory
  • +
  • Beginners and amateurs, for whom each integration task would be completely new and unexplored territory
  • Professional developers who possess vast experience in integrating different third-party systems.
-

This fact greatly affects everything we had discussed previously (except for, maybe, open-sourcing, as amateur developers pay little attention to it):

+

This fact greatly affects everything we discussed previously (except for, perhaps, open-sourcing, as amateur developers pay little attention to it):

    -
  • Your pitches, webinars, lectures, etc., must somehow fit both professional and semi-professional audiences.
  • -
  • A huge share of customers' inquiries to your customer support service will be generated by the first category of developers: it's much harder for amateurs or beginners to find answers to their questions by themselves, and they will address them to you.
  • +
  • Your pitches, webinars, lectures, etc., must somehow cater to both professional and semi-professional audiences.
  • +
  • A significant share of inquiries to your customer support service will be generated by the first category of developers. It is much harder for amateurs or beginners to find answers to their questions by themselves, and they will reach out to you for assistance.
  • At the same time, the second category is much more sensitive to the quality of both the product and customer support, and fulfilling their requests might be non-trivial.
-

Finally, it's almost impossible in a course of a single product to create an API that will fit well both amateur and professional developers: the former need the maximum simplicity of implementing basic use cases, while the latter seek the ability to adapt the API to match technological stack and development paradigms, and the problems they solve usually require deep customization. We will discuss the matter in “The API Services Range” chapter.

Chapter 55. Communicating with Business Owners 

+

Finally, it is almost impossible to create an API that will suit both amateur and professional developers well within a single product. The former need maximum simplicity in implementing basic use cases, while the latter seek the ability to adapt the API to match their technological stack and development paradigms and the problems they solve usually require deep customization. We will discuss this matter in the “API Services Range” chapter.

Chapter 55. Communicating with Business Owners 

The basics of interacting with business partners are to some extent paradoxically contrary to the basics of communicating with developers: