Невидимый слон

by Oleg Sovetnik

Когда мы погружаемся в легаси проект, который несколько лет развивался, сменилось несколько команд, и он, очевидно, работает, мы попадаем в ситуацию, когда в беклоге вместо «добавить фичу Х», приоритетнее становится «ускорить У» или «починить Z», всем уже понятно, что что-то пошло не так, но нет способа вернуться обратно к разработке и развитию. Предметная область проекта представлена несколькими артефактами, а носителя знаний “сбил автобус”.

Обычно, в этот момент, проект уже смешал в себе и идею (Domain) и способ ее воплощения, то есть абстракции протекли и то, ЧТО проект из себя представляет семантически (Domain complexity), неотделимо от того, КАК он написан синтаксически (added complexity). Мы сосредоточимся на первом вопросе: что проект из себя представляет семантически?

Для этого рассмотрим имеющиеся артефакты и их содержательный смысл:

  1. Код — даже хорошо структурированный код часто не отражает смысла проекта. Если же он превращается в “спагетти”, то слишком подробен и труден для восприятия. Его чтение отнимает много времени, при этом он лишь показывает, как система работает сейчас, но не отвечает на вопросы, почему она работает именно так и как она должна работать. Много синтаксиса - мало семантики.
  2. Git — история коммитов фиксирует кто и когда вносил изменения, но не объясняет смысла этих изменений или их контекст.
  3. Документация — чаще всего устаревает и обновляется с опозданием, и не предоставляет целостной картины о структуре и целях проекта.
  4. История задач — Она в основном отражает то, что планировалось сделать (и это часто отличается от того, что реально было сделано), а также фиксирует ошибки и сбои.

Слона-то я и не приметил

Предметная область домена представлена только в некоторых проекциях, что затрудняет её восприятие и понимание. Это можно сравнить с притчей о слепых мудрецах и слоне: каждый воспринимает отдельные части, но никто не видит целого. Разработчики тратят массу времени на реконструкцию смыслов, что тормозит развитие и поддержание проекта.

Нам необходимо увидеть её в более наглядной и целостной форме. Майндмап может стать решением этой проблемы. Если код представлен в виде древовидной структуры, как и майндмап, то концепты предметной области могут быть выстроены в иерархию. Такая визуализация облегчит восприятие сложных систем и позволит синхронизировать понимание между командой и кодом.

семантика синтаксис смысл слон метафора


Dive deeper


  • Басня

    Крылатое выражение в заголовке, как вы, наверное, догадались, – из басни Ивана Андреевича Крылова «Любопытный»:

    слон метафора


Buzzwords
объектная коммуникация акторно-сетевая mindmap финансовый концептуализация домен лингвистика когнитивного-капитала очки проблема социальная-сеть стримы мультимедиа инструменты познание структура вавилон scrum социальное-действие discord позитивизм безопасность майндмап операционализация множественных-миров концепты язык теория umwelt теории деконструкция процедурная психологизм функциональная эпистемология философия тройки-хоара теория-институционализации teamwork разработка теория-потребления факт разрыв концепт медиации-рынка постструктурализм императивная аналитика объект коммуникации-знаний антропология исследование эмпиризм корпоративный семантика e-commerce мессенджеры сетевых-сообществ big-data сервис предмет верификация производство аспектная теория-поля элементы слон смысл геймдев сильных-слабых-связей программирование социального-капитала метафора динамики-социальных-групп проекты умвельт социального-обмена дистрибуция структурный-функционализм сетей-платформ информационный социология маркетплейс априоризм капиталистических-систем синтаксис идеи дисциплинарной-власти теория-структурирования парадигма знание теория-систем автоматизация теория-медиатизации элемент облачный рационализм символического-взаимодействия сложность информационного-общества