Mijn collega Willem van Vredendaal schreef laatst een blog over zijn passie: ‘Verschilt de samenwerking in een sportteam van het werken bij Optimale Samenwerking?’ Naar aanleiding van mijn interesse in software code, heb ik de relatie tussen samenwerken en software code nader onderzocht. Te snel trok ik de conclusie dat het samenwerken tussen mensen geen relatie zou hebben met de abstracte wereld van eentjes en nulletjes. Echter blijkt dat, wanneer het gaat om effectief samenwerken, wij nog erg veel kunnen leren van ‘Interoperability’ van software (samenwerken tussen software).

Interoperability

Het samenwerken of verbinden van applicaties gebeurt veelal via Interoperability van managed en unmaged code, en online via API's (Application Programming Interfaces). Eén van de lessen die we hier uit kunnen opmaken, is dat wanneer het gaat om de communicatie tussen twee applicaties er wordt gewerkt met gedefinieerde interfaces of zogenaamde contracten. In deze contracten worden afspraken gemaakt over hoe, maar met name welke taal twee systemen met elkaar kunnen en/of mogen spreken. Vergelijk het met een voorbeeld in "de echte wereld": twee personen kunnen met elkaar praten. Wanneer de ene persoon Nederlands spreekt en de ander Russisch zal het niet komen tot een goed gesprek. Belangrijk is dus dat je bewust bent van elkaars taal. Daarnaast spelen dialect, kennis, vak jargon en context hierin een belangrijke rol.


"wat mag je van elkaar verwachten"

Een tweede les die we kunnen leren vanuit de wereld van code, is de werking van input parameters, return types en exception handling. Dit klinkt misschien spannend en complex, maar is verre van dat. Het gaat hier vooral weer om het maken van afspraken en het nemen van verantwoordelijkheden. De input parameters kun je vergelijken met het begrijpen van de communicatie: begrijp ik de opdracht die mij gegeven is en mag of kan ik deze accepteren? De ‘Return types’ zijn te vergelijken met het resultaat van de communicatie. As ik iemand de opdracht geef om werkzaamheden uit te voeren, is het belangrijk om het eens te zijn over het eindresultaat. In het dagelijkse bedrijfsleven gaan er naar mijn idee veel uren, resources en kosten verloren, doordat dit op voorhand niet goed is afgestemd.

“Leren is vallen en opstaan”

Waar mensen (en software) samenwerken kunnen er zaken misgaan of zogenaamde ‘exceptions’ optreden. ‘Exception handling’ is een constructie die een programmeertaal biedt om op uitzonderlijke gebeurtenis te kunnen reageren, en deze ook af te handelen tijdens het uitvoeren (run time) van software. Fouten maken is niet erg, we leren immers met vallen en op staan. Echter is het wel van groot belang dat we iets doen met deze situatie. Software leert ons dat we altijd iets met fouten moeten doen. Indien mogelijk zelf het probleem oplossen en mocht dat niet mogelijk zijn dan dienen we dit te signaleren, zodat dit op hoger niveau op gehandeld kan worden.

Zoals je ziet zijn er genoeg vergelijkingen te trekken en kunnen beide werelden nog veel van elkaar leren. Als organisatie realiseren we een optimale samenwerking middels ons INKIS ICT platform.