Когато учените и програмистите не се разбират за имената – защо това те засяга
Когато схемата ти не може да побере реалността
Да си призная честно: всеки разработчик е изпадал в ситуацията, в която неговата база данни просто не може да побере новите изисквания. Оказва се обаче, че палеоантрополозите си имат същия проблем — и то от повече от век насам.
Проучване от университета Монаш разкри проблем, който би довел до пот на всеки софтуерен архитект: системата ни за класифициране на човешките предци е създадена за свят с много по-малко данни. Днес новите фосилни открития валят, а старата таксономическа дървовидна структура просто не издържа.
Проблемът с класификацията, за който никой не говори
Когато стане въпрос за човешка еволюция, повечето хора си представят чиста, линейна прогресия. Homo habilis става Homo erectus, който става Homo sapiens. Просто. Подредено. Погрешно.
Истината е доста по-заплетена — разклонена мрежа от свързани видове, много от тях припокриващи се във времето и географията, някои вероятно кръстосващи се помежду си, други просто измиращи. Да ви звучи познато? Заменете „видове" с „микросървиси" и „география" с „облачни региони" — и ето ви описанието на една разпределена система.
Конвенциите за именуване, които сме наследили от ранните палеонтолози от миналия век, предполагат че еволюцията следва чисти разклонения. Но всяко ново откритие — всеки нов точкови данни — показва, че нашите предци непрекъснато са се разклонявали, сливали и понякога дори са се връщали назад. По-малко двоично дърво, повече графова база данни.
Какво могат да научат разработчиците от древната таксономия
Тук нещата стават интересни за нашата аудитория. Предизвикателствата пред еволюционните таксономисти са поразително сходни с тези, пред които сме изправени при изграждането на съвременни системи:
Кошмарът с версионирането: Също както „Homo erectus" означава различни неща в зависимост от това кой експерт питаш, твоят REST endpoint /v1/users може да означава различни неща за различни екипи след шест месеца.
Дрифт на схемата: Когато нови фосили оспорват съществуващи класификации, изследователите трябва ретроактивно да решат дали да разширят дефинициите, да създадат подкатегории или да признаят, че оригиналните категории са били фундаментално погрешни. Прилича ли ви на вашия legacy код?
Проблемът „е-а": Дали Homo naledi е директен предшественик на съвременните хора, страничен клон, или нещо съвсем друго? Отговорът може да е „всичкото от горното". Това е точно проблемът, пред който се изправяме, когато се опитваме да моделираме сложни връзки в обектни йерархии.
Изграждане на системи, които приемат неяснотата
Проучването от Монаш предполага, че на еволюционните учени са им нужни нови рамки — такива, които признават несигурността вместо да натискат данните в твърди категории. Това е забележително подобно на онова, което научихме в софтуерната архитектура за изграждането на гъвкави, адаптивни системи.
Помислете: вместо стриктни таксономически дървета, какво ще стане ако използваме доверителни интервали и вероятностни разпределения? Какво ще стане ако „Homo erectus" не е бинарна класификация, а размито множество с различни степени на принадлежност?
Това по същество е онова, което технологичният свят откри, когато премина от ригидните методологии на Waterfall към Agile, от монолити към микросървиси, от синхронни към event-driven архитектури. Вече не се опитваме да натикаме реалността в нашите категории — изграждаме системи, които могат да поберат неподредеността на реалността.
Изводът
Ето неприятната истина, с която се борят както еволюционната биология, така и софтуерната разработка: нашите категории са човешки конструкции и винаги са временни. Фосилният запис не се интересува от нашите конвенции за именуване, а потребителите не се интересуват от схемата на нашата база данни.
Изследователите, които настояват за обновени класификационни системи, не са просто педантични — те разбират, че нашите рамки определят какво виждаме и какви въпроси можем да задаваме. По-добрата таксономия не е просто въпрос на точност; тя е ключ към нови открития.
За разработчиците поуката е подобна. Всеки път когато фиксираме един модел на данни, правим залог, че настоящото ни разбиране ще се задържи. Понякога се получава. Понякога обаче се озоваваме с проблема „Homo erectus".
Може би най-добрите системи — било то еволюционни таксономии или софтуерни архитектури — са тези, проектирани с мисълта за плавна еволюция. Защото единствената константа и в двете области е промяната.
Фосилите продължават да се трупат. Кодът продължава да се пуска. И таксономиите продължават да се нуждаят от ъпдейти.
Какви рамкови предизвикателства те тормозят в текущите ти проекти? Понякога най-интересните решения идват от това да видиш как други дисциплини се справят с подобни проблеми.