Plato would love Typescript Generics!

<p>Have you ever found yourself meticulously outlining a software system&rsquo;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&rsquo;s source hearkens all the way back to ideas of the ancient Greek philosophers &mdash; the conflict between details of &ldquo;implementation&rdquo; and the more zoomed out concept of &ldquo;form&rdquo;</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&rsquo;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&hellip;</p> <h2>Plato&rsquo;s Philosophy and Modern Software Design</h2> <p>Thousands of years ago, Plato developed his Theory of Forms. In this theory, a &ldquo;Form&rdquo; or &epsilon;ἶ&delta;&omicron;&sigmaf; (eidos) serves as the abstract, ideal concept of a thing. It&rsquo;s the answer to the question, &ldquo;What is that?&rdquo;</p> <p>For example, if I point to a computer and ask, &ldquo;What is that?&rdquo; you&rsquo;d respond with, &ldquo;A computer.&rdquo;</p> <p>Now, in the real world, millions of individual computers exist, but none of them individually define what it means to&nbsp;<em>be</em>&nbsp;a computer. They all participate in the Essential Form of &ldquo;computerness.&rdquo;</p> <p>So how would Plato approach building a computer? He wouldn&rsquo;t start by fretting over the material for the keyboard or the specs of the microprocessor. Instead, he would ponder fundamental questions like, &ldquo;Should it be portable?&rdquo;, &ldquo;What&rsquo;s the ideal battery life?&rdquo;, or &ldquo;What kind of tasks should it accomplish for the user?&rdquo;</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>