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.
The internet has made Javascript ubiquitous. It could be argued that our massive consumption of the internet is reason enough to understand the loops and variables that drive it, but most of us know very little of the bits flying around to generate the SaaS products we all use. A lack of understanding of how code works doesn’t hinder the use of SaaS services. Even though we interact with code most hours of the day, there still hasn’t seemed like a good argument for why everyone ought to know what a for loop is.
A conversation with a people success manager at Aha! convinced me that learning code should actually be as commonplace as algebra. We recently launched Aha! Develop with javascript extensions that allow for very powerful customization of the service. At Aha! we strongly believe in dog-fooding our own product and we utilize Aha! for not only our own product management and software development, but also things like applicant tracking for people success. The manager was so excited about the possibilities of extensions that he was contemplating learning javascript to start writing them. Aha! Develop extensions were built to require very little overhead to getting started with extensions. The command line tool builds the project for the user leaving only the functions they need to write to implement the functionality they want to see. If coding had been taught as commonly as how to graph a line, this manager would be able to contribute extensions to the product from a role in people success. There would be no software engineer required to make unique customizations to the tools he was using. This new class of extensions can enable SaaS products in all industries to become customizable by users with very basic understanding of how to code.
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.