I think there are two sound approaches to communicating complex systems between humans (which is the main goal here, a computer might be a bit slow compiling 200M LOC - but the real problem is that no human can read that much code, let alone understand it): 1) Write documentation that is also code. That is the idea of literate programming. I recently came across:<p>&quot;Literate Programming in the Large&quot;:
<a href="https:&#x2F;&#x2F;m.youtube.com&#x2F;watch?v=Av0PQDVTP4A" rel="nofollow">https:&#x2F;&#x2F;m.youtube.com&#x2F;watch?v=Av0PQDVTP4A</a><p>which is a bit of a wandering talk, but <i>well worth</i> watching: it talks about real, huge comolex systems, and how lp can help bring them back under control.<p>2) The other approach is to shift your perspective, so you don&#x27;t have a complex solution to a compkex problem; but rather a few small and lightly connected straight forward solutions to simple problems. Now I doesn&#x27;t matter if you&#x27;re bad at communicating, because the ideas you try to convey are simple ideas.<p>I think there are a few reason that STEPS appear to work: what we&#x27;re doing with our complex software is simple stuff. If we know what we want to do (the hard part) doing so in a straightforward way becomes easy. <i>If</i> we can make hierarchies of abstraction and isolated sub-systems.<p>Note that simple doesn&#x27;t mean trivial. These solution often require quite a lot of theoretical education; but not an <i>unreasonable</i> amount.