GoSuda

Politics and Computers

By snowmerak views ...

What Is Philosophy

What do you think philosophy is? According to the dictionary, it is defined as the activity of thinking about fundamental questions of life and the world and seeking answers to them. One could also offer a performative definition: it is not the solving of problems with predetermined answers, but the extension of thought through the same question, or a succession of questions that follow one another, and the sharing of those answers.

In the past, while I was completing my undergraduate studies, I took a course related to political philosophy. During my self-introduction in that class, the professor said something similar to political philosophy and computer science are disciplines positioned at the opposite extremes of philosophy. I remember it was not these exact words, but I believe it was roughly that meaning.

Computer Science

I think computer science is a fundamental inquiry for solving logical problems. For that reason, different people who think about the same problem may arrive at many different answers. The most representative example is sorting. Even in the exploration of how to arrange the same list of data in order, there are many methods, such as bubble, insertion, selection, merge, quick, heap, and tim sort. And by dividing these further, better algorithms can emerge.

Furthermore, viewed locally, it can be said that computer science builds and proves. Even the sorting mentioned above continually constructs how to sort and proves its results. For developers, a closer example would be this: when a project plan appears, one implements it and proves that it runs correctly.

Political Philosophy

I think political philosophy is a fundamental inquiry for solving social problems. Across each era, it repeatedly raises questions about pre-existing problems that differ from age to age, produces answers, and shares them with the present and the future. It mainly deals with abstract values such as justice, freedom, equality, and power, which are interpreted differently according to time and culture, and it has the characteristic that clear distinctions between good and evil, or correct and incorrect answers, are not fixed and remain undetermined.

Furthermore, like computer science, viewed locally, it can be seen as questioning and reflecting. It continually asks questions about the problems that arise, reflects on why things have turned out this way and what better directions exist, and then yields answers. This too produces many answers in proportion to the number of people who think.

Why We Should Know Both Politics and Computing

The Relationship of Mutual Invocation

The two worlds appear to explore different domains, yet in reality they share considerable similarities and possess many points where each becomes the cause and effect of the other.

Let me give one example.

  1. If personal health data is stored securely in the cloud, it will be possible for each hospital to access it quickly when needed ⇒ This is implemented programmatically, using the functions of each domain to achieve security and good accessibility.
  2. Then, to whom does this data belong? To me? To the registered manager? Or to the operating company, the developer, or the state? Furthermore, how far can they see into my data? To what extent and in what manner can it be guaranteed that my personal information will be protected? ⇒ Political discourse will arise regarding the positions and differences of interest among different communities and individuals.
  3. From then on, political discourse and programmatic design and implementation will repeat again and again, each following the other.

In this way, computer science is used to solve existing social problems, and then political philosophy is employed to recognize the problems that arise from this, to raise questions, and to solve the next problems. In the information society of today, this is a natural phenomenon.

Are Politics and Computing Alike?

Points That Do Not Seem So

Moreover, the two worlds have evolved in similar forms. Yet their foundations differ in the way that the relationship between social philosophy and natural philosophy does, namely in the distinction between ambiguous and precise expression. Political philosophy is based on variable and ambiguous definitions composed in natural language, whereas computer science is based on invariant and precise propositions composed in formulas rather than natural language.

Also, they express their directions in subtly different ways. Computer science holds that optimal solutions may exist. Political philosophy, on the other hand, deals with ambiguous notions such as more persuasive arguments, better-grounded arguments, and more ethical arguments. However, in my view, the directions of the two are nearly similar. Ultimately, both appear to pursue a better next. For instance, even though computer science has many fields, a representative one is media compression called codecs, where efforts are made to demonstrate better compression ratios, compression performance, and licensing costs.

Points That May Seem Similar

Representatively, programming languages and governing ideologies appear to apply to human beings in similar ways. Although each language and ideology cannot be matched one-to-one, I will list them for fun.

  • C language (the developer knows what they are doing): I would like to compare it to republicanism. This is because it resembles the republic that historically formed the foundation of Western political systems, and because I see it as akin to communitarianism, which values the consciousness of each citizen and the efforts of individuals striving toward a better ideal. I also felt that the point that rights are accompanied by responsibilities is similar.
  • Java (write once, run anywhere): I am not sure. There is a strong set of laws, and one lives a uniform life by following them, yet that is stable, and within it one is free. And if one goes into Spring, various welfare benefits await you. Shall we call it liberalism?
  • C# (harmony between developer productivity and software engineering principles): Under the protection of a strong government, everything is well designed, and within what has been planned, productivity and performance can be pushed to the extreme. A planned economy suits it. The reason it is not communism is that it has released the means of production and does not restrict producers.
  • Go (abandon complexity, embrace practicality and efficiency): There is nothing similar. Since it gives everything away generously, adopt a welfare state.
  • Rust (safety without performance loss): The ownership and lifetimes of Rust are managed by a ruler in the form of a strict compiler. This ensures that, in order to prevent the inequality and risks produced by the free economic activity of individuals, the community manages and plans the means of production to guarantee a stable life; it pursues the safety and equality of the entire system by partially restricting individual freedom, and therefore I think it resembles socialism.
  • JavaScript (flexibility and tolerance, and ubiquity): I would like to compare it to capitalism. In this language, the means of production belong to individuals, and even equipment is abundantly held by individuals. Thanks to this, a variety of manufactured goods emerge, and through free competition everyone can pursue profit. However, a market without regulation soon fell into chaos.
  • TypeScript (JavaScript that is extended): Naturally, it is a modified capitalism. The belief in capitalism is broken, and in order to eliminate the instability of the market, the government intervenes to some degree. Although the previous complete freedom has relatively regressed, everyone still freely enters the market and competes.

And not a few developers, as if waging ideological wars in reality, fight a great deal with languages. The language itself is an ideology familiar to developers and, at the same time, an ideal to be pursued.

States and Architecture

  • Monolithic architecture and centralized state: Everything is contained in one massive codebase and one binary. This has a structure similar to a unitary state with a strong central government or an absolute monarchy. All functions of the state are controlled by a single system of power.
    • It has the advantage that it is the easiest to form as a state and that decisions are made quickly. This is in the same vein as the advantage that the entire software can be released quickly. Since all resources and information are concentrated in one place, management is clear.
    • However, the larger the state becomes, the harder it is to respond to change, and even when trying to modify a small law or system, the whole must be reviewed and applied. There is also the risk that a problem in one domain can paralyze the entire state. Monolithic systems likewise struggle to respond to change due to their large codebase and tangled code; even when trying to change a single line of code, one must estimate the scope of impact, and a problem arising in one module easily affects the entire system.
  • MSA and federal state: Each function of the system is separated into an independent service. This shares a similarity with a federal state, in which each part of the nation is composed of several independent states. Moreover, each service and state comes to have its own independent infrastructure. Central government interference is relatively loose, and it is similar in that one never knows when independence or accession may occur.
    • Basically, each independent state and service can amend laws or write code independently. Because of this, there is no need to synchronize their tempos. Also, even if a problem occurs in one place, it is difficult for the entire federation to be paralyzed. Furthermore, one can select appropriate institutions (technologies) according to each region or field.
    • However, reaching mutual agreement or creating communication channels is difficult. It is hard to pursue consistent policies, which may cause confusion.
  • EDA (Event Driven Architecture) and civil society: Rather than a central government or agent issuing direct commands, social problems that arise are picked up and resolved proactively and autonomously by individuals. This resembles the characteristic of EDA, in which when an event occurs, one of the subscribers autonomously picks it up and processes it.
    • Anyone can easily participate. In EDA as well, a new service can easily become a new subscriber and take part in the process.
    • However, it has the drawback that the overall flow cannot be grasped. It is difficult to trace who processed what and how, and it is impossible to know what chain reaction a single event will trigger.
  • Layered Architecture and feudalism: Feudalism is a structure in which each stratum fulfills its assigned roles and responsibilities and performs its duties toward the higher stratum. These relations are established as a kind of contractual relationship and form a strict vertical structure of domination, and in this respect one can find similarities with layered architecture.

Although more analogies are possible in this manner, the core of this text lies not in the structures themselves but in the process of building those structures.

Is Solving Problems in Development and Politics the Same?

If software architecture and state systems resemble each other, the processes of building them also run in remarkably parallel lines. Developing software is, in effect, no different from the political act of establishing and developing a new order in digital space.

  1. Public deliberation on social problems and requirements analysis**:** Everything begins with the question "What is the problem?" Just as the suffering and inconvenience of civil society become public and turn into political agendas, the inconveniences and demands of users, after analysis, become the first milestone of development in the form of a "requirements specification."
  2. Constitutional design and architecture design**:** What kind of state shall we build? What kind of system shall we build? Just as politicians establish the framework of constitutions and laws based on ideology and philosophy, architects draw the blueprint of the architecture that will form the foundation of the system based on technical convictions. Decisions at this stage determine the fate of the system.
  3. Policy enforcement and software implementation**:** Once the blueprint is complete, developers write actual code, and administrative officials enforce policies in accordance with laws. It is the process by which an abstract plan is born as a concrete entity that operates in the real world.
  4. Judgment through elections and software testing**:** Policies are judged for their legitimacy through elections and public opinion. Software proves its value through QA team testing and user feedback. Both ultimately can survive only by obtaining the consent of the sovereign (citizens, users).
  5. Institutional reform and system maintenance**:** Laws and systems once made are not eternal. Just as old laws are amended and institutions reformed to match changing times, software too, if it stops "refactoring," which adapts it to a changing environment and improves internal inefficiencies, becomes dead code.

In this way, the entire process, from problem definition through design, implementation, verification, and continuous improvement, shows that the two worlds share the same rhythm of problem solving.

The Day of New Legislators

The information society has rendered meaningless the distance between the extremes of those two philosophies. Code is no longer a mere logic circuit; it has become "Code is Law," which defines human relationships, distributes power, and realizes social values. If the architecture we design resembles the governing structure of a state, and if the development processes we follow are the same as political consensus-building, then who are we, the developers? And what should politicians do? Therefore, developers must now reflect not only on the logic of code but also on the society that code will create, and politicians must understand not only the logic of votes but also the logic of the technology that moves the world. This is because the formidable power we wield in our respective worlds carries a corresponding ethical responsibility.