Waarom development een creatieve discipline is | 10 redenen / voorbeelden

09 Feb 2018

Stijn Berkers - Producer
+31 (0)20 - 261 14 99

Sinds onze rebranding van enkele weken geleden heb ik meerdere keren de vraag gekregen: ‘waarom is development een creatieve discipline?’ Veel mensen denken dat je als developer alleen maar code moet kloppen volgens voorgedefinieerde functies, zoals een klant dat wil.

Maar niets is minder waar, zonder creativiteit in development kom je nooit binnen budgets tot een stabiel systeem, wat geschikt is voor de toekomst.

Developers moeten iets verzinnen en het vervolgens produceren. Elk stuk ontwikkeling aan een online platform, website of app bepaald een groot deel van de toekomst van dat systeem: of het schaalbaar, snel en future proof blijft.

Ook moet je rekening houden met globale technische ontwikkelingen die keihard gaan. Wat nou als je in de toekomst het platform wil koppelen aan voice, of een iOT device? Dan wil je niet meer helemaal opnieuw beginnen of grote delen moeten herschrijven.

Goede developers zijn creatives.

Andersom zijn er ook onderzoeken waaruit blijkt dat coding je juist creatief máákt. Zie bijvoorbeeld dit artikel: coding maakt kinderen creatief.

10 redenen en voorbeelden waarom coding een creative discipline is

Deze praktijkvoorbeelden kwam ik tegen:

1. Analyseren requirements

Een klant komt vaak met een flinke waslijst aan gewenste functies, maar er is altijd een bepaald budget waarbinnen nooit álles geproduceerd kan worden. Geen enkel probleem, zolang wij het maar goed analyseren en prioriteren samen met de klant. Het development team zit hier direct aan tafel, voor hen vergt deze analyse inlevingsvermogen en inzichten over de toekomst —waarbij creativiteit key is om dit goed te doen en niet over een jaar vast te lopen.

2. Ontwerpen architectuur

Zodra een nieuw platform gebouwd wordt, start je met architectuur. Dit kan je vergelijken met de blauwdruk van een huis tot wolkenkrabber, afhankelijk van het project. Als deze blauwdruk niet goed is, dan is er kans dat de hele boel instort in de toekomst. Er zijn veel factoren die invloed hebben om deze blauwdruk goed neer te zetten; elke project is uniek.

3. Standaard vs maatwerk

Om snel te kunnen ontwikkelen maken we altijd gebruik van bestaande frameworks. We zoeken hierin een optimale combinatie tussen beschikbare framework, gepubliceerde code en maatwerk. Constant zoeken naar de juiste combinatie vergt creativiteit.

Bij producties onderscheiden we twee soorten werk: maatwerk en standaardwerk. Standaard werk is implementatie van stabiele open source code of configuratie van het systeem. Maatwerk zijn werkzaamheden die niet beschikbaar zijn middels configuratie of gepubliceerde code / beschikbare modules / packages / libraries, maar middels development op maat wel uitgevoerd kunnen worden.

Maatwerk kost relatief meer uren dan standaard werk, wij zoeken altijd een optimale combinatie: is een systeemwens op te lossen middels standaardwerk of maatwerk? Dit is van essentieel belang op afgesproken projectplanning & beschikbare budgets.

4. Design implementeren

Het design van een online platform staat los van de techniek er achter: je kunt het design vervangen en de functies behouden als je volgens het mvc patroon werkt. Om ervoor te zorgen dat het principe van het vervangbare design behouden blijft zijn scherpe inzichten nodig van het development team.

5. Strakke, leesbare code, dry

Wij ontwikkelen voornamelijk in PHP, een programmeertaal die redelijk loose is, je kunt er redelijk vrij in programmeren zonder dat meteen gebitcht wordt over syntax. Hierdoor kan je ook heel dirty programmeren: je kunt bijvoorbeeld en vieze functie maken die 200 regels onleesbare code bevat, maar toch juiste output op het scherm geeft.

Of je verdeeld het netjes op in 4 verschillende functies, generiek opgezet binnen MVC) / OOP.

Terwijl ze beide exact dezelfde output voor eindgebruikers geven, je hebt in eerste scenario een smerig dicht, niet schaalbaar en potentieel onveilig systeem. Te vermijden door intelligent en creatief te coden volgens DRY driven: don’t repeat yourself.

6. Lucius Lab: OpenLucius en Lus

Om goede platforms, websites en apps op te leveren als digital agency vind ik het belangrijk altijd vernieuwend te zijn. Zodat producties voor klanten altijd meest optimale, recente en efficiënte technieken bevatten.

Innovatief zijn, maar ook bijdragen. Zo produceerden we 3 jaar geleden OpenLucius en momenteel werken we aan Lus, beide open source platforms.

Binnen project Lus wilden we graag realtime technieken onder de knie krijgen, met behulp van Node.js. Veel platformen moeten tegenwoordig realtime communicatie ondersteunen, denk aan:

  • messaging platforms
  • social platforms
  • chatbots
  • realtime social intranet
  • streaming audio en video
  • enterprise search
  • marktplaats platform

We zijn ruim een jaar geleden begonnen met Lus, er was toen nog niet veel bekend over koppelen van een open source cms als Drupal aan Node.js en zeker niet over het bouwen van chat-channels op deze manier. Dus zijn we eerst flink gaan research en kwamen Socket.io tegen, hele vette library voor messaging platforms.

Maar dat moet vervolgens gekoppeld worden aan Drupal, waardoor een integraal platform ontstaat. Zo doet elk systeem waar hij goed in is —en wij niet alles from scratch hoeven te bouwen.

NodeJS / Socket.io voor oa:

  • Realtime pushen van berichten naar juiste groep mensen
  • Pushen van notificaties
  • Opslaan van chat geschiedenis, voor high performance messaging en search

Drupal voor oa:

  • Rollen en permissies (wie mag wat)
  • Beheer users en channels
  • Opbouwen van schermen
  • Koppelingen met iOS en Android apps

Dit was nog niet eerder gedaan, een flinke dosis creativiteit was nodig om dit schaalbaar werkend te krijgen; tevens zodat iedereen het straks zelf kan installeren middels een wizard zoals nu al mogelijk met social intranet OpenLucius.

7. Lucius security Lab: ontwijk GoT spoilers

Collega / ethical hacker Nick verzon een script die netwerk data analyseert: door het analyseren van pixels kon hij in concept voorspellen of er Game of Thrones spoilers binnen kwamen —en deze dus blokkeren. Geniaal.

8. Form validatie issue

We hadden vlak voor de deadline van SOS Kinderdorpen een bug in de form builder: zodra je op ‘Ja ik doneer’ klikt, wordt het laatst ingevoerde veld eerst via ajax gevalideerd, nadat die handeling is gedaan wordt het ingevoerde formulier verstuurd en dus de donatie gedaan.

Maar bij een bepaald (kort) formulier bestond zo’n validatie niet. Te complex om hier toe te lichten, maar het kwam erop neer dat het bovengenoemde script eindeloos wachtte.

Dan kan je een uitzondering gaan bouwen in het formulier wat veel tijd kost, maar iemand kwam met een uiterst creatieve oplossing: doe gewoon altijd één extra lightweight validatie call ertussen.

Hierdoor is er altijd iets te valideren et voilá: flink tijd bespaard en geen deadline in gevaar. Uiteraard zal dit in een toekomstige versie constructief worden opgelost, maar voor nu een zeer welkome, creatieve oplossing.

9. Productie muziek

Een aantal mensen uit ons development team produceren muziek: a creative process… just saying.

10. And many mo’

Ook elk van onderstaande issues vergt een zeker mate van creativiteit om goed gedaan te krijgen:

  • Zie een probleem
  • Initieer een idee
  • Verzin een oplossing
  • User interface design
  • Verzin potentiële security issues en oplossingen
  • Verzin edge cases van eindgebruikers
  • Verzin tests en automatiseer deze

Creative coding

Ook interessant: is er ook een beweging die Creatief coding heet:

Creative coding is a type of computer programming in which the goal is to create something expressive instead of something functional.

Wrap up

Hoewel veel mensen bij developers denken aan nullen en enen, lethargisch code kloppen -en functies maken bestaat bij ons niet. Om als developer goed bezig te zijn moet je een flinke dosis creativiteit hebben, waardoor je schaalbare platforms, websites en apps kunt ontwikkelen een optimale oplevering naar klant kan doen.

Comments

Nóg meer
kennis nodig?

Check ons ons blog archief >