Plato would love Typescript Generics!
<p>Have you ever found yourself meticulously outlining a software system’s architecture with your team, only to get derailed in a debate about the details of actual code? It happens all the time, and it’s source hearkens all the way back to ideas of the ancient Greek philosophers — the conflict between details of “implementation” and the more zoomed out concept of “form”</p>
<h2>Implementation versus Form</h2>
<p>Seasoned engineers recommend segregating architecture from implementation from the start. Lay down high level plans first: detailing your system’s purpose, functionality, and essential properties. Only then should you dive into the code, breathing life into your high level designs.</p>
<p>This is much easier said than done! Limited resources, tight deadlines, or complex problems often nudge us towards a design that is more focsued on code-level specifics than architectural integrity.</p>
<p>How can we resolve this conflict? Turns out: these problems have been around far longer than the field of software engineering…</p>
<h2>Plato’s Philosophy and Modern Software Design</h2>
<p>Thousands of years ago, Plato developed his Theory of Forms. In this theory, a “Form” or εἶδος (eidos) serves as the abstract, ideal concept of a thing. It’s the answer to the question, “What is that?”</p>
<p>For example, if I point to a computer and ask, “What is that?” you’d respond with, “A computer.”</p>
<p>Now, in the real world, millions of individual computers exist, but none of them individually define what it means to <em>be</em> a computer. They all participate in the Essential Form of “computerness.”</p>
<p>So how would Plato approach building a computer? He wouldn’t start by fretting over the material for the keyboard or the specs of the microprocessor. Instead, he would ponder fundamental questions like, “Should it be portable?”, “What’s the ideal battery life?”, or “What kind of tasks should it accomplish for the user?”</p>
<p>By identifying the Essential Form of a computer before diving into the nitty-gritty details, an engineer sets themselves up for success. This approach minimizes the risk of investing months crafting a gold keyboard, only to realize later that what users really wanted was backlighting.</p>
<p><a href="https://articles.njclement.com/plato-would-love-typescript-generics-ad675f425f37">Click Here</a></p>