Kwaliteitseisen Software Ontwikkeling

Richtlijnen voor (nieuwe) software ontwikkelaars bij Mediamatic

The Zen of Python, door Tim Peters:

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Uitleg

Om gezamenlijk op een efficiente en prettige wijze goede software af te leveren, nu en in de toekomst, zijn er richtlijnen nodig waar één ieder zich aan moet houden. Door middel van dit manifest trachten wij in die richtlijnen te voorzien.

Algemeen

In het algemeen verwachten wij van onze ontwikkelaars kennis, vaardigheid en ervaring op het gebied van software development en programmeertalen, met name op het gebied van de producten die wij leveren. Affiniteit met je vakgebied en de bereidheid om op de hoogte te blijven van de nieuwste ontwikkelingen op het gebied van nieuwe media en technologie zijn van groot belang en dienen ook gestimuleerd te worden vanuit het bedrijf.

Communicatie & Samenwerking

Misschien wel de belangrijkste factoren tijdens het ontwikkelingsproces zijn communicatie en samenwerking. Er zit een heel traject tussen het oorspronkelijke idee en het eindproduct en om dit allemaal soepel te laten verlopen is het onontbeerlijk dat er regelmatig wordt overlegd en getoetst.

In het algemeen bestaat de realisatie van een product uit de volgende fases:

  • Initialisatie
  • Ontwerp (zowel technisch als grafisch)
  • Planning
  • Ontwikkeling
  • Analyse (review)
  • Ingebruikname (deployment)

Enkele punten met betrekking tot de genoemde fases:

  • Het grafisch ontwerp van het product dient afgestemd te worden op het technisch ontwerp zoals aangegeven door de front- en/of back-end developers.
  • De projectleider maakt samen met de ontwikkelaars een realistische planning.
  • Overleg voorafgaand en tijdens de ontwikkeling van de software vooral ook met je collega's. Dit helpt je om jouw ideeen te staven en zorgt er ook voor dat je tijdens de reviewfase niet voor verassingen komt te staan.

Software Ontwikkeling

Er zijn een aantal bestaande ontwikkelingsprincipes waar wij graag aan vast houden. We leggen ze kort even uit:

  • KISS - Dit betekend letterlijk "Keep It Simple, Stupid" en komt er op neer dat een eenvoudige, begrijpbare aanpak de voorkeur verdient boven een complexe oplossing.
  • Agile Development - Dit principe gaat uit van een proces waarin er iteratief wordt gewerkt. Dat wil zeggen, werk met prototypes en pseudo-code en zet dit stap voor stap om tot een eindproduct. M.a.w.: ontwikkelingen en functionaliteit komen iteratief en incrementeel tot stand.
  • Refactor - Herschrijven. Past goed bij bovenstaand punt. Code is nooit af, maar altijd in ontwikkeling. Is er ruimte voor verbetering, doe dat dan.
  • Daar tegenover staat wel dat pragmatisme en perfectionisme in balans moeten zijn. Zoals in de intro al staat: "practicality beats purity"
  • Test-Driven Development - Schrijf code met het doel de unit tests succesvol te doorlopen, maak de unit tests niet achteraf.
  • Don't Reinvent The Wheel - Maak liever gebruik van bestaande oplossingen die hun effectiviteit hebben bewezen dan zelf iets nieuws te verzinnen.
  • Expliciet - Schrijf duidelijke code die nauwelijks of geen uitleg behoeft.
  • Documentatie - Waar nodig, documenteer je code en houdt ook wikipagina's bij. Dit voorkomt frustratie in de toekomst.
  • Maintainable Code - Veel van wat we nu maken moeten we in de toekomst blijven onderhouden en op voortbouwen. Zorg er dus voor dat je code begrijpelijk, beheersbaar en uitbreidbaar is, ook voor eventuele nieuwe collega's.
  • Stick To The Model - Door niet af te wijken van onze bouwprincipes wordt het voor iedereen prettiger werken.