It isn’t hard to notice the similarities between life and code… perhaps that’s because they are not different and concurrent things.
Lives are made up of hours, days, weeks, and so on, within which we all perform tasks meant to produce a desired outcome. We develop habits and methodologies for doing things, in order to get us to our goals. These might be the most basic of goals, such as being fed, cleaned, etc… and larger ones, such as a career promotion, a cross-country move, or buying a home.
Every goal is broken down into smaller, more manageable subtasks, and these broken down further so as to account for environment, context, materials needed, potential obstacles, time constrictions, accessibility, and more.
Where we may have learned these from a parent, teacher, peers, or on our own, out of necessity… when we right code, we are essentially giving instructions to a machine to perform tasks. More than that, we also provide different scenarios, context, tools, and as much useful information as we can think of, that is relevant to any task being executed successfully, and producing the desired result.
But the question really becomes… why do we do this? Why tell a machine to do anything?
From my perspective, this is no different than delegating a task to an employee, a colleague, a spouse, a child… We all have things that we must do, and a finite amount of time to do it in, along with limited skillsets, so it makes sense to bring automation into the mix… to have a machine do pieces of it for us, systematically, so that we can focus on other goals.
Code is then not like life… it is life. Bits and pieces of life, broken down and written out, then delegated, in order to free up our own resources and enrich our lives.