Evolutionin nimeämiskriisi koskettaa jokaista kehittäjää
Kun tietokantasi ei enää riitä
Rehellisesti sanottuna: jokainen kehittäjä on kohdannut painajaisen, jossa tietokannan rakenne ei yksinkertaisesti taivu uusiin vaatimuksiin. Tiedemies Zachary Polleyn tutkimus paljastaa, että samassa tilanteessa ovat paleoantropologit – ja ovat olleet jo yli satakymmentä vuotta.
Monash-yliopiston tuore selvitys tuo esiin ongelman, joka saa minkä tahansa ohjelmistoarkkitehdin hieman hikoilemaan: nimikäytäntömme ja luokittelujärjestelmämme ihmisten esi-isille rakennettiin aikaan, jolloin fossiililöytöjä oli murto-osa nykyisestä. Nyt uudet löydökset tulvivat sisään, ja vanha taksonominen puu natisee liitoksistaan.
Luokitteluongelma, josta kukaan ei puhu
Kun puhutaan ihmisen evoluutiosta, useimmat kuvittelevat siistin, lineaarisen etenemisen. Homo habilis muuttuu Homo erectukseksi, joka muuttuu Homo sapiensitseksi. Yksinkertaista. Siistiä. Väärin.
Todellisuus on sotkuisempi – haarautuva verkosto sukulaislajeja, monet eläneet samoihin aikoihin ja samoilla alueilla, jotkut risteytyneet keskenään, toiset yksinkertaisesti kuolleet sukupuuttoon. Muistuttaako jotain? Vaihda "laji" sanaksi "microservice" ja "maantieteellinen alue" sanaksi "pilviregion" – ja olet kuvannut distribuuttia järjestelmää.
Perimme nimikäytännöt varhaisen 1900-luvun paleontologeilta, jotka olettivat evoluution seuraavan siisttejä haarautumismalleja. Mutta jokainen uusi löydös paljastaa, että esi-isämme haarautuivat, yhdistyivät ja joskus jopa peruuttivat. Se on vähemmän binääripuu, enemmän graph database.
Mitä kehittäjät voivat oppia muinaisesta taksonomiasta
Tässä kohtaa asia kiinnostaa meitä kehittäjiä. Evoluutiotaksonomistien haasteet peilaavat haasteita, joita kohtaamme rakentaessamme nykyaikaisia järjestelmiä:
Versiointikauhtumus: Aivan kuten "Homo erectus" tarkoittaa eri asiaa riippuen siitä, keneltä asiantuntijalta kysyt, myös REST API:n /v1/users-endpoint voi tarkoittaa eri asiaa eri tiimeille puolen vuoden päästä.
Skriptadiffuusio: Kun uudet fossiilit haastavat olemassa olevat luokittelut, tutkijoiden täytyy takautuvasti päättää, laajennetaanko määritelmiä, luodaanko alakategorioita vai tunnustetaanko, että alkuperäiset kategoriat olivat pohjimmiltaan viallisia. Tuntuvatko nämä tutuilta legacy-koodin parista?
"On-a"-ongelma: Onko Homo naledi suora esi-isämme, sivuharmautus vai jotain aivan muuta? Vastaus voi olla "kaikki edellä mainitut". Tämä on täsmälleen sama ongelma, jota kohtaamme yrittäessämme mallintaa monimutkaisia suhteita oliohierarkioissa.
Järjestelmiä, jotka hyväksyvät epävarmuuden
Polleyn tutkimus ehdottaa, että evoluutiotieteilijät tarvitsevat uusia viitekehyksiä – sellaisia, jotka tunnustavat epävarmuuden sen sijaan, että pakottaisivat dataa jäykkään kategoriaan. Tämä muistuttaa hämmästyttävästi sitä, mitä olemme oppineet ohjelmistoarkkitehtuurissa rakentaessamme joustavia, mukautuvia järjestelmiä.
Mieti: entä jos siirtyisimme tiukoista taksonomipuista luottamusväleihin ja todennäköisyysjakaumiin? Entä jos "Homo erectus" ei olisikaan binääriluokittelu vaan fuzzy set vaihtelevalla jäsenyysasteella?
Tämä on käytännössä sama, minkä tech-maailma keksi siirtyessään jäykistä Waterfall-metologioista Agileen, monolithseista microservices-arkkitehtuuriin, synkronisesta event-driven-arkkitehtuuriin. Emme enää yritä pakottaa todellisuutta kategorioihimme – rakennamme järjestelmiä, jotka voivat ottaa todellisuuden sotkuisuuden huomioon.
Mikä jää käteen
Tässä on epämukava totuus, jonka kanssa sekä evoluutiobiologia että ohjelmistokehitys kamppailevat: kategoriamme ovat ihmisten luomia rakenteita, ja ne ovat aina väliaikaisia. Fossiiliaineisto ei välitä nimeämiskäytännöistämme, eivätkä käyttäjät välitä tietokantarakenteistamme.
Tutkijat, jotka vaativat päivitettyjä luokittelujärjestelmiä, eivät ole vain pilkunviilailijoita – he tunnustavat, että viitekehyksemme muokkaavat sitä, mitä näemme ja mitä kysymyksiä voimme esittää. Paremmat taksonomiat eivät ole vain tarkkuudesta kiinni; ne mahdollistavat uusia löydöksiä.
Kehittäjille opetus on samanlainen. Joka kerta kun lukitsemme datamallin, lyöme vetoa siitä, että nykyinen ymmärryksemme pitää paikkansa. Joskus pitää. Joskus jäämme Homo erectus -ongelman kanssa.
Ehkä parhaat järjestelmät – niin evoluutiotaksonomiat kuin ohjelmistoarkkitehtuurit – ovat niitä, jotka on suunniteltu sujuva evoluutio mielessä. Koska ainoa vakio molemmilla domeeneilla on muutos.
Fossiileja tulee koko ajan lisää. Koodia julkaistaan. Ja taksonomioita täytyy päivittää.
Mitä viitekehyksen haasteita sinä painiskelet nykyisissä projekteissasi? Joskus mielenkiintoisimmat ratkaisut löytyvät tarkastelemalla, miten muut alat kohtaavat samankaltaisia ongelmia.