I have struggled asking this question in many discussions I’ve had around the world, at technology conferences, on consulting projects, and in the back rooms of dimly lit bars. What is an application? You get ten different answers if you ask this question to ten different people. I’d say the most common response is to reference the applications on a mobile device. These are the relevant. Most accessible. The most active and visible form of application in our modern life. Older programmers see them as desktop applications, where younger programmers see them as web applications, with varying grades of server applications in between. If you operate at the network layer, you’ve undoubtedly bastardized the term to mean several different things. Personally, I’ve always tried to avoid these obvious and tangible answers to this question, looking beyond the technology.
My view of what an application is stems from a decade of studying the least visible, and least tangible aspect of an application, its programming interface. When talking to people about applications, the first question I ask folks is usually, “do you know what an API is”? If someone is API savvy I will move to asking, “when it comes to application programming interface (API), who or what is being programmed? Is it the platform? The application? Or, is it the end-user of the applications?” I’ve spent a decade thinking about this question, playing it over and over in my end, never quite being satisfied with what I find. Honestly, the more I scratch, the more concerned I get, and the more I’m unsure of exactly what an “application” is, and precisely who are what is actually being programmed. Let’s further this line of thinking by looking at the definitions of “application”:
- noun - The act of applying.
- noun - The act of putting something to a special use or purpose.
- noun - A specific use to which something is put.
- noun - The capacity of being usable; relevance.
- noun - Close attention; diligence.
- noun - A request, as for assistance, employment, or admission to a school.
- noun - The form or document on which such a request is made.
- noun - Computers A computer program designed for a specific task or use.
- adjective - Of or being a computer program designed for a specific task or use.
This list comes from my friends over at Wordnik (https://www.wordnik.com/words/application), who I adore, have an API (https://developer.wordnik.com/), and who have contributed to this discussion by playing a leading role in introducing the API sector to the OpenAPI (fka Swagger) specification to the API community. That is whole other layer of significance when it comes to the semantics and meaning behind the word application, which I will have to write more about in a future post. In short, words matter. Really, words are everything. The meaning behind them. The intent. The wider understanding and belief. This is why APIs, and web applications like Wording are important. Helping us make sense of the world around us. Anyways, back to what is an application?
I like the first entry on the list — the act of applying. But, each of these definitions resonate with my view of the landscape. Yet, I’d say that the most common answer to this question hover towards the second half of this list, not the first half of it. Most application developers would say they are programming the application—the interface is for them. If you are an API developer you believe that are the one programming the application, where higher up on the platform decision making chain, they are the ones programming the application, and applying their vision of the world. Something that isn’t always visible at the lower levels, by API developers delivering APIs, the application developers consuming them, or the end-users of the tangible applications being delivered. I see the end desktop, web, or mobile as an application. I see the API as an application. I see the network connecting the two as an application. I also see the wider ideology being applied across all these layers, even when it is out of view to the outer layers.
One of the biggest imbalances in my belief system around technology, a result of be operating at the lower levels of business, institutional, or government, is that I am the one “applying” and “programming”. I was developing and delivering the application. These interfaces served me. After studying the machine closer. Tracking on the cycles. Documenting the results over the course of many cycles. I began to realize that there is more to this “application” thing than what I”m seeing. Maybe I was too close to the gears and the noise of the machine to see the bigger picture. I’m in the role of application developer not because I’m good at what I do. I’m there because I conveniently think I’m in control of this supply chain. As I worked my way up the supply chain, and became an API developer I continue to believe that I was the one “applying” and “programming”. However after over a decade of doing that, I’m realizing that I am not the one calling the shots. I’m applying something for someone else, and that applications were much more than just an iPhone or Android application, or even a TCP, FTP, STMP, HTTP, HTTP/2, or other protocol application. How you answer this questions depends on where you operate within the machine.
After climbing my way up through the layers of the machine, and finding my way to hatch at the top, finally getting some air in my lungs—-I still do not find myself in a better position. With more knowledge, just comes more concerns. Sometimes I wish I could climb back down to the lower levels, and enjoy the warmth and comfort of the inner workings of the machine. However, no I can’t find comfort in the toil that used to comfort me online late into the night. I can’t ignore what we are applying when we work in the service of the application. We are doing the hard work to mine, develop, integrate, and extract value. We are doing the dirty work of applying the vision of others. We are doing the hard work of laying the digital railroad tracks for the Internet tycoons. We are imposing their vision on the world. The special use or purpose of APIs do not always serve us. The usability and relevance is only minimally focused on us. The close attention and diligence is centered on maximum extraction and value generation for the platform. All wrapped in a computer program, designed for a specific task or use. Obfuscating the true application, with digital eye candy that keeps us always connected, and always open to something new being applied or directed in our life.