Software: bouwen of ontwerpen?
Software werd in de afgelopen decennia steeds belangrijker binnen de overheid, en bij vrijwel alle overheidsinstanties is software de kurk waarop de bureaucratie drijft. Verbazingwekkend lijken de meeste mensen bij de overheid, net als bij veel bedrijven overigens, een slecht idee van software te hebben. Overheden denken dat software iets is wat je ´bouwt´, net als kantoorgebouw, een metrolijn. Dit is een misvatting. Software, in essentie, bouw je niet, software schrijf je. Als een softwareprogramma geschreven is, kan het eindeloos verspreid worden, geïnstalleerd worden of hergebruikt worden.
Behoorlijk, als niet vrijwel alle, it-projecten van de overheden falen jammerlijk of zijn veel duurder dan verwacht. Recente voorbeelden zijn b.v. het aangiftesysteem van de overheid of de ov-chipcard. De overheid wilde software binnen een bepaalde vaste periode 'gebouwd' hebben, koos de goedkoopste leverancier en probeerde zoveel mogelijk de kosten gedurende het proces te laag te houden. Resultaat is keer op keer dat de overheid vele miljoenen betaald voor software, die nauwelijks zo ingewikkeld is als software die bedrijven als Google of Microsoft, of open-sourceprogrammeurs op een vrijdag-namiddag maken.
Hoe moet het maken van software dan wel gezien worden? Voor een deel is software schrijven creatief, voor een ander deel wetenschappelijk-analytisch (scientific zouden Engelsen zeggen, helaas weet ik geen goede vertaling daarvoor). Als je het maken van software al zou willen vergelijken met bouwen van huizen, dan is dat alleen het maken van het ontwerp.
Wat een junior-programmer doet is vergelijkbaar met wat in de bouw ontwerpers van leiding en electriciteitssystemen in huizen doet. Wat een senior-programmer of architect doet, is vergelijkbaar met wat een (daadwerkelijke) architect doet of projectontwikkelaar.
Als je de metafoor van bouwen zou moeten vergelijken: De gemeente Utrecht had het idee een gigantische woontoren te bouwen: de Belle van Zuyden.
Een archtictbureau heeft een ontwerp gemaakt, een projectontwikkelaar heeft een schatting van de kosten gemaakt. Na een grondige test van het bouwontwerp en -plan, en een gebruikerstest, bleek het gebouw totaal niet werkbaar. Verder ontwerp is gestopt: intekenen van de verwarming is vermoedelijk niet gedaan.
Belle van Zuylen is niet daadwerkelijk gebouwd, ofwel het is nooit in productie gekomen.
Softwareontwikkeling is dus vergelijkbaar met ontwerpen van machines, gebouwen, en systemen in het algemeen, niet het bouwen zelf. Dat verzin ik niet ter plekke, dit wordt ook onderbouwd door meerdere mensen die er verstand van hebben. Collega's hebben recentelijk nog een mooi artikel hierover geschreven:
Creativiteit in Software Ontwikkeling en Snel succesvolle projecten uitvoeren.
Goed boek om mee te beginnen: