Frontend-backend problém
Nikdy nepodceňujte to, co se vám urodí v hlavě, když ležíte ve vaně! Nevím, jestli to bylo pěnou vlétnuvší do nosu, nebo uvolněním celého těla včetně mysli zapříčiněným horkou vodou, avšak hlavou mi projela otázka, co je lepší/jednodušší/efektivnější způsob vývoje – frontend první, nebo backend první?
U webových aplikací je to povětšinou tak, že existuje frontend, který je zobrazován „běžným smrtelníkům“, řekněme uživatelům, kterýmžto je poskytována služba (ať se jedná o možnost něco koupit, prodat, přečíst si), kterou někteří i využijí; a pak backend, k němuž mají přístup jen „ti nejpovolanější“, administrátoři, kteří se starají o to, aby měli uživatelé co k užití.
Opět ve většině případů se jedná o více, či méně oddělené části. Je vůbec záhodno je vyvíjet odděleně? Podle mě ano – každá slouží pro někoho jiného, a proto v uživatelském rozhraní je kladen důraz na něco jiného. Na frontendu se může grafik řádně vyřádit a kvůli přístupnosti musí být kladem důraz na to, aby šel používat i bez různých AJAXovátek. Taky vidím potřebu být více výřečný – ne každý potencionální uživatel je počítačový expert. U backendu nebude střídmější grafika na škodu – hlavní je umožnit administrátorovi udělat co nejrychleji, co je potřeba; proto AJAXovátka jsou vítána (od administrátora/-ů se už může vyžadovat, aby jeho/jejich prohlížeč splňoval daná kritéria).
Frontend i backend tedy vyvíjejme odděleně. Co bude lepší, začít s frontendem, nebo s backendem?
Řekněme, že první přijde na řadu frontend. Vžijeme se do uživatele webové aplikace (ne, metodě, co by chtěl jakýsi záhadný „běžný uživatel“, nevěřím) a začneme vyvíjet. Datový model může doznat velkých změn podle toho, jak zkoušíme, co vyhovuje uživateli víc (může se do toho přidat i uživatelské testování), a pořád je tak potřeba generovat nová a nová „ukázková“ data (což může být při nějakých složitějších strukturách nesnadné /např. při použití traverzování kolem stromu/). Při začatí backendem je to naopak – máme jednoduše získaná ukázková data (o všechnu složitou manipulaci se stará daný kód), ale nemáme, kde bychom je ukazovali a nakonec zjistíme, že tahle data se ani použít nedají (přichází tak na řadu refaktoring kódu backendu).
U začatí backendem nevím, co je větší problém – že se může změnit datový model při dělání frontendu, nebo že není, co prezentovat zákazníkovi. Resp. on je k prezentování ten backend. Ale jen těžko odpovědět na otázku: „Dobře, ale já chtěl e-shop; jak se v tom tedy nakupuje?“ Ovšem podobná otázka může nastat i při přístupu z opačného konce („A jak můžu spravovat zadané objednávky?“). A ne, odpovědí není ještě více omezit funkčnost prototypu – to už nejde; stejně jako je to s bičíkem bakterií (a máš to evoluce!), je nějaký jistý základ, který pro to, aby to vůbec fungovalo, potřebujete. A navíc, o to se nejedná; i kdyby to šlo více osekat, stále je tu otázka, jestli začít front-/backendem.
Mimochodem, chtěl jsem tohle nazvat jako problém čtenáře a zapisovatele (reader writer problém), ale tohle už někdo ukradl dříve. Uživatel je totiž ten, kterému je z převážné většiny něco prezentováno, a administrátor je ten, kdo zapisuje. I když se pozice „převážně čtenáře“ se u dnešních sociálních aplikací posouvá k vyvážení čtení a zapisování (možná i převaze zapisování) z pohledu uživatele; administrátor má spíše pozici korektora/usměrňovače/mazače (i tak /právě proto/ ale budou na administraci kladeny jiné nároky než na frontend).
vydáno 5. 11. 2009, 21:58:01
