<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Hoss</title>
    <description>The latest articles on DEV Community by Hoss (@hoss).</description>
    <link>https://dev.to/hoss</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F2280%2Fc19be14e-918f-4a71-83b0-b79d0a2617ed.png</url>
      <title>DEV Community: Hoss</title>
      <link>https://dev.to/hoss</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hoss"/>
    <language>en</language>
    <item>
      <title>Developer Enablement Unpacked: Developer Experience, Relations, and Marketing</title>
      <dc:creator>Matt Hawkins</dc:creator>
      <pubDate>Fri, 14 May 2021 22:20:16 +0000</pubDate>
      <link>https://dev.to/hoss/developer-enablement-unpacked-developer-experience-relations-and-marketing-4cee</link>
      <guid>https://dev.to/hoss/developer-enablement-unpacked-developer-experience-relations-and-marketing-4cee</guid>
      <description>&lt;p&gt;Public APIs create value—for the provider and the consumer—only when they’re used. That’s why fields that attract and support developers have grown in recent years. These individuals and teams &lt;em&gt;enable&lt;/em&gt; developers to discover and better use APIs and other technical tools. Once a part of only the largest companies, these roles are now more common at medium-sized businesses and even startups.&lt;/p&gt;

&lt;p&gt;We’ll cover three common areas companies use to interact with a developer audience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developer Experience&lt;/li&gt;
&lt;li&gt;Developer Relations&lt;/li&gt;
&lt;li&gt;Developer Marketing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You may find these by other names, but they’re the core pieces of developer enablement—and they’re crucial to both attracting and retaining developers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Developer Experience: How You Guide the Developer Journey
&lt;/h2&gt;

&lt;p&gt;Once a developer has discovered your API, they may want to use it. Your &lt;a href="https://www.hoss.com/blog/developer-onboarding-best-practices" rel="noopener noreferrer"&gt;developer onboarding&lt;/a&gt; will determine whether they can quickly get started. These earliest interactions determine their initial developer experience. How you further guide them will determine whether they stick around to be successful with your API.&lt;/p&gt;

&lt;p&gt;There are many factors that go into this hands-off developer enablement. There are product decisions, user interface elements, and technical education that all need to come together. If you’re clear about why and how to use your API, you’ll enable developers to accomplish their goals. &lt;/p&gt;

&lt;p&gt;A robust developer experience will quickly answer what is possible and help them take the next step. The most valuable tools of the developer trade are all varying forms of documentation. Yes, there are various types of documentation you need to provide a developer to enable them to succeed. Make sure you have at least all of the following, if applicable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A getting started guide;&lt;/li&gt;
&lt;li&gt;Tutorials;&lt;/li&gt;
&lt;li&gt;An up-to-date reference guide;&lt;/li&gt;
&lt;li&gt;Sample applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, &lt;a href="https://developers.deepgram.com/" rel="noopener noreferrer"&gt;Deepgram&lt;/a&gt; meets developer needs in its documentation portal:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh6.googleusercontent.com%2FlP8M99K3De5Q6YmhnMi6jAhpqzsMBconLSI1GL7W-6j7KyFp3i8pjXUyIknqu-oRzLYaqDpNYUsLboRz7F6JU94UrPGSORvfRQupX9grB23jFooo6GE3W-y2CNh_ky5puPTKM7OY" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh6.googleusercontent.com%2FlP8M99K3De5Q6YmhnMi6jAhpqzsMBconLSI1GL7W-6j7KyFp3i8pjXUyIknqu-oRzLYaqDpNYUsLboRz7F6JU94UrPGSORvfRQupX9grB23jFooo6GE3W-y2CNh_ky5puPTKM7OY" alt="Deepgram"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For someone brand new to Deepgram, it provides a guide to get started. The complete reference is useful for a quick glance at what’s possible or an experienced developer checking on syntax. Finally, guides and samples bridge the gap between first interactions and complete integrations.&lt;/p&gt;

&lt;p&gt;Of course, the specifics of your documentation will vary based on your API. This is a great chance to use your product knowledge to customize the documentation with the context needed to truly empower your users. Just make sure you avoid these &lt;a href="https://www.hoss.com/blog/10-common-mistakes-in-developer-experience" rel="noopener noreferrer"&gt;10 common developer experience mistakes&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As great as your self serve experience should be, remember developers are people, too. Sometimes direct interaction and the support of others unlocks their full potential. Let's look at how developer relations can amplify your developer enablement.&lt;/p&gt;

&lt;h2&gt;
  
  
  Developer Relations: Coders Helping Coders
&lt;/h2&gt;

&lt;p&gt;Communication is a crucial element of your developer onboarding, but it doesn’t all have to be in your developer experience. Self-serve signup is great, but so is a friendly face to point out the time-wasting gotchas. No documentation can cover all of those, nor have the same empathy as another person. The field of developer relations can fill these gaps.&lt;/p&gt;

&lt;p&gt;Some of the common titles you’ll see in developer relations include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developer advocate&lt;/li&gt;
&lt;li&gt;Developer evangelist&lt;/li&gt;
&lt;li&gt;Community manager&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The exact responsibilities may vary, based on title and organization, but the overall duties are to enable fellow coders to be successful. Google first popularized the “advocate” title, which it meant to include bringing product feedback from the outside into the company (being an internal advocate for external developers). By contrast, “evangelists” face outward and spread the good word of the company. In practice, some advocates may be promotional and some evangelists bring tremendous insights back to their employers.&lt;/p&gt;

&lt;p&gt;While the example of a new developer onboarding can look like customer support, that’s only one type of communication. Developer relations practitioners attend events, host live coding sessions, and jump into open source forums, among many others.&lt;/p&gt;

&lt;p&gt;Even after integrating with  your product, developers run into issues the documentation may not answer. It might be specific to their situation or industry. In traditional developer fashion, they could just go down a rabbit hole of hit-or-miss StackOverflow threads. But often an advocate, evangelist, or community manager can provide a quick, helpful point in the right direction.&lt;/p&gt;

&lt;p&gt;Once you develop those relationships, it's important to take steps to &lt;em&gt;maintain&lt;/em&gt; them throughout their time using your product. A great way to be helpful to developers and to support those relationships is through having a presence in the communities where they congregate. These communities can be of your creation, such as product-specific forums, or be of pre-existing platforms, such as Twitter and Reddit. Just look at all the ways developers can interact with each other from &lt;a href="https://www.twilio.com/" rel="noopener noreferrer"&gt;Twilio&lt;/a&gt;'s website:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FciDjY5RrWOP14HmuoYKIr99sxlwr1L_Wv0txUbvpl6i3iSq2DzVozoEk9Ir5PmqMSM0vRJEitZZt9p2_A6IOikrhUU06asUVqd1_xWDTwXtTOcu0s0ySJ3XTKt1gLpf-CVl67M86" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FciDjY5RrWOP14HmuoYKIr99sxlwr1L_Wv0txUbvpl6i3iSq2DzVozoEk9Ir5PmqMSM0vRJEitZZt9p2_A6IOikrhUU06asUVqd1_xWDTwXtTOcu0s0ySJ3XTKt1gLpf-CVl67M86" alt="Twilio"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Making use of one of these should not be mutually exclusive from using the other; each has its own advantages. By having a presence on pre-existing platforms, you'll reach developers who might not have realized your product is the solution to their problems otherwise. And by having your own product-focused community, you create an informative, communicative dynamic between people using your product.&lt;/p&gt;

&lt;p&gt;We believe that communicating with developers is important, as you can see, but that assumes you’ve helped them discover you in the first place. Let's look at what you can do to address that concern.&lt;/p&gt;

&lt;h2&gt;
  
  
  Developer Marketing: Go Find Your Technical Audience
&lt;/h2&gt;

&lt;p&gt;Before a developer can enjoy their first experience or ask a question of your advocate, they need to find out you exist. As with other fields, marketing can help you find an audience. Unlike other fields, developers are especially uncertain about most marketing activities, so you’ll need to be careful how you reach out.&lt;/p&gt;

&lt;p&gt;Luckily, most developers are always looking to learn and expand their abilities. If you can help them on their journey—before they’ve even used your product—then they’re more likely to trust what might otherwise come across as promotional messages.&lt;/p&gt;

&lt;p&gt;Some common and successful developer marketing tactics are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Events and webinars&lt;/li&gt;
&lt;li&gt;Content marketing&lt;/li&gt;
&lt;li&gt;Community sponsorship&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can use any of these approaches to show up where developers already participate.&lt;/p&gt;

&lt;p&gt;Bring information to developers when you participate and host events. Help them find the next new thing, or understand better how the current things work. Keep your product promotion low key or non-existent and instead focus on how you can communicate about the problems to developers before working on the solutions.&lt;/p&gt;

&lt;p&gt;You can do the same in SEO-focused content marketing and advertising-focused community sponsorships. Show yourself to be a key resource and developers will be willing to hear from you. Use other tactics like retargeting and email newsletter to stay top of mind.&lt;/p&gt;

&lt;p&gt;For example, cloud database &lt;a href="https://www.snowflake.com/" rel="noopener noreferrer"&gt;Snowflake&lt;/a&gt; puts it all together in this email:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh4.googleusercontent.com%2Fb3GMXnmzv64ySuxr_bgeibwAwL2IhzMaUF36kFPHfxIGeaq2FqLEt0w8fDViemz7RjtaXzYSyEKXJ1e14vqUYDsHRt0GFSgsYWmkKpbCJT2diP35Yr7aUekXpA9R_FOqtfVytF2J" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh4.googleusercontent.com%2Fb3GMXnmzv64ySuxr_bgeibwAwL2IhzMaUF36kFPHfxIGeaq2FqLEt0w8fDViemz7RjtaXzYSyEKXJ1e14vqUYDsHRt0GFSgsYWmkKpbCJT2diP35Yr7aUekXpA9R_FOqtfVytF2J" alt="Snowflake"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s an event related to specific problems that Snowflake solves. A Q&amp;amp;A session offers the chance to ask questions of experts (perhaps their developer relations team?). All of these resources could then be bundled into content to attract more developers to their platform in the future.&lt;/p&gt;

&lt;p&gt;Naturally, you’ll want to include all of these resources within a framework that provides the best experience and access to your own team of experts. How you treat developer enablement in your organization will greatly determine the success of your API. Consider the &lt;a href="https://www.hoss.com/docs" rel="noopener noreferrer"&gt;Hoss developer hub&lt;/a&gt; to host not just your documentation, but the full enablement experience.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.hoss.com/contact/" rel="noopener noreferrer"&gt;Reach out to us&lt;/a&gt; to learn more about what we’ve built.&lt;/p&gt;

</description>
      <category>devrel</category>
      <category>developermarketing</category>
      <category>docs</category>
    </item>
    <item>
      <title>How to Prevent API Limits From Breaking Your Stack</title>
      <dc:creator>Matt Hawkins</dc:creator>
      <pubDate>Fri, 27 Nov 2020 22:15:57 +0000</pubDate>
      <link>https://dev.to/hoss/how-to-prevent-api-limits-from-breaking-your-stack-2ddf</link>
      <guid>https://dev.to/hoss/how-to-prevent-api-limits-from-breaking-your-stack-2ddf</guid>
      <description>&lt;p&gt;Imagine your favorite take-out restaurant on a busy night. There’s a line out the door just to pick up the food that’s already been ordered. If you could walk right up to the register, you’d only get your food if it’s ready. There’s a natural delay built into delivering the orders. And there’s a maximum amount of dishes that can be cooked during a time period, set by the kitchen equipment and staff. In API terms, this restaurant has rate limits. They’re good for both parties, both in restaurant and API terms.&lt;/p&gt;

&lt;p&gt;However, for a developer consuming APIs, rate limits are difficult to handle. Immediate results—success or error—fit much better into their development practices. When you reach a rate limit, or quota limit, you’ll need to stop your API calls based on the response from the server. In this post, we’ll further describe the purpose of API limits, how they cause problems for developers, and how you can prevent the failures that can come from them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quota and Rate Limits: Definition and Purpose
&lt;/h2&gt;

&lt;p&gt;If quota and rate limits in APIs are such a pain for developers, why do they exist? The answer is for the provider. But like the restaurant and customer, the eventual benefit is mutual. Just as the quality of the food would decrease with too many orders, an API’s reliability is dependent upon rate limiting its requests.&lt;/p&gt;

&lt;p&gt;While quota limits and rate limits are often used interchangeably, they also imply slightly different meanings:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Quota limits usually refer to an allotted number of calls over a longer period of time and could be determined by your account level.&lt;/li&gt;
&lt;li&gt;Rate limits typically cover a short period of time—such as a second, minute, or hour—and ensure every API consumer can have successful requests.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s understandable why these are important for providers. When too many users attempt to access an API simultaneously, it can put too much strain on the servers. This threatens to slow the service down or crash it completely.&lt;/p&gt;

&lt;p&gt;If an integration tries to call an API more frequently than the given rate limit, the request delivers a limit exceeded error code of 403 or 429 along with a short message:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 60
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this case, the response suggests the integration can try the call again in 60 seconds. Pretty simple for a human to understand, but a bit different to architect a system that can handle that kind of delay. For many developers, quota and rate limits turn into temporarily broken integrations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why API Limits Break Stacks
&lt;/h2&gt;

&lt;p&gt;Modern software includes a stack of tools where you do not have complete control. For example, you likely deploy to the cloud, rather than physical servers you can see and touch. You trade that control for the advantage of scale and redundancy. Similarly, developers build on third party APIs to achieve features they would otherwise not have available. You may even connect to external tools your customers use, which would not be possible without an API. Like relying on the cloud, APIs bring advantages, even if you don’t control every aspect.&lt;/p&gt;

&lt;p&gt;The lack of control means that errors, downtime, and unexpected responses can come at any time. Your software needs to build in resilience, but sadly many &lt;a href="https://www.hoss.com/blog/how-to-prevent-your-API-integrations-from-failing-silently"&gt;integrations fail silently&lt;/a&gt;. The result is your customers know your app broke, but you have no visibility into the issue.&lt;/p&gt;

&lt;p&gt;API limits are another type of this unforeseen error. As we’ve mentioned earlier, it’s also a more difficult type of error because it’s impermanent. The same API call, repeated later, will succeed. Instead, many developers treat rate limits the same as incidental errors. They may keep retrying, which will continue to have the same result, because you’ll still be above your rate limit. Alternatively, they stop trying completely, and display a generic error to the end user.&lt;/p&gt;

&lt;p&gt;One reason API limits aren’t considered during development is they’re out of sight. Many APIs share rate limits in documentation, but far more don’t even mention them. Regardless of whether a developer knows about the limits, they still may not account for them. During development, it’s unlikely to hit rate limits, which means it’s an error the developer may not see.&lt;/p&gt;

&lt;p&gt;A stack will frequently include multiple third-party APIs. When you add rate limiting to the many ways an external service could break, you’ll find it can take down your entire stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Prevent API Limit Failures
&lt;/h2&gt;

&lt;p&gt;The first step is to acknowledge that API limits are a problem. If you aren’t looking for them, you’ll never be able to create the resilience to handle them. The good news is the effort you make with quota and rate limits can be used for other types of errors, as well. As you architect your integrations, you want to include cases of success, permanent failure, and temporary failure. It’s the impermanent errors that can turn into successful calls.&lt;/p&gt;

&lt;p&gt;Where your API call starts will determine one way that you handle it. For example, if you are &lt;a href="https://www.hoss.com/blog/track-javascript-http-requests-in-the-browser"&gt;tracking HTTP requests in the browser&lt;/a&gt;, you may need to provide a message to the end user before retrying. On the server-side, you may be able to handle retries without interrupting the user experience.&lt;/p&gt;

&lt;p&gt;Among the errors you can solve with an API call retry architecture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rate limiting with retry response&lt;/li&gt;
&lt;li&gt;Quota limit based on daily allotment&lt;/li&gt;
&lt;li&gt;Authentication error that requires a refresh token&lt;/li&gt;
&lt;li&gt;Some 500-level status codes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To implement this yourself requires updates in all your code that makes API calls, as well as a system to queue and re-initiate API calls.&lt;/p&gt;

&lt;p&gt;Alternatively, you can use a tool like &lt;a href="https://www.hoss.com/"&gt;Hoss&lt;/a&gt; to handle the hard parts for you. With Hoss, you can prevent API limit issues that affect your customers by applying reliability features, such as auto-retry and failover, uniformly across all of your integrations. You can increase the robustness and perceived reliability of your applications, with minimal updates to your code.&lt;/p&gt;

&lt;p&gt;It’s not enough just to know errors occurred. Approaches like &lt;a href="https://www.hoss.com/blog/why-synthetic-monitoring-and-testing-is-not-enough"&gt;synthetic testing and monitoring is not enough&lt;/a&gt;. You want to have visibility into errors, but also increase the resilience of your third-party integrations. &lt;a href="https://www.hoss.com/"&gt;Try Hoss for free&lt;/a&gt; and see how it can help save your stack from API limits.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>api</category>
      <category>tutorial</category>
      <category>devops</category>
    </item>
    <item>
      <title>The Hoss 2020 Developer Experience Report</title>
      <dc:creator>Matt Hawkins</dc:creator>
      <pubDate>Tue, 17 Nov 2020 22:59:50 +0000</pubDate>
      <link>https://dev.to/hoss/the-hoss-2020-developer-experience-report-2npm</link>
      <guid>https://dev.to/hoss/the-hoss-2020-developer-experience-report-2npm</guid>
      <description>&lt;p&gt;At Hoss, we’re obsessive about developer experience. Developers’ needs and preferences are constantly evolving, so our 2020 Developer Experience Report is a pulse check about what developers expect from API companies right now, and which companies are meeting those expectations. Here’s what the results have to say about experience in 2020:&lt;/p&gt;

&lt;h2&gt;
  
  
  Great developer experience is industry agnostic.
&lt;/h2&gt;

&lt;p&gt;While 20% of those surveyed reported working in the financial services industry, developers were otherwise remarkably evenly split across the full spectrum of industries, from media and retail to consumer goods and healthcare and life sciences. Every industry is clearly becoming increasingly API-driven (a recent report predicted this would be the case in 2020 and beyond), meaning that no industry is immune to the importance of providing a great developer experience.&lt;/p&gt;

&lt;p&gt;The recent Bessemer Ventures State of the Cloud Report 2020 predicted that the API-Universe will drive innovation across all industries and that “there are massive API companies worth billions of dollars in every industry that will further drive digital transformation.”. We certainly agree that the API-Universe is expanding rapidly.&lt;/p&gt;

&lt;h2&gt;
  
  
  There is significant room for improvement in developer experience today.
&lt;/h2&gt;

&lt;p&gt;On average developers rated the developer experience of APIs they regularly work with 5.7 out of 10. Clearly, there is room for improvement. As the API industry becomes more competitive every day, it will be increasingly important to provide a great developer experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Great documentation is more important than you think.
&lt;/h2&gt;

&lt;p&gt;92% of developers list clear and concise documentation as a must-have in any API developer portal. While developer experience can’t be limited to just one great service, this overwhelming response illustrates that great documentation is mandatory. One-third of developers surveyed said that this critical must-have is often missing from the API developer portals they use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Developers want better tutorials and guides.
&lt;/h2&gt;

&lt;p&gt;After documentation, developers reported helpful tutorials and SDKs or code samples as must-have runners up. While 62% said they consider tutorials and guide a must-have, 46% also said that helpful tutorials and guides are frequently missing from API developer portals, representing an opportunity for companies who want to improve overall experience.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hQxE7w6O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.hoss.com/static/89804ccf374fb9f1922d47cf7831764e/30c92/hoss-developer-experience-survey.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hQxE7w6O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.hoss.com/static/89804ccf374fb9f1922d47cf7831764e/30c92/hoss-developer-experience-survey.png" alt="Developer Experience Must Haves"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Developers want to be self-reliant. Help them help themselves.
&lt;/h2&gt;

&lt;p&gt;85% of developers say they prefer to research and solve the problem on their own. That could include the use of API documentation, guides and FAQs or third-party resources like StackOverFlow. Meanwhile, only 5% say they prefer contacting support for help solving a problem. It’s important for API companies to acknowledge this strong preference and make it as easy and frictionless as possible for developers to solve problems on their own by providing readily available, intuitive tools, as well as contribute to third-party communities to ensure content is up to date.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vt0utB8T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh5.googleusercontent.com/CrbxASok_1TKitbEFVAizTDybrq8qz2Ey_Evbg0amFZe3FYOsp3U-yozbxba7fZXWIDKm8_DLIT_3Y0FsNHIxc581UhWYf2ELzJLQNQcahOf58Eff3n8oEx3Ko8Qw_nBwLSwPNKk" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vt0utB8T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh5.googleusercontent.com/CrbxASok_1TKitbEFVAizTDybrq8qz2Ey_Evbg0amFZe3FYOsp3U-yozbxba7fZXWIDKm8_DLIT_3Y0FsNHIxc581UhWYf2ELzJLQNQcahOf58Eff3n8oEx3Ko8Qw_nBwLSwPNKk" alt="Developers Are Self-Reliant"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Sometimes developers do need support.
&lt;/h2&gt;

&lt;p&gt;While developers prefer to solve their own problems without contacting an API’s support team, 56% said they need to contact support at least monthly. But 26% of developers said that API companies frequently don’t have an easy way to contact support. When the need arises, 36% said they prefer to engage with a support team via email, followed by 26% who prefer to use a messaging service like Slack or Discord.&lt;/p&gt;

&lt;h2&gt;
  
  
  Developers like community.
&lt;/h2&gt;

&lt;p&gt;Most developers actively participate in and value online communities – 77% said they participate on StackOverFlow, 61% on Github, 56% on Hacker News and 44% on Reddit Programming. API companies who want to provide a great developer experience should participate in these communities, contribute helpful content, answer questions, and learn from users. Communities are an excellent source of product feature and content ideas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stripe is considered the gold-standard.
&lt;/h2&gt;

&lt;p&gt;If you’re looking for an example of great developer experience in 2020, look at Stripe. Developers preferred the Stripe experience by a landslide, followed by a three-way tie between Github, Google and Twilio.&lt;/p&gt;

&lt;p&gt;What makes Stripe so great? They are known for their high quality, interactive documentation, they offer helpful tutorials and guides, provide code samples, have a clear and simple way to contact support when needed, and offer a number of other great features like an API changelog, API status updates and more – all of which are easy to find at a glance and intuitive to use. Creating and maintaining all of these resources takes a lot of time and money, but clearly Stripe’s attention to experience is resonating with developers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Interested in developer experience? &lt;a href="https://www.hoss.com/resource/delivering-world-class-support-in-a-competitive-landscape"&gt;Download our free ebook about the New Era of Developer Experience&lt;/a&gt;.
&lt;/h2&gt;

</description>
      <category>devrel</category>
      <category>tutorial</category>
      <category>startup</category>
      <category>showdev</category>
    </item>
    <item>
      <title>10 Ways to Create Delightful Developer Documentation</title>
      <dc:creator>Matt Hawkins</dc:creator>
      <pubDate>Sun, 15 Nov 2020 19:10:02 +0000</pubDate>
      <link>https://dev.to/hoss/10-ways-to-create-delightful-developer-documentation-2m0o</link>
      <guid>https://dev.to/hoss/10-ways-to-create-delightful-developer-documentation-2m0o</guid>
      <description>&lt;p&gt;Good documentation is critical to an API’s success. Without it, implementation is slow, problems are hard to solve, and developers are frustrated. Every API provider should prioritize excellent documentation as a central piece of its developer experience strategy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is everyone’s documentation so bad?
&lt;/h2&gt;

&lt;p&gt;Developers find most API documentation tedious and unhelpful. In fact, according to our &lt;a href="https://www.hoss.com/blog/api-consumption-insights"&gt;Hoss 2020 API Consumption Trends Report&lt;/a&gt;, poor documentation is the number one API complaint cited by developers.&lt;/p&gt;

&lt;p&gt;Bad documentation often doesn’t include a guide to quickly getting started, is out of date, inaccurate, incomplete, inconsistent, and/or has poor navigation and a confusing user interface.&lt;/p&gt;

&lt;p&gt;So, why is this happening? What are the all-too-common documentation pitfalls that API providers keep falling into?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Not making documentation a priority.Teams that aren’t given the time and resources to write great documentation or who focus solely on writing code won’t be able to compete in the increasingly crowded API space.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Not keeping documentation up to date. Documentation can become dated quickly. Too many teams either don’t update their documentation or update it manually (instead of automatically) after new releases.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Making assumptions about the audience. Never assume that developers are familiar with specific jargon – or even that your audience is 100% developers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Overtaxing developers. Developing and writing are two very different skill sets. It’s a lot to ask of a developer to build a tool and to write about it in detail. Even if you have the skills, writing documentation is a lot of work – a lot of developers simply don’t want to do it.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The 10 ways to create delightful developer docs
&lt;/h2&gt;

&lt;p&gt;Now you know what not to do when creating documentation for your API – but how can you delight developers who use your products?&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Be comprehensive.
&lt;/h2&gt;

&lt;p&gt;Developers reference your documentation and your website for a wide range of reasons - so don’t scatter the answers in different places. Your documentation should represent a convenient, one-stop shop for developers, whether they’re looking for tutorials, FAQs, helpful blog posts or links to external resources like YouTube videos and developer forums.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Start with the basics.
&lt;/h2&gt;

&lt;p&gt;Believe it or not, very basic answers to questions like “what does this API do?” or “how can I start integrating this API?” are very often left unanswered in a company’s documentation.&lt;/p&gt;

&lt;p&gt;Start at the very beginning – authentication details to start using your API, information about error standards, endpoints (how to consume them, how request and response works) – the basics. A huge and basic help to developers is to provide a changelog in your documentation that lists all of the recent updates to and versions of your API and how they might impact usage of your product.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Be clear and concise.
&lt;/h2&gt;

&lt;p&gt;Don’t use jargon or be unnecessarily wordy. Keep documentation simple, clear and easy to read. Most developers’ goal is to understand an API or solve a problem as quickly as possible, so parsing through unnecessary prose is counterproductive. Remember that developers are human, too – and humans don’t like to read things that don’t make sense.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Be consistent and stay up to date.
&lt;/h2&gt;

&lt;p&gt;Keep language in your documentation consistent and ensure that anyone who contributes to it or publishes an update adheres to a standard style. For example, decide whether you’re going to use the term “function” or “method” to describe a certain action – don’t switch between the two. Consistency can get lost as updates are made to documentation by different authors at different times, so it’s important to set this standard from the beginning to avoid confusion.&lt;/p&gt;

&lt;p&gt;Which brings us to keeping documentation up to date. Staying current and correct is critical, as out of date and incorrect documentation is essentially useless to developers. But this requires a fair amount of maintenance. Make sure you have a plan in place for updating documentation after any new releases, updates or issues, and consider implementing automatic updates.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Provide a getting started guide.
&lt;/h2&gt;

&lt;p&gt;This simple addition to your documentation is highly valued by developers and significantly reduces friction around using your product. Hoss’s favorite examples include Plaid and Vonage.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Include language-specific code snippets.
&lt;/h2&gt;

&lt;p&gt;Writing code snippets for your users and including them in your documentation will save many, many hours of their time.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Make your documentation interactive.
&lt;/h2&gt;

&lt;p&gt;Interactive documentation provides a space for developers to test their own examples before implementing them. One of Hoss’s favorite examples is the Dropbox API Explorer.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Provide tutorials.
&lt;/h2&gt;

&lt;p&gt;Make it easy for developers to understand the possibilities of your API by providing simple tutorials for specific use cases. Vonage has a great use case tutorials section in its documentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Have a comments section.
&lt;/h2&gt;

&lt;p&gt;Developers respond well to community and appreciate the opportunity to share and discuss problems, workarounds and questions. This can also take the form of a dedicated online community for your users, where you can surface frequently asked questions to make it simple for developers to find what they need quickly.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Prioritize good navigation and UI.
&lt;/h2&gt;

&lt;p&gt;Make information easy to find and navigation intuitive. A prominent search function is a key component of great UI in API documentation as it makes finding the specific question a given developer might have infinitely faster.&lt;/p&gt;

&lt;p&gt;“Sticky navigation,” where the navigation bar remains visible as the user scrolls, is another good practice for navigating documentation, because the pages can be quite long. Auth0 and Algolia are great examples of this practice. Another helpful tip is to incorporate a “saved scroll state,” which keeps a user’s place if a user refreshes the page. It also allows the user to share their specific place in a document by simply sharing the URL of the page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Don’t disappoint, delight.
&lt;/h2&gt;

&lt;p&gt;Creating great documentation can be a lot of work, but it’s important, and the payoff for your users is huge. If you make documentation a priority and follow the 10 steps above, you’ll be perfectly positioned to delight your customers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Interested in reading more about developer experience?
&lt;/h2&gt;

&lt;p&gt;Download the latest Hoss ebook: &lt;a href="https://www.hoss.com/resource/delivering-world-class-support-in-a-competitive-landscape"&gt;The New Era of Developer Experience: Delivering World-Class Support in a Competitive Landscape&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>docs</category>
      <category>beginners</category>
      <category>api</category>
      <category>devrel</category>
    </item>
    <item>
      <title>Track JavaScript HTTP Requests in the Browser</title>
      <dc:creator>Matt Hawkins</dc:creator>
      <pubDate>Tue, 08 Sep 2020 16:22:00 +0000</pubDate>
      <link>https://dev.to/hoss/track-javascript-http-requests-in-the-browser-o6k</link>
      <guid>https://dev.to/hoss/track-javascript-http-requests-in-the-browser-o6k</guid>
      <description>&lt;p&gt;As a developer, you want your web application to work. That may be an obvious statement, but it leads to an important question: How exactly do you go about ensuring that? For many developers, the following scenario may seem familiar. &lt;/p&gt;

&lt;p&gt;You create your application and test it locally. Great! It works locally. You then make sure it runs in production. Because you’re thorough, you make sure it works in multiple browsers. After that process, you’ve done all you can. That must mean it works, right?&lt;/p&gt;

&lt;p&gt;That’s what you think until users begin reporting errors. You’re then forced into the tedious position of trying to reproduce those errors. Since your app uses third party APIs, you’ll be lucky if you can actually do so. &lt;/p&gt;

&lt;p&gt;If this situation is all too familiar to you, you should be interested in API monitoring. Unfortunately, the most common way of monitoring, server-side monitoring, comes with caveats. With server-side monitoring, you’ll only be getting insight for APIs calls made from the server, not the client. What you truly want is to see what’s happening on &lt;em&gt;their&lt;/em&gt; machine. &lt;/p&gt;

&lt;p&gt;Luckily, with client-side monitoring, you can get the client-side perspective you could only get from seeing their developer console. It’ll give you the reach of server-side monitoring while showing you exactly what your users are seeing on their end.&lt;/p&gt;

&lt;p&gt;In this post, we’ll be showing exactly how client-side monitoring can help you monitor your user’s experience while using your application. &lt;/p&gt;

&lt;h2&gt;
  
  
  Developer Tools Only Shows Your Computer
&lt;/h2&gt;

&lt;p&gt;If you were on the user’s machine, you’d have access to useful developer tools. Unfortunately, the only developer tools you can usually access are the ones tied to your local machine and session. &lt;/p&gt;

&lt;p&gt;This does have its use, though. You could open it up and do some basic manual troubleshooting, for example. With Chromium’s developer console, you can see exactly what’s going on as you access a website. Specifically, you can make use of the network tab. There, you can see all the JavaScript requests that happen after the website was loaded. This is where you can see any outgoing API requests.&lt;/p&gt;

&lt;p&gt;For example, we can use the home page of the Star Wars API to make some sample requests to that API. As we do so, we can see the request information in this tab.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--r18JWkhj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/bw38eagkwlf1tzobwh71.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--r18JWkhj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/bw38eagkwlf1tzobwh71.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You get an accurate perspective of what’s going on from the client’s point of view. Unfortunately, as you’re the client in this scenario, it won’t be particularly enlightening for monitoring your application’s actual usage. After all, you can’t see a customer’s developer console. For that reason, most monitoring is done on the server’s side. &lt;/p&gt;

&lt;h2&gt;
  
  
  Server-side Monitoring is Powerful
&lt;/h2&gt;

&lt;p&gt;When someone monitors their API, they typically do so from a server. Server-side monitoring gives you the ability to monitor your app in a controlled environment. You control where the call originates, and you’re in control of the server the calls are coming from. From simple unit-testing to full integration testing, you can use server-side monitoring to ensure your application is running smoothly with sample calls. &lt;/p&gt;

&lt;p&gt;This process of synthetic monitoring can give you more insights into what potential calls your users could be making. However, it's more accurate to be monitoring live calls. By doing so, you’ll get insights into how your API is handling requests. That’s one of the reasons why &lt;a href="https://www.hoss.com/blog/why-synthetic-monitoring-and-testing-is-not-enough/"&gt;synthetic monitoring is not enough&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That said, you’ll only be getting live updates from your server’s perspective. For this reason, there are some additional advantages to using client-side monitoring.&lt;/p&gt;

&lt;h2&gt;
  
  
  Client-side Monitoring is Possible
&lt;/h2&gt;

&lt;p&gt;Server-side monitoring lets you test a vast array of calls, catching errors in the process. Wouldn’t it be great if server-side monitoring also gave you access to that wealth of information provided in a user’s developer tools? Well, if you want that type of monitoring, you’ll want to utilize client-side monitoring.&lt;/p&gt;

&lt;p&gt;With client-side monitoring, you get visibility into every call that happens from your app’s frontend. You can monitor the errors users are getting, and have all the information available to try troubleshooting the issue. &lt;/p&gt;

&lt;p&gt;It’s never good when a user informs you that your website isn’t working for them. WIth client-side monitoring, you’ll be able to stay on top of those errors as they arise. Whether there’s an error with your own API or its integration with third-party services, you can address the issue instead of letting it fester, frustrating users on your website without your knowledge. &lt;/p&gt;

&lt;p&gt;Client-side monitoring can be achieved by using the Hoss &lt;a href="https://docs.hoss.com/docs/javascript-agent#browser"&gt;JavaScript agent&lt;/a&gt;. Just by inserting this into your frontend code, you are now capable of monitoring all the HTTP requests your application is making for your users. For more information on this, and other ways to monitor your API, be sure to check out the rest of Hoss’s offerings. &lt;/p&gt;

</description>
      <category>javascript</category>
      <category>api</category>
      <category>devops</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Why Synthetic Monitoring and Testing is Not Enough</title>
      <dc:creator>Matt Hawkins</dc:creator>
      <pubDate>Wed, 01 Jul 2020 20:36:57 +0000</pubDate>
      <link>https://dev.to/hoss/why-synthetic-monitoring-and-testing-is-not-enough-2cdp</link>
      <guid>https://dev.to/hoss/why-synthetic-monitoring-and-testing-is-not-enough-2cdp</guid>
      <description>&lt;p&gt;Application development is increasingly dependent upon APIs, often integrating with many different services. To address uncertainty in these dependencies, many developers use synthetic tests to monitor their API activity. This common tooling helps you discover when an API is up or down, and whether it’s returning the expected results. While useful, synthetic testing cannot mimic the reality of today’s applications.&lt;/p&gt;

&lt;p&gt;When your application uses multiple services, your tests will miss:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Internal microservices that don’t have public endpoints&lt;/li&gt;
&lt;li&gt;Errors specific to real usage that you haven’t foreseen&lt;/li&gt;
&lt;li&gt;Changes to your application after the tests are written&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this post, we’ll share more about these three scenarios, and explain why real-time monitoring of live API calls is the best solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your Microservices Might Be Untestable
&lt;/h2&gt;

&lt;p&gt;Traditional synthetic testing isn’t even an option for many enterprises today. If you’re building internal APIs that are not Internet-accessible, such as popular microservices architectures, you’ll be restricted to only public interfaces. Sometimes that is enough, but for sufficiently advanced use cases, it typically means you’re leaving much of your software untested.&lt;/p&gt;

&lt;p&gt;Most synthetic monitoring tools run as SaaS. You log in to a dashboard and set up your series of API calls and criteria. Then, at defined intervals, the monitor calls the endpoints—typically from cloud providers in various locations—to ensure the synthetic tests pass. To achieve this test with microservices requires that the calls can be made from within your systems, which may not be accessible by public DNS.&lt;/p&gt;

&lt;p&gt;You may be able to use synthetic monitoring with simpler scenarios:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An internal API running a mobile app or other frontend&lt;/li&gt;
&lt;li&gt;Calling a small number of third-party APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In both of these cases, the endpoints must be accessible to the Internet. With some manual effort, you could create tests to periodically mimic these client-side calls. With this approach, you can only monitor pre-determined request and response data to ensure it matches expectations. Not only does this testing miss issues with internal services, it also only gives you a partial view of your external calls.&lt;/p&gt;

&lt;h2&gt;
  
  
  Synthetic Monitoring Only Tells Part of the Story
&lt;/h2&gt;

&lt;p&gt;The problem with synthetic monitoring is in the name: it’s synthetic. You are only testing what you’ve explicitly included. Many errors are dependent upon real usage situations—if you haven’t accounted for it, your monitoring will not catch it.&lt;/p&gt;

&lt;p&gt;Synthetic tests can miss:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Problems related to your application’s network&lt;/li&gt;
&lt;li&gt;Edge cases based on the credentials you use&lt;/li&gt;
&lt;li&gt;Bugs that only arise with dynamic request content&lt;/li&gt;
&lt;li&gt;Latency not captured in a one-off test&lt;/li&gt;
&lt;li&gt;Error messages sent with 200-level status codes&lt;/li&gt;
&lt;li&gt;Issues you have not considered with your tests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These issues only become worse if your application depends on multiple third party APIs. We found &lt;a href="https://www.hoss.com/blog/api-consumption-insights/"&gt;over half of developers consume more than five APIs&lt;/a&gt;. With the many potential points of failure, you can see why it’s tempting to set up monitors. Yet, we discovered most developers don’t monitor the external APIs they call and may not have access to a sandbox that can be easily tested.&lt;/p&gt;

&lt;p&gt;To understand the full picture into API performance requires total visibility to what your application is experiencing. There are situations where synthetic tests make sense, but you cannot depend on them to capture all the issues with your application.&lt;/p&gt;

&lt;p&gt;If it’s important for your customers to have an experience with limited errors, it’s critical that you go beyond synthetic tests. &lt;/p&gt;

&lt;h2&gt;
  
  
  It’s Hard to Maintain Synthetic Tests
&lt;/h2&gt;

&lt;p&gt;Where synthetic monitoring makes sense is for APIs that you provide publicly or for approved partners. The surface area of tests is limited to a single API with some well-defined use cases. Third-party API monitoring is more difficult, especially if you try to cover some of the scenarios synthetic tests can miss. External &lt;a href="https://www.hoss.com/blog/3-common-api-Integration-mistakes-and-how-to-avoid-them/"&gt;APIs often change without notice&lt;/a&gt;, so tests can give you alerts when things aren’t as you expect. Then comes the hardest part: maintenance of those tests when your own app is also changing.&lt;/p&gt;

&lt;p&gt;Let’s say you’ve gathered the details of every API call you make during a typical user’s experience with your application. Next, you translate those use cases into synthetic tests, so you can be alerted when it catches errors. You’ll be missing atypical user paths, but that may be a trade-off you want to make. You can publish your tests and monitor them regularly, feeling somewhat confident. As long as you don’t change anything.&lt;/p&gt;

&lt;p&gt;Once you’ve built an application, it’s not done. Most software requires bug fixes, user experience enhancements, and new features. Inevitably, you’ll need to adapt how you make your calls to external APIs. Building comprehensive synthetic tests for an application that calls multiple APIs is difficult in the first place. Keeping it updated with the exact calls as your code evolves might be an impossible task.&lt;/p&gt;

&lt;p&gt;Ideally, you could add some process to sync monitors with your real calls. For example, include synthetic test maintenance in your code review. An unfortunate side effect could be slower development cycles. All in the name of tests that can’t even capture every scenario.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use Real Monitoring for Real Visibility
&lt;/h2&gt;

&lt;p&gt;We’ve bumped into all these issues, in our development work and with Hoss customers. Whether consuming your own microservices or third party APIs, our goal is to give you &lt;a href="https://www.hoss.com/"&gt;deep visibility and better customer experiences&lt;/a&gt;. Keep track of performance based on real scenarios, not synthetic tests. You can enable error alerts and reduce the amount of time spent debugging your integrations.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.hoss.com/"&gt;Try Hoss for free&lt;/a&gt; and save yourself the headache of synthetic monitoring.&lt;/p&gt;

</description>
      <category>testing</category>
      <category>devops</category>
      <category>api</category>
      <category>showdev</category>
    </item>
    <item>
      <title>3 Common API Integration Mistakes and How to Avoid Them</title>
      <dc:creator>Matt Hawkins</dc:creator>
      <pubDate>Tue, 23 Jun 2020 20:55:18 +0000</pubDate>
      <link>https://dev.to/hoss/3-common-api-integration-mistakes-and-how-to-avoid-them-1k51</link>
      <guid>https://dev.to/hoss/3-common-api-integration-mistakes-and-how-to-avoid-them-1k51</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AcqNDrTk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/8j1k4un7iemm2nu7kxns.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AcqNDrTk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/8j1k4un7iemm2nu7kxns.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’re building an app or have already deployed one, you probably used a good number of third-party APIs. After all, why build it yourself when you can plug in an API with the functionality you need? However, it’s natural to make certain mistakes when integrating APIs, and these mistakes can negatively impact app performance and user experience. This post highlights some common mistakes developers make when integrating APIs with apps and how to avoid them.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Don't Overlook Legalities Concerning API Use and User Data
&lt;/h2&gt;

&lt;p&gt;When it comes to the terms of use, many developers make the mistake of only reviewing the policy at the time of integration. API providers sometimes change the terms of use for their APIs, and they don’t always notify users. If you’re using an API and are not following its current terms of use, the provider could ban you from using the API or you could face legal consequences.&lt;/p&gt;

&lt;p&gt;It’s also important to consider the legalities of the data your app will store. Quite a few countries have regulations regarding user data, and your app must follow all applicable data privacy laws. Otherwise, you could face expensive fines and stiff penalties. &lt;/p&gt;

&lt;h2&gt;
  
  
  2. Don't Assume Third-Party APIs Will Always Respond as Expected
&lt;/h2&gt;

&lt;p&gt;Some developers may not take the time to test and monitor third-party APIs for errors. Developers may also fail to add code that enables an app to work properly, even when an API doesn’t respond or returns an error. APIs become non-responsive or return errors for many reasons, including: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Downtime&lt;/strong&gt; – Many API providers commit to an API uptime of 99-99.99%. But the reality is that every API will eventually experience a shutdown, whether it’s planned or unplanned. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Connection Timeout&lt;/strong&gt; – Many providers program their APIs with default timeout values that are too short.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rate Limits&lt;/strong&gt; – API call volumes tend to be low during app development, but once the app is deployed, the call volume may hit the rate limit. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bad Request&lt;/strong&gt; – There are many reasons an API might return a “400 Bad Request Error.” It usually takes a lot of digging to figure out the root cause. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Don't make the mistake of assuming the APIs you’re using work perfectly. They might have hidden issues and you want to find errors before your customers do.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Keep an Eye Out for API Changes
&lt;/h2&gt;

&lt;p&gt;It is a mistake to assume the providers of the APIs you’re using will always alert you of changes. While most providers alert users to changes with their APIs, some don’t. And the only indication an API change may be buried deep within the documentation. &lt;/p&gt;

&lt;p&gt;Sometimes providers will change the design of an API or deprecate an API. They might change how methods are called or remove API functionality. They might release a new version of an API, which usually means new endpoint URLs. These API changes can break integrations and even bring down your app.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Can You Avoid These API Integration Mistakes?
&lt;/h2&gt;

&lt;p&gt;With the right tools and coding techniques, you can avoid the above API integration mistakes. Here are a few examples:&lt;/p&gt;

&lt;h3&gt;
  
  
  Review the Terms of Use and Research Data Privacy Laws
&lt;/h3&gt;

&lt;p&gt;If you’re developing an app, you need to pay close attention to the terms of service for each third-party API you use. You must also make sure your app and any APIs you use comply with applicable data privacy laws. For example, if any users live in Europe, then your app must comply with &lt;a href="https://www.hoss.com/blog/gdpr-guide-third-party-apis/"&gt;GDPR&lt;/a&gt;. Do you have any users residing in California? Then you need to comply with &lt;a href="https://www.hoss.com/blog/ccpa-guide-third-party-apis/"&gt;CCPA&lt;/a&gt;. You need to do your research and code your app to comply with every applicable data privacy law. You should also use &lt;a href="https://www.hoss.com/"&gt;tools&lt;/a&gt; that enable you to track and control personal user data.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code Your App to Handle Non-Responsive APIs and Errors
&lt;/h3&gt;

&lt;p&gt;You can program your app to handle non-responsive APIs in any number of ways. For example, you could add code for asynchronous scripting, caching and automatic retries.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Asynchronous Scripting&lt;/strong&gt; - App users shouldn’t have to wait for all the external scripts and APIs to load before they can view the main content. Asynchronous scripting allows the content of an app or a web page to load without having to wait for external resources. So, if an API is non-responsive, the content will load regardless. Many scripting languages feature asynchronous functionality, including JavaScript.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cache API Responses&lt;/strong&gt; - Caching API responses allows third-party API data to be stored on your server or in the client itself. The client retrieves data from a cache file instead of from the API server directly. Caching works best for API data that doesn’t change frequently. You can use caching to improve performance and potentially avoid outages or rate limits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automatic Retries&lt;/strong&gt; - You should add code to your app that enables &lt;a href="https://www.hoss.com/blog/3-things-you-must-do-when-calling-third-party-apis/"&gt;automatic retries&lt;/a&gt;. If an API is non-responsive or comes back with an error, the code automatically sends another API request. Most failed API calls can be retried immediately with successful results.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You should also code your app to handle the HTTP status codes for each API you use. Some providers publish detailed tutorials about how to do this.&lt;/p&gt;

&lt;h3&gt;
  
  
  Monitor Third-Party APIs for Changes
&lt;/h3&gt;

&lt;p&gt;It’s crucial that you monitor every API for changes in availability, performance, speed and data format. Since most providers update the API documentation and changelog before sending out an update to users, you could periodically check these items for every API you use. A better option is to use API management software, as it monitors third-party APIs and alerts you to changes automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choose the Right Tools and Techniques
&lt;/h2&gt;

&lt;p&gt;Choose your development tools and coding techniques wisely and you can avoid making these common API integration mistakes.&lt;/p&gt;

&lt;p&gt;Hoss provides &lt;a href="https://www.hoss.com/"&gt;free visibility into the APIs you consume&lt;/a&gt;. Keep track of performance, get error alerts and reduce the amount of time spent debugging integrations.&lt;/p&gt;

</description>
      <category>api</category>
      <category>showdev</category>
      <category>devops</category>
      <category>sre</category>
    </item>
    <item>
      <title>How to Prevent Your Integrations From Failing Silently</title>
      <dc:creator>Matt Hawkins</dc:creator>
      <pubDate>Wed, 10 Jun 2020 22:39:37 +0000</pubDate>
      <link>https://dev.to/hoss/how-to-prevent-your-integrations-from-failing-silently-109b</link>
      <guid>https://dev.to/hoss/how-to-prevent-your-integrations-from-failing-silently-109b</guid>
      <description>&lt;p&gt;You open up a technical support ticket to some terrible news: a crucial part of your application is broken. After a little research, you discover an external API is returning different data than you expected. With a classic facepalm, you realize the worst part: you have no idea how long this has been happening.&lt;/p&gt;

&lt;p&gt;If you’re learning about issues from your customers, you’re learning about them too late. Even when the problem is not your fault, you get the blame if you don’t have methods to detect these errors. In this post, we’ll look at what happens when APIs fail, some common causes of failure, and then some ways you can prevent failure—or at least catch it before your customers do.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Happens When APIs Fail?
&lt;/h2&gt;

&lt;p&gt;API integration is an expected part of modern development. Any project is likely to incorporate multiple APIs. Often, these tools help you save time and money. More importantly, they save you from having to “reinvent the wheel” and allow you to build the functionality of someone else’s tool into your own services. However, each time you &lt;a href="https://www.hoss.com/blog/true-cost-of-using-public-apis/"&gt;add a new third party service to your stack&lt;/a&gt;, you take on additional risk.&lt;/p&gt;

&lt;p&gt;When API integrations fail, they can make your whole app look broken. There’s a reason the support tickets come to you and not to the API provider. A huge value of API integrations - that they invisibly provide additional functionality - is also a major downside in the face of API failure. It means that from the customer perspective, you are the problem.&lt;/p&gt;

&lt;p&gt;Good developers can build around this failure, up to a point. You can look for error codes. You can log problems to investigate. You can send friendly error messages to users (which - again - just make your app look broken from the user perspective). But error handling can only cover the ways you’ve anticipated that an API can fail. The silent failures - the ones you’re not watching for - are the ones that will leave you with no visibility into what went wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Reasons Integrations Fail
&lt;/h2&gt;

&lt;p&gt;There’s no universal fix for API failure. Your user may have discovered an edge case. Or an API you rely upon may have permanently made a change you need to build around. With typical logging tools, it can be difficult to distinguish between those two ends of the error spectrum. That said, there are some common things to look for when diagnosing API issues.&lt;/p&gt;

&lt;p&gt;Common reasons why integrations fail include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API deprecation&lt;/li&gt;
&lt;li&gt;Connection timeouts&lt;/li&gt;
&lt;li&gt;Schema changes&lt;/li&gt;
&lt;li&gt;Authentication issues&lt;/li&gt;
&lt;li&gt;Rate limiting&lt;/li&gt;
&lt;li&gt;Provider downtime&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some of these are unavoidable. They’re part of the cost of building software that relies on internet connections. Many could be helped with better communication from API providers, but you can’t count on a heads up every time there is a change.&lt;/p&gt;

&lt;p&gt;For example, it’s common for API providers to set rate limits. Their systems need to be able to scale, providing consistent service to all API consumers. It’s also common for API providers to &lt;em&gt;not enforce their rate limits&lt;/em&gt;. What happens when that API usage increases? The first thing that API provider’s team does is enable rate limiting. Now your integration, which may never have been tested with these limits, must adapt.&lt;/p&gt;

&lt;p&gt;In another example, you might have accidentally integrated against outdated documentation. Your initial tests could pass, but there could be common use cases that behave differently. Now your application might return authentication errors on certain endpoints because scopes have changed. Or, perhaps a common object now returns data in a different schema. These problems can crop up in even the most well-behaved APIs.&lt;/p&gt;

&lt;p&gt;Then there are the times when it is the API provider’s fault. Sudden deprecations happen. Unpublished schema changes, uncommunicated downtime and unreliable latency are all real possibilities. They’re spread across all your APIs and you hope to catch them before they become issues in your application.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Prevent Silent Failure
&lt;/h2&gt;

&lt;p&gt;Hope is not lost in the perpetual struggle against entropy and error messages. There are measures all development teams can take to minimize these failures before they become larger problems. What you need is more visibility into your requests, so you can see what’s working and what’s not.&lt;/p&gt;

&lt;p&gt;API monitoring is a common way to keep an eye on metrics like latency, error rates and schema confirmation. Typically, these tools are built with providers in mind who are testing a single point of failure - their own API. But if you’re an API consumer, the problem is compounded with every API you integrate. While you could declare monitors across your stack, they would be running with predetermined data. In addition, they might become outdated as you change how you integrate with APIs.&lt;/p&gt;

&lt;p&gt;Instead, &lt;a href="https://www.hoss.com/"&gt;Hoss&lt;/a&gt; recommends API consumers monitor each request as it happens. When you can look at every API call, you can always find the source of a user’s problem. Even better, widespread issues will come to your attention quickly, meaning you can put your days of learning about API failure from your users in the past.&lt;/p&gt;

&lt;p&gt;See how &lt;a href="https://www.hoss.com/"&gt;Hoss gives you free visibility into the APIs you consume&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>api</category>
      <category>tutorial</category>
      <category>node</category>
    </item>
    <item>
      <title>What Not to Do - The Worst Advice About Remote Work</title>
      <dc:creator>Matt Hawkins</dc:creator>
      <pubDate>Thu, 28 May 2020 22:56:59 +0000</pubDate>
      <link>https://dev.to/hoss/what-not-to-do-the-worst-advice-about-remote-work-llj</link>
      <guid>https://dev.to/hoss/what-not-to-do-the-worst-advice-about-remote-work-llj</guid>
      <description>&lt;p&gt;We’re several months into the COVID-19 pandemic – times are strange, and advice is everywhere. We spoke to seven developers about what they think is the &lt;em&gt;&lt;strong&gt;worst advice&lt;/strong&gt;&lt;/em&gt; they’re hearing right now and why. We’re considering this our &lt;strong&gt;what-not-to-do guide&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“That you should have a super strict work-life balance, work from 9 to 4:30 and have a shorter lunch. I think in today’s world, you have the opportunity to make your daily schedule work better for you. Ask yourself what times during the day you are really in flow or psyched to work. In my case, I’m really excited to write code after dinner. &lt;/p&gt;

&lt;p&gt;I think the pandemic allows us a new way to envision the work-life balance that could make us all happier and more productive. Companies should realize there are potentially huge gains to be seen here.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;&lt;strong&gt;Michael Kennedy&lt;/strong&gt; is the founder and host of Talk Python to Me, a weekly podcast about Python and related software developer topics. You can learn more about the Talk Python to Me podcast at &lt;a href="https://talkpython.fm"&gt;talkpython.fm&lt;/a&gt; and follow Michael on Twitter at &lt;a href="//twitter.com/mkennedy"&gt;@mkennedy&lt;/a&gt;.&lt;/em&gt; &lt;/li&gt;
&lt;/ul&gt;




&lt;blockquote&gt;
&lt;p&gt;“That employers should be spying on their employees who are now at home to make sure they are working. People will always find a way to screw around on the job and no amount of mandatory web cameras or keyboard loggers of spyware on computers is going to change that. What is an employer going to do if I decide to go to the bathroom at home and bring my phone with me to play a game or do some other "non-work-related" task?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Chris Hartjes&lt;/strong&gt; has been building and testing web applications of all shapes and sizes since 1998, with a focus on best practices and how to use testing as an effective development tool. He is a senior test engineer at Mozilla and owner of &lt;a href="http://grumpy-learning.com/"&gt;Grumpy Learning, Inc&lt;/a&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;blockquote&gt;
&lt;p&gt;“Setting the expectation that everything is normal at work because we’re privileged to be able to work from home is bad advice. It’s not normal. Forget about the absence of social interaction. What about all the daily habits that have been disrupted? How about all the different living situations? Parents at home? Roommates suddenly together 24/7? You might be comfy in your home office, but your co-workers might be living entirely different experiences. It’s not normal. Acknowledge that.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Michael Lopp&lt;/strong&gt; is the author of “The Art of Leadership: Small Things Done Well,” which uses stories from his professional experience at Netscape, Apple and Slack to present a series of small but compelling practices to help readers build leadership skills. Read Michael’s blog &lt;a href="https://randsinrepose.com/"&gt;here&lt;/a&gt; and follow him on Twitter at &lt;a href="https://twitter.com/rands"&gt;@rands&lt;/a&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;blockquote&gt;
&lt;p&gt;“Hearing people talking about pushing always-on camera feeds strikes me as misguided. Though there is virtue in trying to replicate the onsite experience of knowing someone is there and hearing the chatter and gaining context from the things happening around you, pressure to be on camera all the time feels authoritarian and runs counter to the remote-first ethos of interacting via chat and escalating the communication-medium bandwidth for interactions that need it. For remote work to function optimally, people need to feel trusted in that they are going to get the job done and that they are treated as adults.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;David Rael&lt;/strong&gt; is a software developer and host of the Developer on Fire podcast, which tells the stories of some of the amazing people in software. Learn more about the Developer on Fire podcast &lt;a href="https://developeronfire.com/episodes"&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;blockquote&gt;
&lt;p&gt;“I feel like there are a lot of people who just really want things to go back to the way they were – I see this on social media a lot. I think the reality is that things are never going to go back to the way they were before – there’s a new normal, and I think we just really have to accept it. The first few weeks we were on lockdown, I lost motivation and didn’t get a lot of work done. But about a week or two into it, I had a mental shift and just accepted that things are going to change both in my own life and at a macro level. Since then, I’ve been able to focus a lot better and move on. It’s important to accept that this isn’t business as usual, and things are going to change. We can’t go back to the way it was.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Laurence Bradford&lt;/strong&gt; is the creator of Learn to Code with Me, an online resource and podcast for beginners learning to code. You can learn more about Learn to Code with Me &lt;a href="https://learntocodewith.me/about/"&gt;here&lt;/a&gt;
and follow Laurence on Twitter at &lt;a href="https://twitter.com/learntocodewithme"&gt;@learntocodewithme&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;blockquote&gt;
&lt;p&gt;“I see people who are starting their journey into software get so much advice about what to learn, in what order, and how quickly. I think we really risk overwhelming people when they start with the amount of different technologies they have to choose from. I think (maybe controversially!) it doesn't matter that much how someone gets started, or what language they pick to learn. Pick one, and dive in!”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Jack Franklin&lt;/strong&gt; is a frontend engineer at Google and a blogger who writes about JavaScript, React, software development and more. He is also co-host of the web development podcast, Fish and Scripts. Read Jack’s blog &lt;a href="https://www.jackfranklin.co.uk/"&gt;here&lt;/a&gt; and follow him on Twitter at &lt;a href="https://twitter.com/Jack_Franklin"&gt;@Jack_Franklin&lt;/a&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;blockquote&gt;
&lt;p&gt;“The worst advice I hear is that remote work, especially across timezones, is not efficient.  In my opinion, the extra time is spent setting up software contracts, writing more documentation and tests, and working more methodically.  These are all processes that we should be following anyways.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Jason Gauci&lt;/strong&gt; is a software engineering manager at Facebook AI where he leads ReAgent, a team that uses reinforcement learning to do automated marketing for billions of people. He is also the co-host of Programming Throwdown, a podcast that educates computer scientists and software engineers on a cavalcade of programming and tech topics. Learn more about Jason’s podcast &lt;a href="https://www.programmingthrowdown.com/"&gt;here&lt;/a&gt; and follow him on Twitter at &lt;a href="https://twitter.com/NeuralNets4Life"&gt;@NeuralNets4Life&lt;/a&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Read the full &lt;a href="https://www.hoss.com/blog/dev-bites"&gt;Dev Bites series here&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The True Cost of Using Public APIs</title>
      <dc:creator>Matt Hawkins</dc:creator>
      <pubDate>Tue, 19 May 2020 23:25:41 +0000</pubDate>
      <link>https://dev.to/hoss/the-true-cost-of-using-public-apis-3j2n</link>
      <guid>https://dev.to/hoss/the-true-cost-of-using-public-apis-3j2n</guid>
      <description>&lt;h1&gt;
  
  
  The True Cost of Using Public APIs
&lt;/h1&gt;

&lt;p&gt;How ubiquitous are APIs in today’s development processes? Try asking an engineer how many APIs their project integrates. Most teams won’t know the answer. From analytics tools to maps and cloud hosting, modern applications use a hefty collection of internal and public APIs. Developers use these to quickly assemble applications that would otherwise take much more effort to build. However, there’s a forgotten expense not typically calculated early in a project.&lt;/p&gt;

&lt;p&gt;When you add another API into your software, its impact is felt long after that initial integration. Developers also need to maintain the connections, which includes identifying issues as they arise. Too often, the problems don’t surface until a user reports a bug. For most companies, that’s way too late, but building tools to expose the problems is only an option for the most show stopping features.&lt;/p&gt;

&lt;p&gt;In this post, we’ll look at the user experience of API errors—and just how common they are. And we’ll see what’s needed to reduce these API headaches.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Customers Experience Broken Integrations
&lt;/h2&gt;

&lt;p&gt;Modern applications rely on an army of APIs to bring quality features to their users. Whether the product is a web, desktop or mobile app, frontend or backend, the developer is going to rely heavily on the functionality of third party APIs. When these fail, customers cannot tell the difference between which errors to attribute to the developer and which to the third party. All they see is a broken application. One broken API can cause a bad customer experience, which can in turn lead to a direct loss in revenue.&lt;/p&gt;

&lt;p&gt;For example, imagine you are creating a new bike sharing app. You’ll need to write plenty of original code, but you can also build on existing tools. In fact, most developers wouldn’t even try to recreate the most common infrastructure available via API.&lt;/p&gt;

&lt;p&gt;Your app will likely need to integrate with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloud hosting&lt;/li&gt;
&lt;li&gt;Maps to show locations of bikes&lt;/li&gt;
&lt;li&gt;Geocoding API to convert locations&lt;/li&gt;
&lt;li&gt;Payments service&lt;/li&gt;
&lt;li&gt;Communications services&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re going to share bikes, you obviously need to know where they are and share the data with your users. So, you might plot the bike locations on Google Maps. Depending on your monetization model, you might even need to track the distance between their pickup location and destination to charge them by the mile. If this is the case, your app also requires a payment system. Integrate Stripe for credit cards or take bank payments via Plaid, a financial services API which was recently acquired by Mastercard.&lt;/p&gt;

&lt;p&gt;Even simple applications require functionality that adds up. You might need to send SMS or email. Or integrate a secure chat feature like you’d find on Lyft or Craigslist. Meanwhile, you can employ a service like SendGrid or MailChimp to automate email reminders and keep your customer base engaged. &lt;/p&gt;

&lt;p&gt;Suddenly, you are sitting on a massively complex system which not only makes errors more difficult to track and mitigate, but also means your functionality relies on countless third parties to minimize and track their own errors. Users see one broken element of an app as indicative of a broken system.&lt;/p&gt;

&lt;p&gt;Developers frequently monitor and address the performance of their own systems. This includes writing unit tests, paying down technical debt, and frequently reassessing functionality. Additionally, they might bring in quality assurance teams to look for user experience issues.&lt;/p&gt;

&lt;p&gt;However, many teams fail to take these same measures to analyze their APIs. Without those measures, it’s easy for them to miss the ways APIs are impacting user experience. You should use the same rigor with integrations as you do with code you control. This way you can be immediately notified when response times spike or errors occur.&lt;/p&gt;

&lt;h2&gt;
  
  
  API Errors Happen More Than You Realize
&lt;/h2&gt;

&lt;p&gt;As much as applications rely on public APIs, public APIs are notoriously unreliable. Each API has a number of ways to fail and most apps incorporate multiple APIs. You need to expect errors and ideally try to mitigate them. You cannot wait for users to report problems on their own. And waiting for errors to resolve themselves won’t work if your user has moved on. When customers encounter these sorts of roadblocks, they are not likely to investigate where the problem started.&lt;br&gt;
SmartBear’s &lt;a href="https://static1.smartbear.co/smartbearbrand/media/pdf/smartbear_state_of_api_2019.pdf"&gt;2019 State of APIs report&lt;/a&gt; found that, “organizations that view API monitoring as a top priority are vastly outperforming those that do not at resolving performance problems.” The report attributes this to sky high customer expectations. Their survey found 57% of API consumers expect issues to be resolved in one day, and 40% expect a fix in 12 hours. &lt;/p&gt;

&lt;p&gt;APIs can fail to return requests for a number of different reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Response Time&lt;/strong&gt;: In these days of high expectations, a slow app can be as bad as a broken app. Response time is also the canary in the coal mine that larger issues may be coming. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mismatched Error Code&lt;/strong&gt;: Proper status codes help adjust to API errors, but you can’t always count on the provider to send it. In some cases, you get a 200 -- meaning no error has occurred -- but the response still has error details. In these cases, a person surveying the data would be able to tell there is an issue, but the software doesn’t know to bring it up to anyone. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authorization Credentials&lt;/strong&gt;: APIs run authorization credentials on who is making a request in order to determine if the right person is getting information. This helps keep the system and your data secure, but also adds yet another layer where a valid request can be tripped up. Credentials can time out or be revoked, but a user only sees an error message and no explanation. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rate Limits&lt;/strong&gt;: Many APIs control the flow of traffic by implementing rate limits on requests. These might be on a daily basis or by the second. Building in logic to handle rate limits (i.e., 429 errors) is time consuming. It also creates much better experiences and decreases data loss when you can automatically retry.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While many developers incorporate some form of API monitoring, they aren’t always focused on external APIs. Too often, it requires teams to be proactive rather than reactive. That means you need to know exactly what errors to look for before they happen. You need to know about the errors you didn’t anticipate, too. Teams must be armed with these sorts of insights in order to meet user expectations. &lt;/p&gt;

&lt;h2&gt;
  
  
  What’s Needed to Eliminate API Headaches
&lt;/h2&gt;

&lt;p&gt;Modern applications require numerous connections to other APIs to function. Like any complex machine, when one gear is out of place, the system breaks down. To identify and fix errors requires significant tooling around every API call you make. You need to go beyond monitoring, with retry logic and anomaly detection.&lt;/p&gt;

&lt;p&gt;Being proactive about API maintenance means having an extreme awareness of your API network. Each time a user sends a request, you need to know how long it took and what data is returned. These insights help to predict when future errors may occur. Meanwhile, if the request returns an error, you must be able to look at the details of the request and respond swiftly. This way, the scope of API errors is limited to just a few users. Unfortunately, developers rarely have access to such intricate tooling. It is difficult to build in-house and consumes significant time and resources. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.hoss.com/"&gt;Hoss&lt;/a&gt; is focused on this problem. Hoss tracks and manages the APIs companies consume to help developers limit these hassles and avoid the damaging effects of poor API performance. The service provides a full, easy-to-understand dashboard of API analytics so developers can make better API-driven products and seamless user experiences. API proliferation has enormous benefits, but it also comes with costs – the developers who take action to mitigate those costs are best positioned to take advantage of the API boom.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>showdev</category>
      <category>startup</category>
      <category>codequality</category>
    </item>
  </channel>
</rss>
