Jak jsme v GoodData tvořili design guidelines

Na srazu Frontendisti.cz jsem v rámci tématu „PSD či nePSD“ povídal o tom, jak v GoodData tvoříme UI. Mimo jiné jsem také zmínil, že jsme začali vytvářet design guidelines a knihovnu přepoužitelných prvků, které říkáme GoodStrap.

V GoodData máme s návrhem digitálních produktů hodně zkušeností. Nikdo z nás ale design guidelines před tím netvořil. A jak na to jsme věděli pouze z diskuzí a několika přednášek. Protože jsme ale něco takového opravdu potřebovali, museli jsme nějak začít.

Já jsem si vzal design guidelines na starost a zodpovědnost z designového pohledu. Hodně jsem se díky tomu naučil a jsem rád, že jsme se do něčeho takového pustili. Když se dnes ohlížím o těch několik měsíců zpět, tak musím říct, že jsme s tím měli začít mnohem dřív.

Proč jsme začali tvořit design guidelines

Společnost GoodData se za dobu své existence hodně rozrostla. Jak ve smyslu produktů a jejich funkcionality, tak i v počtu lidí, kteří je tvoří. V současné době je to více jak 5 produktů a více jak 100 lidí na design a vývoj.

Například s příchodem nových designérů jsme začali produkty dělat lépe a ve větším množství. Bohužel se ale do nich začal postupně promítat styl a přístup každého z nás. A jednotné UI tak začalo trochu trpět a rozpadat se.

Lidé se tak musejí v některých částech potýkat se stejnými prvky, které ale různě fungují, vypadají, jsou jinak pojmenované, atp. Což pro nás určitě není dobrá vizitka a už vůbec ne stav, který bychom si mohli dovolit.

Dělali jsme vše proto, abychom tomu zabránili. Bohužel se nám to ale z různých důvodů příliš nedařilo. Například:

  • Designeři byli součástí produktových týmu a věci jsme společně příliš často neřešili.
  • V podstatě nám chyběl „styčný důstojník“ – tedy designér, který by konzistenci v rámci produktů držel pevně v rukou.

Vidím to tak, že za konzistentní UI bojovalo pouze pár jedinců. Což byl ale bohužel předem prohraný boj.

V GoodData nejsem příliš dlouho – něco málo přes 2 roky. A pokud vím, byl to již několikátý pokus o vytvoření designových pravidel. Kdy předešlé pokusy bohužel nedopadly dobře – protože například nezískali dostatečnou podporu. Z mého pohledu pro něco takového tehdy asi ještě nedozrál čas.

Nedávno se ale situace ale naštěstí změnila a na konzistentní a funkční UI se více „tlačí“. Nejen z designového týmu, ale i ze strany samotného vedení. A i když jsme jako designeři neustále v produktových týmech, změnili jsme svůj přístup a dostali více možností. Například:

  • Častěji spolu komunikujeme věci do více do detailů.
  • Designový tým má hlavního designéra a vedoucího, který tým koordinuje.
  • Máme člověka zodpovědného za tvorbu design guidelines a tedy i konzistenci UI.

Poměrně nedávno jsme také začali s komplexním redesignem našich produktů a přípravou produktů nových. Nastal tedy pro nás ideální čas, abychom s přípravou guidelines co nejrychleji začali. A zabránili tomu, že se opět dostaneme do stejné situace.

Pro nás je konzistentní UI důležité v tom, že se budou lidé schopni naše produkty rychleji naučit používat, nebudou zmatení z různé funkcionality u stejných částí, atp. A budeme mít produkty promyšlené do posledního detailu. S čím nám právě jasně daná pravidla pomůžou (tedy alespoň tomu věříme).

Jak jsme postupovali

Jak jsem již v úvodu zmiňoval, nikdo z nás v GoodData něco takové před tím netvořil. Každý ale musel nějak začít. A tak jsme se do tohoto poměrně velkého „projektu“ pustili s tím, že se to prostě naučíme.

Definovali jsme si proto určitý postup, který by se dal shrnout v následujících bodech:

  1. Průzkum našich existujících produktů s ohledem na použití UI komponent a interakcí.
  2. Průzkum guidelines dalších produktů – především pro inspiraci.
  3. Definování pravidel, principů a struktury pro guidelines.
  4. Definování základních a složitějších prvků.
  5. Postupná tvorba a implementace.

Průzkum našich produktů

Pro mě bylo důležité pochopit a objevit všechny dobré a špatné aplikace prvků v našich produktech. Hlavně proto, abychom ty dobré mohli zachovat a ty špatné opravit. Proto jsem naše produkty prozkoumal v podstatě do posledního pixelu.

Díky tomuto kroku jsem tak objevil všechny možné elementy, jejich použití a význam. A mohl jsem začít připravovat půdu pro kýžená pravidla s tím, že zachováme naučené affordances,  dobré interakční patterny a opravíme existující.

Ukázka různých UI komponent a prvků z našich produktů
Ukázka různých UI komponent a prvků z našich produktů. Je z ní patrný různý přístup a různé prvky pro stejné věci.

V podstatě jsem tímto průzkumem vytvořil kompletní sbírku všech aplikací UI prvků přimo v produktech – od microcopy, odkazů, tlačítek až po modální dialogy, komplexní formuláře a jednotlivé stránky. A z designového pohledu tak definoval dobré a špatné příklady.

Inspirace v různých guidelines

Tvorbou designových pravidel už si prošlo mnoho designérů a firem s různými produkty a platformami. Proto jsme do nich pro inspiraci nakoukli. Konkrétně nás zajímala struktura guidelines, stavba a do jaké míry detailu jsou věci popsané a definované.

Nad smyslem jednotlivých guidelines jsme přemýšleli také ve smyslu daného produktu (nebo platformy) a komu vlastně mají sloužit.

Například jsme hodně detailně prozkoumali:

Díky nim jsme získali nápady, jak a proč naše guidelines strukturovat, do jaké míry detailu jednotlivé prvky rozvádět, atp.

Například hlavním cílem našich guidelines je zajistit konzistenci v rámci našich produktů. Proto dává smysl je mít pouze pro interní lidi – designéry, vývojáře nebo product management. A vytyčili jsme tak směr, kterým jsme začali guidelines vést. Například:

  • Nebudeme tvořit základní popisky pro význam jednotlivých UI komponent. Designeři by měli vědět, jaký je význam a funkce jednotlivých UI prvků.
  • Potřebujeme zajistit konzistenci na nižší úrovni a vždy budeme mít „custom“ design pro některé části.
  • Designové principy potřebujeme definovat pro každý produkt zvlášť vzhledem k různým personám.

Aby nám to skutečně začalo fungovat, vytvořili jsme si jasná pravidla, podle kterých budeme guidelines vytvářet a zajistili tak, že je budou všichni správně používat.

Dali jsme si jasná pravidla

Všichni se jistě shodneme, že klíčové oblasti UI jsou:

  • Copywriting,
  • Interaction Design,
  • Visual Design.

V GoodData jsme pro každou oblast vybrali samostatného designéra, který jí bude tvořit. Samozřejmě s tím, že vše budeme dělat dohromady, aby dával celek smysl a vše fungovalo.

Nestačí pouze tlačítka obarvit. Důležité je vědět, kdy a proč jednotlivé prvky používat.
Tento způsob nestačí. Důležité je vědět, kdy a proč jednotlivé prvky používat.

Protože jsme chtěli, aby mohl přispívat kdokoliv z designérů a vývojářů, vedle pravidel jsme se také shodli na tzv. gatekeepera. Tedy člověka, který bude guidelines držet pevně v rukou a nepovolí, aby se do nich dostala kdejaká věc. A jasná pravidla ve výsledku neztratila smysl.

Nedávalo nám ale smysl, abychom do guidelines zahrnovali obecné principy. Které v podstatě musí být součástí přemýšlení každého designéra, aby produkty dobře fungovaly. Tedy například:

  • Learnability,
  • Discoverability.

Tedy ta pravidla, díky kterým budou naše produkty použitelné.

Vedle těchto obecných pravidel ale potřebujeme i konkrétní designové principy. Protože je ale každý designér součástí určitého produktového týmu a řešíme tak různé problémy, dohodli jsme se na tom, že každý z nás bude principy pro svou část definovat. A v podstatě z nich bude podoba produktů vycházet.

Zároveň jsme ale nemohli čekat na kompletní definici a popisu všeho, co jsme viděli jako důležité. Chtěli jsme začít postupně a doplnili jsme proto další pravidla, například:

  • Chybějící prvky do knihovny přidáme – tedy pokud to dává smysl.
  • Nebudeme přidávat vše, ale právě pouze základní a přepoužitelné elementy. Vždy budou existovat „custom“ aplikace a kombinace některých komponent.

Definovali jsme všechny prvky

Poměrně dlouho jsme si kladli otázku, které prvky bychom měli do guidelines zahrnout a jak je ve výsledku strukturovat. Inspiraci jsme v podstatě našli při průzkumu guidelines. A pro samotnou tvorbu jsme se inspirovali v tzv. Atomic Designu.

Začali jsme tedy s definicí těch nejjednodušších prvků. Například:

  • Ikony,
  • Tlačítka,
  • Odkazy,
  • Formulářové prvky.
Ukázka toho, jak naše hlavní vizuální designérka Kristy popisuje vizuální styl komponent.
Ukázka toho, jak naše hlavní vizuální designérka Kristy popisuje vizuální styl komponent.

A postupovali jsme stále ke složitějším komponentám a jejich kombinacích – tedy molekulám, organismům a některých šablon. Například:

  • Různé formy a typy modálního dialogu.
  • Otevření modálního dialogu s formulářem včetně jeho zavření a uložení.
  • Vyhledávání a zobrazení výsledků na stránce – včetně všech popisků a interakcí.

Čímž jsme doplnili strukturu a rozdělili jí například na komponenty, ukázkové příklady, šablony, atd. Jenže to nejdůležitější a nejtěžší mělo teprve přijít.

Postupně jsme definovali jednotlivé prvky

Tvořit guidelines jsme začali tvořit na pomezí „starého“ a „nového“ produktu. Na jednu stranu to byla příležitost začít s „čistým“ štítem, na druhou stranu jsme museli brát na stávající produkty ohledy. Především z důvodů, že:

  • Lidé používající původní UI budou používat i nové.
  • Cokoliv se lidé již naučili nechceme změnit a nutit tak lidi používat naprosto nové UI s odlišným chováním.

Dost lidí si už vytvořilo mentální modely a my je nechceme měnit, když není potřeba něco opravit a udělat lépe.

Není to ale pouze podobě UI. Jak jsem již zmínil, důležité je také chování, různé stavy, význam, atp. Proto jsme se pro jednotlivé prvky zamysleli nad následujícími otázkami:

  • Jaký je smysl nebo význam prvku – tedy k čemu slouží?
  • Jaká je základní stavba?
  • Jakým způsobem s daným prvkem člověk interaguje?
  • Jak se bude prvek chovat v celém svém „životním cyklu“ – před, během a po interakci?

Pro jednodušší komponenty bylo poměrně snadné na tyto otázky odpovědět. U složitějších komponenty jsme vytvořili modelové situace a dali dohromady informace, které máme z uživatelského výzkumu, ze znalosti UI a dalších produktů (typicky s těmi, které naši uživatelé používají).

Ukázka toho, co jsme se snažili zachytit u některých složitějších komponent.
Ukázka toho, co jsme se snažili zachytit u některých složitějších komponent.

Pro tyto případy jsme komponenty rozebírali postupně a v některých případech experimentovali přímo s jednoduchými JS prototypy. Dost nám také pomohlo, že už jsme viděli spoustu lidí při práci s našimi produkty. Díky čemuž jsme si ověřili, že prvky a daná pravidla dávají smysl.

Pro nás je důležité, abychom měli ustálené základy, ze kterých budeme postupně budovat zbytek. Samozřejmě s vidinou, že není problém vše kdykoliv upravovat a zlepšovat. Proto jsme nepopisovali všechny možné případy, které budeme „možná“ někdy potřebovat.

Vývojáři a designeři společně

Dělat jakékoliv návrhy by bylo zbytečné, pokud bychom jim nebyli schopni dát skutečnou podobu a nezačali je reálně používat v našich produktech. Proto jsme už od začátku úzce spolupracovali s UI vývojáři.

Sami vývojáři se musí při tvorbě UI vypořádat se spoustou věcí, které jim práci a výsledky trochu komplikují. A pokud vím, byl to jeden z důvodů, proč před pár lety začali vytvářet přepoužitelné UI komponenty – tedy již zmiňovaný GoodStrap.

Pro mě bylo vždy důležité znát jejich názor. Proto jsme si společně mnohokrát sedli a diskutovali o tom, co nám brání v efektivní práci a jak bychom chtěli GoodStrap rozšiřovat. Například:

  • Co bychom rádi do knihovny dávali a co necháme jako „custom“ implementaci.
  • Kdy budeme vytvářet přímo JS komponenty a kdy nám budou stačit CSS styly.

Nezůstali jsme ale pouze u obecných diskuzí. Často jsme řešili velká témata. Například se klukům vývojářům nelíbil způsob, jakým fungují formuláře a vše s nimi související. Protože jejich tvorba a správa byla z jejich pohledu velice složitá. Konkrétně například:

  • Kompozice a skládání formulářů.
  • Jak řešit validace – klient vs. server.
  • Formuláře v rámci dalších komponent – například modálních dialogů.

Dohromady jsme pak dali řešení, které bude dávat smysl a nebude problém jej spravovat a případně rozšiřovat. A samozřejmě jej bude možné použít v jakémkoliv našem produktu.

Nápady na fungování validací u formulářů jsem řešili například na whiteboard.
Jakým způsobem jsme řešili a diskutovali možné fungování validací u formulářů.

Jako designeři vývojářům do vývoje nemluvíme. To je práce našich vývojářů. My se akorát snažíme poskytnout názor, zda výhledově nestačí pouze styl místo ucelené komponenty. A zda by třeba nestálo za úvahu použít existující framework – například Bootstrap nebo Foundation – který bychom si přizpůsobili.

Myslím si, že bychom nikdy nedosáhli takových výsledků, pokud bychom spolu takto nespolupracovali a nesdíleli chuť a zápal . Jsem hodně rád, že za námi vývojáři sami chodí, že se jim některé věci nezdají. A společně tak guidelines a GoodStrap rozvíjíme.

Všechno se nám hned nepodařilo

S tvorbou design guidelines jsme začali někdy v říjnu 2014. A když se dnes po několika měsících ohlížím zpět, mám z odvedené práce hodně dobrý pocit. Na druhou stranu bych dnes některé věci udělal jinak – ne všechno se nám totiž podařilo a některé „chyby“ nebude jednoduché napravit.

Dost velký problém je, že nejsme schopni GoodStrap rychle plnit novými prvky a komponentami podle specifikací. Psát kompletní UI komponenty je totiž časově poměrně náročné a my na to nemáme tolik kapacity.

Výsledkem tedy je, že se některé věci vytvoří přímo do produktu (s využitím pouze některých částí) místo do GoodStrapu a výsledek se tedy na mnoha místech rozchází. A je potřeba věci zpětně opravovat.

Proto jsme se dohodli spíš na tom, že bude v mnoha případech lepší vytvořit alespoň vizuální styl s klíčovými mikrointerakcemi.

Ne všichni také dostatečně pochopili, co do guidelines patří a co můžeme nechat volně. Občas tedy vedeme diskuze, co použijeme a do GoodStrapu vložíme. Což se nám ale naštěstí daří udržet na uzdě právě díky roli zmíněného gatekeepera.

Také bych se dnes více snažil zapojit a motivovat celý designový tým k tomu, aby se na tvorbě guidelines více účastnil a knihovnu pomáhal rozvíjet. A bral to jako jednu z klíčových věcí v návrhu.

I přes to jsem ale nadšený, že se nám podařilo tvorbu guidelines nastartovat a postupně minimalizovat různé nuance a problémy. A v podstatě tak zajistit, že naše produkty budou lépe fungovat a lépe působit. Stále se ale máme co učit.

Začněte s guidelines co nejdřív

Když bych dnes začal tvořit nějaký produkt, začal bych zároveň s tvorbou guidelines. Což by na začátku nevyžadovalo žádné extra množství práce, protože produkt by se vyvíjel postupně. A díky tomu připravil „pevnější půdu“ do budoucna.

Dnes je trendem, že se digitální produkty tvoří poměrně rychle a postupně se do nich přidávají možnosti, funkce, atp. A není tedy příliš náročné pravidla a konzistenci ukočírovat.

Všichni ale musíme očekávat, že pokud se společnosti daří, řeší zajímavý problém a o řešení (v našem případě nějaký produkt) je zájem, bude firma růst – tedy ve smyslu produktů a lidí, kteří je budou tvořit. A právě guidelines jim s tvorbou pomůžou, například:

  • V rozhodování, které prvky použít a proč.
  • V samotné tvorbě díky přepoužitelným prvkům, kódu , atp.

Proto nečekejte, až vyrostete a budete něco takového potřebovat. Začněte co nejdřív po malých kouscích. Pomůže to nejen Vám a novým kolegům. Ale ve výsledku hlavně lidem, kteří Vaše produkty používají.

Komentáře

  1. > Lidé se tak musejí v některých částech potýkat se stejnými prvky, které ale různě fungují, vypadají, jsou jinak pojmenované, atp. Což pro nás určitě není dobrá vizitka a už vůbec ne stav, který bychom si mohli dovolit.

    Podle čeho jste usoudili že nekonzistence je problém hodný řešení a hlavně systematické prevence? Rozumím, že ji pociťujete jako designéři, rozumím, že na to místy narazí powerusers, ale jak jste poznali, že je to opravdu problém?

  2. Peter Kahoun: díky moc, to je super otázka!

    Jako designeři víme, proč musíme dodržovat konzistenci a jaké to může mít a skutečně má za důsledky. Taky jsme už jsme mnohokrát viděli, co nedodržení konzistence způsobí – od menších věcí až po koncepční celky.

    Když jsem například sledoval různé video záznamy z testování použitelnosti a rozhovorů, všímal jsem si, že se lidé díky nekonzistenci opravdu zasekávají. Nikdy to nebylo nic kritického – pár vteřin navíc, 1-2 kliknutí při opravách volby, atp. Lidé to v podstatě ani nekomentovali. Ale my jsme si toho všimli. A chtěli jsme právě už od začátku zabránit tomu, abychom se s tím nepotýkali na vyšší úrovni a zajistili tak dostatečnou kvalitu našich produktů.

    Odpověděl jsem na tvojí otázku?

  3. Ondra Valka: ano, přesně tak 😉 Asi jsem to při revizích článku dostatečně nepodtrhl – ba dokonce jsem to možná celé vyhodil a zmínil to jen na konci.

  4. > Odpověděl jsem na tvojí otázku?

    Asi ano. Zeptal bych se jestli se vám tato snaha vrátí (z článku to vypadá že vám to zabralo a zabírá nějaký čas) ale nevypadáš na vážkách. Ale rozumím, že to se dost blbě odhaduje. 🙂

  5. P.: věříme, že se nám to vrátí. Díky přepoužitelným komponentám se vývoj stává efektivnější. A dost společností podobných našich zákazníkům si produkty a služby vybírá podle jednoduchosti použití (což je jeden z faktorů, který se hodnotí).

    Pokud si ještě nečetl, o důležitosti kvalitního UI nedávno vyšel zajímavý článek. VIz https://medium.com/@awilkinson/slack-s-2-8-billion-dollar-secret-sauce-5c5ec7117908.

  6. > A dost společností podobných našich zákazníkům si produkty a služby vybírá podle jednoduchosti použití…

    Ano, zde bude asi zdroj mé antipatie k style libraries – nevěřím totiž v garantovaný efekt na použitelnost aplikací. Viděl jsem, že designéři podlehli dojmu, že konzistentní rovná se více použitelný, avšak subjektivně může být existence style libraries (GoodStrapů) i kontraproduktivní.

    > Pokud si ještě nečetl, o důležitosti kvalitního UI nedávno vyšel zajímavý článek. VIz https://medium.com/@awilkinson/slack-s-2-8-billion-dollar-secret-sauce-5c5ec7117908.

    Četl jsem, ale tento článek myslím vysvětluje úspěch Slacku jinými kvalitami než konzistence či použitelnost. 🙂

Napsat komentář