Terug naar Home

Imperative or declarative design?

Jeremy Keith

Jeremy Keith is een Ierse Webdesigner die een aantal boeken heeft geschreven waaronder DOM scripting of een webdesign guide met JavaScript. Jeremy komt ons vertellen over de psychologie van de werkwijze van een mens. Vandaar de titel Imperative or declarative design?

Je hebt 2 soorten programmeurs, imperative en declarative. Jeremy zegt dat elke persoon dit voor zichzelf moet uitzoeken, maar dat je ook een mix van beiden kan zijn. Imperative programming is heel direct, denk aan talen zoals MySQL of JavaScript, deze voeren directe instructies uit op de machine/browser en falen vrij snel als er een error ergens zit. Hij voert dan ook de rest niet uit omdat dit soort imperative languages fouten niet tolereert. Als hij iets niet meer begrijpt, dan stopt het gewoon met het uitvoeren.

Declarative programming is niet zo strict, hier geef je aan wat je verwacht te krijgen, denk aan een feature of misschien het eindresultaat van het project. Je hebt dan ook Declarative programming languages, zoals HTML & CSS. Deze zijn beide fout tolerant en probeert de rest van de code uit te voeren, ook al zit er een error ergens. Deze talen zijn daarom ook wat meer beginner vriendelijk.

Jeremy maakt met deze uitleg een punt die we al eerder hebben gehoord bij Kilian. Use the least powerful language first. Jeremy quote: "JavaScript should only do what JavaScript can do". Hiermee bedoelen we dat je moet beginnen met HTML, dan CSS en als het nogsteeds niet mogelijk is, dat we dan pas JavaScript gebruiken. Dit is de juiste manier omdat CSS en HTML dus fout tolerant zijn en makkelijker te debugen & fixen dan een imperative language.

Jeremy die kaart aan dat imperative en declarative ook in personen terugkomen, sommige mensen die willen slechts de instructies horen hoe de taak uitgevoerd moet worden, denk aan stricte programmeurs, machinisten, logistiek etc. De andere groep die is declarative, dus die zijn wat losser in instructies en meer gefocused op experimenteren en het resultaat. Denk maar eens aan logo-ontwerpers, webdesigners maar ook sommige programmeurs.

Bij een bedrijf werken is niet altijd leuk, vooral als je een imperative persoon bent die declarative instructies krijgt. Dan zou je niet weten waar je moet beginnen, omdat het losse instructies zijn. Dit is waarom context binnen het bedrijf belangrijk is. Als je meer imperative(losjes) bent dan is een kleine agency vaak leuker, en als je imperative bent dan is een groter bedrijf vaak wat fijner.

We moeten meer denken in design systemen in plaats van vaste waardes, hier stelt Jeremy voor dat PX outdated is en REM een betere unit, ook zegt Jeremy dat Clamp gebruik goed is en laat hij de site utopia.fyi zien. Als laatst stelt Jeremy voor om Typescales te gebruiken als developer.

Jeremy sluit sterk af met de message: "Be the browser's mentor, not it's micromanager". Hiermee bedoelt hij dat je gebruikers niet kan forceren om jouw website te gebruiken hoe jij dat wilt, gebruikers zullen altijd dingen proberen te breken als ze niet hun weg krijgen. Vandaar dat we de gebruikers niet moeten micromanagen op onze website, want voordat je het weet gebruiken ze hun eigen styling, kleuren en fonts.