Design principles are important. Documentation is important.
As companies grow, as teams become distributed, it becomes difficult to coordinate expectations between teams. You can coordinate via tools like swagger, a specification language for HTTP services. However, specifications can become incorrect as features change, or they can be incorrectly constructed from the beginning, leaving the consumer to discover the mistake. By generating principled code from the specification, we can leverage the typesystem to write better software. If your documentation is wrong, your code doesn’t compile.
voted / votable