<?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: Kay Ashaolu</title>
    <description>The latest articles on DEV Community by Kay Ashaolu (@kayashaolu).</description>
    <link>https://dev.to/kayashaolu</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2068399%2F94b886af-d71f-4c33-b979-05ccc7d32c8d.png</url>
      <title>DEV Community: Kay Ashaolu</title>
      <link>https://dev.to/kayashaolu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kayashaolu"/>
    <language>en</language>
    <item>
      <title>The lens behind every block</title>
      <dc:creator>Kay Ashaolu</dc:creator>
      <pubDate>Thu, 18 Jun 2026 16:00:00 +0000</pubDate>
      <link>https://dev.to/kayashaolu/the-lens-behind-every-block-2ke1</link>
      <guid>https://dev.to/kayashaolu/the-lens-behind-every-block-2ke1</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Quick site update before this week's letter:&lt;/strong&gt; Courses 2, 3, and 4 now have their full written content live. Slide decks, labs, reading material, assessments, and challenges, all in place. The video lectures are still being recorded and will roll out as they finish. If you own any of those courses, &lt;a href="https://systemthinkinglab.ai/auth.html" rel="noopener noreferrer"&gt;log in&lt;/a&gt; and the new material is waiting for you.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;You can know the seven blocks cold and still design the wrong system. The blocks tell you what to build. They do not tell you why.&lt;/p&gt;

&lt;p&gt;The why comes from outside.&lt;/p&gt;

&lt;p&gt;Picture a design review. An engineer at the whiteboard has sketched a Service, a Database, a Worker, and a Queue. Each block is correct in isolation. The diagram is clean. The arrows make sense. The review still goes badly.&lt;/p&gt;

&lt;p&gt;The senior in the room asks a question the engineer cannot answer. "Who is waiting for this?" The engineer points at the Service. "What if it fails?" The engineer points at the Database. "When does this run?" Long pause.&lt;/p&gt;

&lt;p&gt;The blocks were right. The forces behind them were never named. Without the forces, the design is a drawing. A drawing of correct shapes that does not survive contact with the real world.&lt;/p&gt;

&lt;p&gt;There are three forces. Every architectural decision you will ever make comes from one of them.&lt;/p&gt;

&lt;p&gt;The first is the User. Someone has tapped a button, made a request, opened a page. They are waiting. They do not care that your downstream service is slow or that your database is sharded. They care about three things: the response is fast, it is correct, and it shows up reliably. Every synchronous path in your system exists because of them. The User is why Services exist.&lt;/p&gt;

&lt;p&gt;The second is the External Service. Something outside your control that your system depends on. Stripe. SendGrid. OpenAI. Twilio. You did not write their code. You do not own their uptime. Their pager is not your pager. Sooner or later they will fail, time out, throttle you, deprecate the endpoint you depend on, or change the response shape. Your design has to assume this happens. Workers absorb the unreliability. Queues buffer the traffic. Idempotency keys make retries safe. The External Service is why your system has shock absorbers.&lt;/p&gt;

&lt;p&gt;The third is Time. The clock. Cron jobs. TTL expirations. Scheduled invoices. The midnight backup. Time does not initiate a request. It fires when it fires. It does not care that the engineering team is in a meeting. It is not waiting for a response. It is simply the heartbeat that triggers work. Time is why Workers run when no User is in sight.&lt;/p&gt;

&lt;p&gt;When you look at a system through these three forces, the block selection stops being a debate.&lt;/p&gt;

&lt;p&gt;User is waiting? You need a Service. The path must complete in milliseconds and return.&lt;/p&gt;

&lt;p&gt;Work has to happen but the User has moved on? You need a Worker, and a Queue feeding it. The User does not stay on the page for the receipt email to send. The receipt email runs in the background.&lt;/p&gt;

&lt;p&gt;External Service is unreliable? You need a Worker with retries and a Queue as a buffer. When SendGrid is down at 3 AM, the email is not lost. It sits in your Queue.&lt;/p&gt;

&lt;p&gt;Clock fires at midnight? Time pulls a Worker. The Worker rolls invoices, expires sessions, regenerates feeds, takes the backup. No User involved.&lt;/p&gt;

&lt;p&gt;The blocks are the answer. The forces are the question.&lt;/p&gt;

&lt;p&gt;This is the lens most engineers never get. They learn the technologies. Postgres, Redis, SQS, Kafka. They learn the patterns. Services, queues, workers. They miss that the patterns are responses to something. The system is not a pile of components arranged for elegance. It is a set of decisions about what to do when the three forces show up.&lt;/p&gt;

&lt;p&gt;The most common failure mode is to design only for the User. The happy path. The one force you can see. The screenshot in the spec. So the engineer builds a Service and a Database and ships it. Then a third-party API rate-limits them on launch day, and the Service crashes because there is no Worker to absorb the failure. Then the midnight backup fires and there is no Time + Worker arrangement, so it runs inside the same Service as the User requests and slows everything down. Then the engineer rebuilds half the system in production. They blame complexity. The real cause is that they only saw one force.&lt;/p&gt;

&lt;p&gt;In Course 1 I teach the three external forces alongside the seven blocks, because the blocks do not mean anything without them. The first thing we do in every design challenge is name the forces. Then we pick blocks. Always in that order. The framework collapses if you skip it.&lt;/p&gt;

&lt;p&gt;You do not start a system design with the database. You start with the force asking something of your system.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kay&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;P.S. There is a full walkthrough of the external forces and how each one pulls different blocks at systemthinkinglab.ai/learn/building-blocks/external-entities/&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This letter goes out by email every Saturday. &lt;a href="https://systemthinkinglab.ai/newsletters/" rel="noopener noreferrer"&gt;Subscribe here&lt;/a&gt; or read the full archive at &lt;a href="https://systemthinkinglab.ai/newsletters/" rel="noopener noreferrer"&gt;systemthinkinglab.ai/newsletters&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>systemdesign</category>
      <category>ai</category>
      <category>beginners</category>
      <category>career</category>
    </item>
    <item>
      <title>System Design at Kekoexchange</title>
      <dc:creator>Kay Ashaolu</dc:creator>
      <pubDate>Fri, 13 Sep 2024 12:58:25 +0000</pubDate>
      <link>https://dev.to/kayashaolu/system-design-at-kekoexchange-1264</link>
      <guid>https://dev.to/kayashaolu/system-design-at-kekoexchange-1264</guid>
      <description>&lt;p&gt;&lt;em&gt;"What's the most important thing for early software engineers to learn in the next five years?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;My answer has recently changed due to the advancements in AI and what seems to be achievable in the near future. With the emergence of tools like &lt;a href="https://arc.net/l/quote/dsfibjmf" rel="noopener noreferrer"&gt;GitHub Copilot&lt;/a&gt; and &lt;a href="https://claude.ai/login?returnTo=/?" rel="noopener noreferrer"&gt;Claude&lt;/a&gt;, it is very likely that AI will make engineers an order of magnitude . Given this, how can a software engineer maximize their output knowing this trend is on the horizon? &lt;/p&gt;

&lt;p&gt;At Kekoexchange, we emphasize the importance of understanding sound system design and having knowledge of the end-to-end system, including how components connect, interact, and operate to create a scalable system. That's why we're excited to announce a collaborative project. This month, the entire community will be working together to describe the design of a fully featured blog application from scratch.&lt;/p&gt;

&lt;p&gt;The community has been asked to respond to the following prompt:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Design a scalable and robust blog application that allows users to create, publish, and manage blog posts. The application should support features like user authentication, content management, commenting, and content discovery (e.g., tags, categories, search). The system should be able to handle high traffic and large volumes of content.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Community members, your input is crucial to this project. Each week, you will share your thoughts, and by the week's end, we will consolidate everyone's input using AI into a single system design. This design will then be evaluated by our System Design Evaluator with your contributions playing a significant role in the final analysis.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Provide a score ranging from 200 to 800 points&lt;/li&gt;
&lt;li&gt;Provide an overall summary of the application and its performance &lt;/li&gt;
&lt;li&gt;Identify the design's strengths and areas for improvement for the user&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Stay tuned every Monday in this newsletter to see what the community comes up with and how we do against the System Design Evaluator. Participating in the process will not only contribute to the project but also significantly enhance your system design skills.&lt;/p&gt;

&lt;p&gt;If you want to join the conversation and contribute to our community project, check out our &lt;a href="https://kekoexchange.com/" rel="noopener noreferrer"&gt;website&lt;/a&gt; and sign up to join our community! We look forward to seeing you there!&lt;/p&gt;

</description>
      <category>systemdesign</category>
      <category>developer</category>
      <category>softwareengineering</category>
      <category>interview</category>
    </item>
  </channel>
</rss>
