Spätná väzba užívateľov na Splync
Približne jeden a pol mesiaca po vydaní Splync v1.5 — aktualizácie, ktorá konečne umožnila vlastné pomery delenia pre projekt a kategóriu — prišla nová vlna spätnej väzby. Aktualizácia v1.5 si vyžadovala zásadné zmeny na strane servera, takže som vtedy veril, že granularita bola pre väčšinu prípadov „dostatočne dobrá“. Potom niekoľko nových užívateľov položilo jednoduchú, veľmi rozumnú otázku: „Môžeme nastaviť vlastné pomery zdieľania pre jednotlivý výdavok?“ Ich cestovný projekt mal chvíle, keď len dvaja členovia museli rozdeliť konkrétny náklad, a iné chvíle, keď všetci traja chceli niečo zdieľať. Pod Splync v1.8 bola odpoveď bohužiaľ nie. Vysvetlil som, že môžu vytvoriť ďalšie kategórie s vlastnými pomermi prispôsobenými pre tieto špecifické prípady — obchádzka, nie skutočné riešenie.
Fraktálový les pôsobil ohromujúco
Bolo trochu ohromujúce spomenúť si, koľko práce bolo vložené do v1.5. Najprv som musel nechať projekty mať vlastné pomery delenia. Potom potrebovali vlastné pomery aj kategórie. Vtedy som si myslel, že som pokryl celý strom — zhromaždil som všetky plody zo všetkých vetiev. Ale práca na pomeroch pre jednotlivé výdavky bola iná. Zdalo sa, že zakaždým, keď som si vzal plod, z toho miesta vyrástol nový strom. Nie nekonečný fraktálový les, ale jasná dvojposchodová štruktúra: jedna vrstva rodí ďalšiu. V logike v1.5 výdavok najskôr zdedil pomer projektu. Ak mala jeho kategória vlastné pomery, tie prepísali hodnoty projektu. Takže keď som pridal pomery pre jednotlivé výdavky, snažil som sa pridať ďalšie prepísanie na vrch tohto prepísania. Štruktúra sa stala schodiskom prepísaní — technicky správne, ale mentálne neprehľadné. Bolo ťažké odôvodniť vytváranie ďalšej vrstvy záplatovanej logiky.
Zmeny v paradigme v Splync v1.9
Prielom nakoniec prišiel z obrátenia štruktúry hore nohami. Namiesto „projekt → kategória → výdavok“ a prepísania každej vrstvy nasledujúcou, prečo nepremýšľať opačným smerom? Podiely na jednotlivých výdavkoch → podiely na kategóriách → podiely na projektoch. Toto usporiadanie odráža, ako môžu premýšľať skutoční ľudia: ak má konkrétny výdavok svoje pravidlá, mal by sa jednoducho riadiť nimi. Ak nie, vzor kategórie má zmysel. Ak ani to nezafunguje, vráťte sa k predvoleným hodnotám projektu. Žiadne ďalšie schodisko prepísaní — len čistá hierarchia priorít. Keď som uvidel štruktúru týmto spôsobom, hmla pseudo-fraktálového lesa okamžite zmizla. Cesta implementácie sa stala zrejmou: „Každý výdavok je skontrolovaný pre vlastné podiely na jednotlivých výdavkoch. Ak sú prítomné, použite ich. Ak nie, skontrolujte podiely na kategóriách. Ak nie, použite predvolené hodnoty projektu.“
Chôdza pod oblohou
Nová logika pôsobila jednoducho, predvídateľne a matematicky správne. Na podporu tohto systému priorít sme pridali špeciálnu tabuľku MariaDB pre delenie podľa jednotlivých výdavkov, ktorá tak trochu zrkadlí tabuľku pre delenie podľa kategórií. Tabuľka s podrobnosťami o výdavkoch tiež potrebovala rozšírenie, rovnako ako tabuľka s podrobnosťami o kategóriách v v1.5. Keď sa jasne ukázal základný „dvojposchodový“ dizajn, zvyšok bola len opatrná kódová práca — v aplikácii aj na serveri. Cesta však stále pôsobila riskantne na niektorých miestach, ako chôdza tmavým lesom bez mapy. Chcel som si prečistiť hlavu a vyrazil som von. Vzduch bol ostrý a čistý. Pri prechádzke po mojich štvrtiach som videl, ako sa v diaľke týčila hora Fudži, kryštálovo modrá pod dokonale modrou oblohou. Bola takmer 100 km ďaleko, no vyzerala dostatočne blízko, aby som sa jej mohol dotknúť. Ten moment pôsobil ako pripomienka: aj keď si myslím, že kráčam lesom, v skutočnosti kráčam pod otvorenou oblohou.
Čo môžete robiť so Splync v1.9 — vlastné delenie pre každý výdavok
Splync v1.9 sa zrodil z toho momentu jasnosti. Vrátil som sa domov, dokončil zapojenie nových koncových bodov, pripravil novú logiku servera, usporiadal súvisiace rozhrania, odoslal v1.9 do Apple a nakoniec som zaspal. Kontrola skončila skôr ako zvyčajne. Keď som sa prebudil, Splync v1.9 už bol schválený a automaticky uvoľnený na App Store. Od tejto verzie ďalej je delenie oveľa flexibilnejšie. Ak cestujete s Johnom a Kate, môžete zdieľať základné výdavky rovnomerne medzi vás troch. Ale pri jedle môžete prejsť na delenie „25 % : 50 % : 25 %“, pretože John zvyčajne zje dvakrát toľko. A ak John vynechá jednu večeru — povedzme v reštaurácii s ústricami — môžete tento konkrétny pokrm nastaviť na „50 % : 0 % : 50 %“, aby neplatil za niečo, čo nezjedol. S verziou v1.9 teraz Splync podporuje pomery pre projekt, kategóriu aj jednotlivé výdavky v jednotnej logike. Základy sú stabilné a matematicky správne. Ďalšou výzvou je rozhranie: niektoré iné aplikácie na delenie ponúkajú hladšie a štýlovejšie spôsoby na úpravu týchto pomerov. Splync teraz má silné zázemie na podporu takýchto vylepšení. Budeme na nich pracovať jedno po druhom.