Hoe heb je het volgehouden?

Software ontwikkelen is niet makkelijk, het is van zichzelf al niet makkelijk en het wordt nog moeilijker omdat je met mensen werkt en mensen zijn nooit makkelijk.

Ik sprak laatst met een collega en we hadden het over zulke moeiljkheden, over problemen waar het team tegenaan loopt en waar je oplossingen voor aandraagt, maar dat de oplossingen worden geproblematiseerd en dat het gesprek vervolgens gaat over alle redenen om de oplossing niet te accepteren, in plaats van het daadwerkelijke probleem op te lossen. (Zoals ik zei: mensen zijn nooit makkelijk.)

Het grappige aan zijn situatie was dat de helft van zijn team, in zijn inschatting, aan zijn kant stond, de andere helft de problemen al geaccepteerd had, en dat alle oppositie van de rest kwam. Maar de mensen die op zijn lijn zaten, spraken zich niet uit. Het was lastig gebleken de impasse te doorbreken, het team uit vastgeroeste manier van werken los te breken.

Het gevoel is me niet onbekend. Zo heb ik er jarenlang voor gestreden de ontwikkelaars in mijn (vorige) team zover te krijgen unittests te schrijven – niet alleen wanneer ze hun eigen code inderdaad wel erg complex vonden, maar altijd. Ik heb erover gesproken, artikelen gedeeld, ben met mensen samen gaan zitten. Op een gegeven moment had ik het idee dat we de boel echt op de rit hadden. Toen splitsten we op in twee subteams en de eerste beslissing die het andere subteam maakte, was: om de strakke deadline te halen, laten we het unittesten achterwege. (Ik schreef erover in deze blog en sprak erover in dit praatje.)

Software is eenvoudig vergeleken met mensen. Software doet wat je zegt – altijd, en als het wat anders doet, dan is dat omdat je iets anders zegt dan je denkt te zeggen. Mensen zijn oneindig veel complexer. Mensen volgen hun eigen wil – en of ze je daarmee verrassen of teleurstellen valt slechts proefondervindelijk vast te stellen.


*

Op een gegeven moment vroeg hij me: hoe heb je het al die tijd volgehouden? Het was een goede vraag, helaas gaf ik het eerste antwoord dat in me opkwam en dat is maar een deel van de waarheid.

Ik zei, eerlijk gezegd, software ontwikkelen is niet waar ik mijn energie uit haal. Ik vind het leuk om te doen, en uitdagend, en ik kan er een deel van mijn creativiteit in kwijt, maar aan het eind van de dag geef ik weinig om code. Diep van binnen ben ik nog altijd een filosoof, eigenlijk. Wat ik interessant vind, zijn ideeën, spelen met ideeën, ideeën van verschillende kanten bekijken en ontleden en opnieuw in elkaar zetten.

Code schrijven betaalt de hypotheek, maar waar ik mijn energie uit haal zijn de vrijdagen. Dan reflecteer ik op wat ik meegemaakt heb, dan neem ik de ideeën die me die week zijn aangewaaid en reflecteer daarop in een blog. Soms schrijf ik mijn frustratie van me af, maar liever verwonder1 ik me over wat ik zie of parafraseer een interessante gedachte uit een boek of conferentiepraatje.

Als mijn werkgever niet zo genereus was me die tijd te gunnen, dan had ik het niet volgehouden, zei ik. Dan zou ik me stuk hebben gebeten op de dingen die niet goed gingen, dan zou ik geen manier hebben gehad om uit de dagelijkse molen van het werk te stappen en de zaak van de buitenkant (of onderkant, of in kubistisch perspectief) te bekijken.

Maar: het is natuurlijk niet zo dat ik blog voor mijn lol. De vrijdagen helpen me problemen te doorgronden of op een andere manier aan te vliegen, problemen waar ik in de loop van de werkweek tegenaan ben gelopen. Ik blog omdat het me een betere ontwikkelaar maakt – naast dat ik er plezier aan beleef. (Zie ook deze blog.)


*

Die schets wekt de indruk dat softwareontwikkelen – zeker in teamverband – vooral een vervelende noodzakelijkheid is, maar dat is onterecht. Ook en juist de worsteling van een team is een vruchtbare bodem om dingen van te leren.

En ik denk dat dat ook een beter antwoord zou zijn geweest: ik heb het al die tijd volgehouden, omdat ik nieuwe dingen leerde, en nog steeds leer.

Toen ik net begon als softwareontwikkelaar, leerde ik een beetje syntax maar vooral hoe ik bugs kon introduceren. Daarna leerde ik hoe die bugs wegwerkte. Later leerde ik hoe je nieuwe functionaliteit ontwikkelt, en nog later leerde ik hoe je dat goed (beter) doet, op een duurzaam onderhoudbare manier. Het heeft jaren geduurd voordat ik überhaupt het ervaringsniveau had bereikt waarop ik me kon frustreren over de werkwijzen van een team.

Toen ik die lessen terug probeerde te geven aan mijn collega’s, leerde ik dat coderen het eenvoudige deel van softwareontwikkeling is. Ik leerde dat een substantieel deel van je tijd als ervaren ontwikkelaar gaat zitten in het vormen van en (positief) bijdragen aan de cultuur van een team – en later van een organisatie.

Softwareontwikkelen is, zeker in teamverband, moeilijk en soms frustrerend. Maar het is goed vol te houden als je oog blijft houden op groei – als niet van je team, dan ten minste toch van jezelf.

En, als jij groeit, dan groeit het team, of het nu wil of niet, stukje bij beetje met je mee, is mijn ervaring. Soms langzamer dan je zou willen, maar soms verrassen mensen je.


*

Frustratie ontstaat waar je verwachting en de werkelijkheid uit elkaar liggen. De werkelijkheid ligt buiten je controle, je verwachting niet. De oplossing voor frustratie is dus altijd: je verwachtingen aanpassen.

Dat betekent niet: je handen ter hemel gooien en de situatie accepteren zoals die is. Het betekent: een bescheidener stap nemen richting het doel dat je wil bereiken.

Samenwerken is voor een groot deel – misschien wel het grootste deel: jezelf managen.


*

Er zitten ten minste drie lessen verstopt in die reflecties die mijn collega zouden kunnen helpen. (1) Een team dat op één lijn zit, is allesbehalve vanzelfsprekend, daar moet werk van gemaakt worden. Steek daarom tijd in het organiseren van een coalitie van welwillenden om de gewenste verandering voor elkaar te krijgen. (2) Maak tijd vrij voor dingen waar je energie van krijgt, om te compenseren voor de frustrerende momenten waarop de dingen tegenzitten. (3) Houd focus op de lange termijn. Niet elke slag zal in jouw voordeel beslist worden, maar zo lang jijzelf en het team leren en in de juiste richting bewegen, is er geen reden om te wanhopen.

Sowieso is er geen reden om te wanhopen. Als je wanhoopt, houd je het nooit lang vol.


  1. Nota bene, filosofie begint bij verwondering, dixit Aristoteles↩︎

falen · leren · procesverbetering · samenwerking · teamcultuur · verandering · werkplezier