There have always been echoes through computer science that coding will be a part of education in our future in the same way that written language and mathematics are a part of every industry today. It never truly made sense to me as a developer that everyone should know coding as intimately as they know mathematics. Applications were always part of large codebases and making any change required not only the knowledge of coding in a particular language, but also the domain specific language that each team had dreamed up to architect their program. It seemed that only software engineers really needed to know how to code. All the talk of coding as the new mathematics or language sounded to me like developers self-glorifying the importance of their craft. But now the rise of easily extendable software tools is beginning to show me the future those echoes were dreaming about.
Services have offered the ability for their users to add extensions and plugins for years. These usually came with the overhead of yet another language to learn, difficult environments to set up, new applications to install, and domains that often grew so large entire industries have formed around customizing those services. That era of extensibility never made the case for me that coding was going to be a necessity like math. It still felt like coding was going to be left to a team of developers that were specialized on the subject. Even if a user understood programming concepts, there is only a small chance they would have the time and capacity to learn the specialized pieces necessary to create plugins. It never felt like building extensions to products was accessible to anyone other than software developers.
Our goal as software engineers should be to embrace a world where all of our users understand code. The tools we build in the future will need to provide users with multiple points of customization. These entry points need to be easily accessible, but also powerful. It is important that future users have very little overhead to accessing the customizations available through code, but also very extensive possibilities once they are building customizations. With the right tools available to customize services, we will hit an inflection point where every user can access direct benefits from the ability to code. The pontification about the value of understanding code can finally be realized.