TL;DR

by Oleg Sovetnik

One of the central challenges in software development is managing complexity. Special attention should be paid to domain complexity — the core business logic that defines system behavior. Often, teams encounter the “Tower of Babel problem,” where developers stop understanding each other due to the use of different terms and concepts.

Umwelt as an Artifact

Umwelt (borrowed from biosemiotics) solves this by offering an artifact based on a common language, uniting all project participants around a shared understanding of the domain. It helps the project team to consistently understand and evolve the system.

The Form of Umwelt: Mind Map

Umwelt takes the form of a mind map, focusing on readability and ease of comprehension. This helps the entire team navigate the project’s structure, which is more important than simplifying the process of making changes.

Umwelt as the Team’s “A Priori Glasses”

The epistemological role of Umwelt is to serve as the team’s “a priori glasses.” As Kant suggested, we always perceive the world through specific filters. In this case, Umwelt is the lens through which the team views and interprets the project. Sociology and philosophy help explain how collective knowledge shapes a shared understanding of the domain.

A New Approach to Development

Umwelt.dev introduces a new approach to software development grounded in sociological theories. Interestingly, there are many parallels between processes of knowledge acquisition in sociology and domain modeling in software. In both fields, there are four key stages: choosing a fundamental theory (or programming paradigm), conceptualization (defining entities), operationalization (defining properties), and fact-checking (testing in software or empirical observation in sociology). This is akin to creating a conceptual schema for a program.

Sociological Theories in Umwelt

Sociological theories provide us with lenses to reveal aspects of interactions that go beyond the system’s technical features. Actor-network theory, frame theory, systems theory, action theory, institutionalization, structuration, and many other frameworks offer the foundation for Umwelt and new ways of interpreting the project’s environment.

Specifications from Facts

Just as sociology’s primary concept is action, and its main output is facts, programming’s equivalent is functions and their results.

Since I chose Elixir for implementing Umwelt, the tests will be written in ExUnit, the standard testing framework in the Elixir ecosystem.

The process of translating concepts into Elixir code is already integrated into umwelt.dev, making it practically magical. With Umwelt, you can automatically generate code and tests based on the conceptual model.

Developer Tools

The umwelt library, available through Hex and GitHub, allows you to integrate Umwelt into your project by adding the dependency {:umwelt, "~> 0.2"} to your Elixir or Phoenix project’s mix.exs. With the commands Clone, Dump, as well as future Pull and Push, you can synchronize code, specifications, and conceptual models.

umwelt concept knowledge tools


Buzzwords
strong-weak-ties programming social-group-dynamics mindmap platform-networks structural-functionalism rationalism structuration-theory cognitive-capital mediatisation-theory operationalization enterprise Babylon automation social-action marketplace AI actor-network ideas scrum discord cognition communication social-capital financial production semantic-gap aspect-oriented umwelt empiricism positivism gap actor-network-theory research complexity information imperative verification problem psychologism game-dev streaming systems-theory disciplinary-power multiple-worlds-theory teamwork theory systems elephant cloud knowledge-communication structure tools symbolic-interactionism babylon field-theory messengers element security network e-commerce mediation-market big-data fact information-society concept communities philosophy social-network elements development object service multimedia sociology paradigm distribution theories language lenses epistemology metaphor social-exchange functional deconstruction linguistics anthropology meaning apriorism institutionalization-theory analytics projects conceptualization concepts poststructuralism procedural knowledge hoare-triples domain semantics consumption-theory syntax capitalist-systems subject