Disclaimer: Lengthy metaphor up ahead.
Our world is analog – full of experiences of continuous time and continuous values. Our minds have evolved to operate effectively in this environment. A human’s five senses are tuned to understand the infinite possibilities of our analog world (colors, smells, sounds, etc). And it follows that human problems are also analog. How do we deliver better healthcare? How do we reduce pollution? How do we eliminate traffic and congestion? To solve these problems, well, we make analog solutions.
But from a business and profitability perspective, analog solutions have limitations to their scale. They’re usually constrained by labor and raw materials. Also, these solutions typically require extensive training or capital equipment.
Is there a better way? Enter software. Software scales well because it packages the solution in one place and can be replicated at an ever-lower cost. Software, as designed, executes the solution without errors.
However, software, and by association computers, can compute only finite and discrete things. Computers can’t really understand analog, ambiguous things. Therefore, we have a problem: our world is analog but software, meant to solve analog problems, is digital.
So, ideally we have something to convert analog solutions to digital ones. We have something like that: devices that measure an analog signal (ex. sound) and give you a digital output.
But as our problems grow more complex and require the understanding and measurement of many complex, hard-to-measure analog signals, these devices alone can’t solve the problem. That’s why we need humans to essentially act as analog-to-digital converters by taking the world’s analog problems and building digital, software solutions.
In the example of an analog-to-digital converter chip, the accuracy of the digital signal as compared to the analog one increases with the more samples taken of the analog signal. Likewise, we need to build software products in a way that increases our sample rate so that we more accurately match an analog solution. So, we ask questions. Talk to users. Interview stakeholders. The more samples we can get of the analog problem, the better and more accurate our digital solution will be.
That is why iteration is key when we build applications. Each iteration is our in-depth sample of the analog problem. More iteration increases our sample rate and helps us to continually define and refine our understanding of the problem. With that process, the digital software output will hopefully be one that best solves the analog problem.