<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Design on Software Engineering Thoughts</title><link>https://software.skipoles.co.uk/tags/design/</link><description>Recent content in Design on Software Engineering Thoughts</description><generator>Hugo</generator><language>en</language><lastBuildDate>Fri, 14 Apr 2023 21:32:35 +0000</lastBuildDate><atom:link href="https://software.skipoles.co.uk/tags/design/index.xml" rel="self" type="application/rss+xml"/><item><title>API Best Practices</title><link>https://software.skipoles.co.uk/posts/api-best-practices/</link><pubDate>Fri, 14 Apr 2023 21:32:35 +0000</pubDate><guid>https://software.skipoles.co.uk/posts/api-best-practices/</guid><description>&lt;p&gt;Creating great APIs is hard. Getting the right level of abstraction and building something
that is pleasant for clients to integrate with is a huge challenge. This post delves
into this topic in more detail.&lt;/p&gt;
&lt;blockquote&gt;
&lt;h4 id="but-first-an-anecdote"&gt;But first an anecdote&amp;hellip;&lt;a class="anchorjs-link" href="#but-first-an-anecdote"&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;Product Owner&lt;/strong&gt;: &amp;ldquo;I need you to integrate with this third-party API as part of the current feature. It provides most of the functionality that we require in this area, and will avoid us having to write loads of it ourselves. Here&amp;rsquo;s the link to their documentation.&amp;rdquo;&lt;/p&gt;</description></item><item><title>The Problem With APIs</title><link>https://software.skipoles.co.uk/posts/the-problem-with-apis/</link><pubDate>Fri, 14 Apr 2023 20:32:35 +0000</pubDate><guid>https://software.skipoles.co.uk/posts/the-problem-with-apis/</guid><description>&lt;p&gt;Creating great APIs is hard. Getting the right level of abstraction and building something
that is pleasant for clients to integrate with is a huge challenge. This two part post delves
into this topic in more detail.&lt;/p&gt;
&lt;blockquote&gt;
&lt;h4 id="but-first-an-anecdote-courtesy-of-russ-miles"&gt;But first an anecdote&amp;hellip; (courtesy of Russ Miles)&lt;a class="anchorjs-link" href="#but-first-an-anecdote-courtesy-of-russ-miles"&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;Provider&lt;/strong&gt;: “Ah, you’re missing the special field, BABEL-256. Without that field this behaves subtly differently…”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Consumer&lt;/strong&gt;: “Wait, what??”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Provider&lt;/strong&gt;: “Yeah, you can think of this service as a single front door where, past the door, there are a lot of different rooms, hallways, and functions available. ‘Service DoSummat’ is just the front door. The concoction of fields you pass are where all the magic happens. It’s Postel’s Law, we accept almost anything and that’s a good thing…”&lt;/p&gt;</description></item></channel></rss>