If I’ve seemed quiet lately, it’s because I’ve been working on guest pieces for other publications (and the second series of my exploration into program language design, Marianne Writes a Programming Language). This year I’ll be doing a small series for BuiltIn on abstractions and architecture. The first installment on platformization and what abstractions qualify as part of a platform is online right now
The key is generalization. Platformization is dividing out parts of the system that can be generalized enough to operate as a black box. It’s not that the system is simpler, because more abstractions invariably mean greater complexity. Instead, platformization makes a system seem simpler by delegating how much of the complexity any one engineer must understand at one time. An application developer need not understand the complexity of the container runtime, but the engineers working on containerization tools absolutely do. In modern day architectures, the complete system can never be fully understood, but by building platforms, we lower the barrier to productive contributions. Engineers onboard faster and push effective code sooner.
The next installment will explore visual programming and various styles of auto-code generation. Why do we love some types but look down on others? Keep an eye out for that!