Waardecreatie met technologie

Visie op software ontwikkeling

Er zijn veel mensen die een kast kunnen timmeren. Toch zijn er maar weinig goede meubelmakers.

Vakmanschap is meesterschap. Dat geldt voor de meubelmaker, maar zeer zeker ook voor de software engineer. Software maken vereist inzet, inzicht, zeer gestructureerd werken, goede analytische vaardigheden en heel veel doorzettingsvermogen. Dat is niet iedereen gegeven. En dat maakt goede engineers schaars. Bovendien is de aanpak belangrijk. De timmerman weet van een leermeester en uit ervaring wanneer, welk gereedschap te gebruiken en hoe ze hanteren. Dat geldt net zo voor de software engineer: kennisoverdracht (& best practices) en ervaring telt!

Software maken is complex en relatief kostbaar. En als de software eenmaal gebouwd is, moet ze ook nog onderhouden worden. Daarbij komt dat een groot deel van de kosten in de latere aanpassingen zit. Aanpassingen die nu eenmaal nodig zijn om technische of om functionele redenen. Ook dat eenvoudige APPje! Software moet dus vanaf de start met het oog op onderhoud goed geschreven zijn. Dus de opbouw en de structuur (netheid) van de software is hierin cruciaal.

[Direct doorlinken: visie, aanpak, succesformule]

Mijn visie op softwarebouw:

  1. Vakmanschap. Hier begint het. Een goede vakman heeft wellicht een hoger uurtarief, maar zal vele malen goedkoper zijn dan de hobbyist die er zijn beroep van heeft gemaakt en die de kennis en ervaring (nog) ontbeert;
  2. Minimaliteitsbeginsel als grondhouding: bouw precies die functionaliteit die nodig is - niet meer en niet minder. (In de Open Source wereld kent men de term "YAGNI " - You Arent Gonna Need It:  Always implement things when you actually need them, never when you just foresee that you need them.)
  3. Liever configureren dan bouwen: gebruik en herbruik zoveel als mogelijk standaard componenten. Denk aan Open Source Frameworks, libraries, etc.
  4. Gebruik Open Source technologie. Hiervoor zijn meerdere redenen (waaronder het vorige punt), maar ook een aantal cruciale voorwaarden, waaronder:
    • goede, betrouwbare software (talen, tools, frameworks) tegen lage kosten (fair price);
    • mits er een bewuste technologie-keuze heeft plaatsgehad waarbij er een actieve developer community is en de basis goed wordt onderhouden en zich verder blijft ontwikkelen;
  5. Software moet intuïtief en eenvoudig in gebruik zijn voor een soepele introductie in de organisaie en minimale behoefte aan support;

[terug naar boven]

Aanpak - complete realisatie op basis van ontwerp,  uitbesteding en management. In 5 zinnen:

  1. Uw business requirements zijn vanzelfsprekend het uitgangspunt;
  2. Dat werk ik uit tot een architectuurontwerp dat wordt aanbesteed bij een van mijn partners;
  3. Na selectie en akkoord wordt een eerste versie door deze partner gebouwd en door ons (u en ik) getest;
  4. Deze ontwerpversie wordt bij goedkeuring in het klein gebruikt en ervaren. Eventuele verbetervoorstellen worden uitgewerkt en geïmplementeerd;
  5. De verbeterde versie wordt in gebruik genomen waarna de periode van beheer en verdere optimalisatie aanbreekt.

Vanzelfsprekend werk ik uitsluitend op basis van bovengenoemde visie en selecteer daarom de partners die hierbij passen. Dit zijn kleine sofware boutiques waar liefde voor het vak centraal staat zoals blijkt uit bijgaande quote van een van hen. 

[terug naar boven]

Succesformule voor softwarebouw. Ja, ik weet het. De hele wereld praat over scrum, iteratief bouwen, etc. Dat is allemaal oud nieuws en bekend. Vroeger hadden we ook al DSDM. Ik houd het graag simpel en bouw zoiezo zelf geen grote systemen, tenzij incrementeel.

Ik hanteer de volgende fasen: "Ontwerp", "Verbetering", "Optimalisatie":

  1. "Ontwerp" levert een werkend prototype, product of increment dat laat zien wat kan. De betrokkenen moeten hiermee werken en ervan leren om vervolgens op basis van die ervaring en kennis het project voor de volgende fase te kunnen definieren;
  2. "Verbetering" levert het (voorlopige) eindproduct (of increment) waarmee de klant in principe in productie moeten kunnen gaan;
  3. "Optimalisatie" is de laatste fase en heeft alles met gebruik te maken: gebruiken en verder blijven optimaliseren en 'fine tunen' om maximaal profijt uit de software te halen.

[terug naar boven]

Published date: 
07/09/2015 - 16:30
Updated date: 
29/10/2015 - 18:17