The philosophy Occam’s Razor applied to software development says that the correct approach to programming is the simplest one that solves the problem at hand. We, the mere mortals know it very well as the K.I.S.S (Keep it simple stupid!) principle. But behold the cheesy title, there is a point to be made. Back to the subject, one of the principles as explained by Tim Berners-Lee used while designing HTTP was the Rule of least power which is a derivative of Occam’s Razor:

Computer Science in the 1960s to 80s spent a lot of effort making languages that were as powerful as possible. Nowadays we have to appreciate the reasons for picking not the most powerful solution but the least powerful. The reason for this is that the less powerful the language, the more you can do with the data stored in that language. If you write it in a simple declarative form, anyone can write a program to analyze it in many ways. The Semantic Web is an attempt, largely, to map large quantities of existing data onto a common language so that the data can be analyzed in ways never dreamed of by its creators.

Thus, APIs as designed on top of HTTP adhere to the same principles. They are intended to model the real-world application interactions along with the microservices modeling the different cohesive parts of application itself. There is a lot of semantic meanings embedded into each of these definitions – API names/variables and the microservice partitioning and their dependencies. We will revisit this at a later point. For this discussion, the rationale behind bringing this up is that the evolution has taken place in the application design and implementation, but the whole world of development tools that help us build and develop on the other hand is lagging. We are still using the same old brute-force debugging methods of error logging, manually writing the API definitions in several ways; once for development and another time for testing and yet another for publishing. We still manually write our test cases, manually dig through logs for root-causing. When services are separated out and an API execution goes through several services before returning, the whole “distributed debugging” is still a nightmare for us developers. With different teams working on each of these services, the dreaded red tape makes an appearance. We are building multi-tools with many uses but also with as many ways to cut ourselves with. We can do better, right? We can definitely do better! In the misquoted words of Ray Kinsella from the film Field of Dreams:

If you build it, they will come.