DEV Community

Cover image for Rethink Software
Ourai L.
Ourai L.

Posted on • Originally published at ourai.pro

Rethink Software

As software developers, we often hear the phrase "technology serves business" and are frequently asked questions like "What is the business value of what you do?" After hearing and being asked these questions repeatedly, it naturally becomes necessary to find some "justification" for our technical work, otherwise we wouldn't know how to articulate the "value" of what we do during performance evaluations or promotion defenses.

However, as with many principles, there is a vast gap between "knowing" and "understanding". Merely paying lip service can easily be exposed.

This article is my rethinking of "software". Only with a relatively correct understanding can we create better and more practical software. Software is never just a technical achievement, and technology is not the core part of software.

What is Software?

A more down-to-earth and textbook definition is as follows:

Software is a collection of computer data and instructions organized in a specific sequence. It is the intangible part of a computer. The tangible part of a computer is called hardware, which consists of the computer's casing, various components, and circuits. Software requires hardware to operate, and vice versa. Neither software nor hardware can function without the cooperation of the other.

Generally, computer software is divided into programming languages, system software, application software, and middleware that lies between the two. System software provides the most basic functions for computer use but is not targeted at any specific application field. Application software, on the other hand, is the exact opposite. Different application software provides different functions based on users and the fields they serve.

Software includes all programs executed by a computer, regardless of their architecture. For example, executable files, libraries, and scripting languages are all considered software. Software does not depend on architecture and shares common characteristics that allow hardware to perform the functions designed by software. Software is stored in memory. Software itself is not a tangible entity; what can be touched are only the components (memory) or media (such as CDs or floppy disks) that store the software.

Software is not necessarily limited to programs that run on a computer. In some definitions, documentation related to computer programs is also considered part of software. In simple terms, software is a collection of programs and documentation. Software is applied in various fields around the world and has had a profound impact on people's lives and work.

Wikipedia Software

However, this textbook definition holds little value. What truly matters is a more abstract understanding—that software is a reflection of the real world, originating from and not transcending the real world.

As described in the Bible—God created Adam, the first human, in His own image, and then created Eve, the second human, from one of Adam's ribs. Here, God used Himself as a reference, extracted features to abstract the model of what He considered to be "human", and created "Adam" and "Eve" based on this model.

When humans create the digital world, they inevitably refer to the world they live in and can perceive, because humans cannot imagine something beyond their cognition. The models that humans abstract from the real world become the foundation for constructing the digital world, and data serves as the basic building unit. The digital world thus becomes a reflection of the real world.

Ourai Let Me Talk About Model-driven Front-end Development

If "Tao gave birth to all things" is considered "correct", then theoretically, software, based on binary code, should be able to perfectly replicate the real world. However, this is limited by people's understanding of the real world and the development of supporting technologies and devices such as hardware and networks.

Even if the digital world constructed by software can create things that do not exist in the real world, they are still "combinations" of existing things in the real world and are not entirely without reference. Therefore, they do not transcend the real world.

Regarding the real world we live in, there is a perspective that, just as we use software to create the digital world, the real world is also constructed by "God", the "programmer", using a "computer", and humans are the ultimate "artificial intelligence". An intuitive example is the anime series Sword Art Online: Alicization.

The Significance of Software

Is software necessary for human survival and daily life? Of course not! So, why do we need or use software? To better achieve goals and meet needs, right?

The two sets of rhetorical questions above have already reached a conclusion—the significance of software is to solve problems in specific domains, in plain terms, "to meet user needs"—which can be summarized by four key words: domain, problem, user, and need.

A defined "domain" is a prerequisite for the creation of software. On a larger scale, it refers to the industry that software providers face, such as finance, healthcare, education, etc. On a smaller scale, it is a particular aspect of daily work or life, like financial management, medical treatment, or attending classes.

The domain must be of interest to and familiar with the software provider, as this is where good software can be created and potential profits can be made. Can someone who is uninterested in or unfamiliar with a domain create useful and user-friendly software? Can they see potential business opportunities?

The "user" of software is human beings, and the characteristics of the target group determine what the software should look like and how to profit from it.

Even though the ultimate users of software are individuals, the scope of influence of the tasks handled by software varies. Based on this, users can be divided into two major categories: individuals and organizations. An organization is a group of people, and due to different purposes of formation, there are many types, such as families, communities, enterprises, and governments.

"Needs" are the physiological or psychological requirements of humans. Individual needs can refer to Maslow's hierarchy of needs, while organizational needs mainly fall into aspects such as profitability, efficiency, and resources.

The "problem" that software aims to solve is not directly equivalent to user needs. It is derived from analyzing the surface manifestations of "needs". The problem may not be specific to the target users but could be an industry-wide issue.

The Ethics of Software

Any technological development or tool invention by humans cannot avoid ethical issues—technology and tools themselves are neither good nor evil. Whether they bring benefits or harm to people depends on those who create and use them.

Let's take social media software as an example—given its nature, it cannot escape issues centered around interpersonal relationships, such as casual hookups, deceptive encounters, and scams.

Let's set aside casual hookups for now. Deceptive encounters and scams are generally considered evil. Although these stem from user demands and seemingly have nothing to do with software providers, who might argue, "We are just providing tools or platforms", the absence of content monitoring does not necessarily make them evil.

However, some social media software, in order to compete for user traffic and market share, deliberately push boundaries, maliciously exploit human nature, and condone such activities from the outset. These software providers are clearly in the wrong!

Just like Nokia's former slogan "Technology with a Human Touch", we should aim for technology to be for the good of humanity, not for evil—starting from people, considering their well-being, and bringing them happiness. The word "people" can be replaced with "users".

Summary

Software is a reflection of the real world. In theory, it can perfectly replicate the real world through binary code, holding infinite possibilities, but it depends on and is limited by people's understanding and real-world conditions. Software is not necessary for normal human survival and daily life; it exists to make people's lives better. Software providers should not exploit human nature for their own selfish gains and cause negative impacts on users and society.

Returning to the initial phrases "technology serves business" and "what is the business value of what you do", these actually mean that we should first analyze the exact problems from the business domain and user needs, and then develop solutions based on the nature and characteristics of the problems—undoubtedly, technical solutions are part of this.

Top comments (0)