Et designsystem bør være gjenbrukbart, generelt og treffe hele organisasjonen – uavhengig om det blir brukt for interne eller eksterne flater. Det betyr at man bør være svært tilbakeholden i forhold til hva som blir en del av designsystemet, og hva som kan implementeres enten som bruksmønstre eller i hvert produktteam.
Det at noe er gjenbrukbart, er ikke en god nok grunn til at det burde være en del av designsystemet. Det kan godt være en delt komponent, både designet og implementert på ett sted, men det å introdusere disse til designsystemet kan føre til en god del utfordringer:
- For spesifikke komponenter kan føre til at det kun er visse deler av organisasjonen som er interessert i å vedlikeholde og videreutvikle dem
- Om en veldig spesifikk komponent treffer noen, men ikke alle, behovene til et annet team, vil de bare lage sin egen som ligner litt
- Det fører til at designsystemet inkluderer altfor mange komponenter, som igjen fører til at det blir vanskelig å lære seg og ta i bruk.
<aside>
💡
Sjekklisten
Vi har laget en liten grei sjekkliste som man burde stille seg når når man vurderer en ny komponent inn i et designsystem. Den ser slik ut:
- [ ] Er dette en komponent som kan brukes på tvers av alle flatene i organisasjonen (interne/eksterne)?
- [ ] Er det en komponent man kan bygge mer avanserte, men fortsatt gjenbrukbare, komponenter med?
- [ ] Har andre designsystemer denne komponenten, eller noe tilsvarende?
- [ ] Hvis nei – Er det noe bransje- eller forretningsspesifikt som gjør at man burde fravike “bransjestandarden”?
Om du kan sjekke av alle disse boksene, så kan man med trygghet ta denne komponenten inn i varmen.
</aside>
Noen notater fra faggruppemøte hvor vi diskuterte hva som burde inngå i et felles komponentbibliotek:
Hvor går grensen på hva som bør være lokale komponenter vs globale?
- Core components burde være felles i et globalt komponentbibliotek
- Diskusjonen begynner gjerne først når det er snakk om nested components / sammensatte komponenter for særegne behov
- Når komponenten gjenbrukes hos flere plattformer/team bør man gjøre en vurdering på å ta det inn i felles komponentbibliotek globalt.
- Designsystemet skal ha rom for å lage lokale komponenter som er plattformspesifikke (være tilbakeholden på hva som skal være en del av felles designsystem)
- Kost/nytte spørsmål om man skal ta det inn i felles bibliotek hvis det er veldig spesifikke behov. Diskusjon om hvor ulike er egentlig behovene, kan de møtes og sammenstilles som én komponent?