Programmeren en toneelschrijven

Waarom generalisten verder komen van David Epstein (originele titel: Range) is een pleidooi om je zo breed mogelijk te ontwikkelen en een waarschuwing voor te veel specialisering. Want wat wij graag zien als verdieping op je vakgebied betekent vaak vernauwing van je inzichten, met tunnelvisie tot gevolg. Grote sprongen in innovaties ontstaan nu juist door kruisbestuiving van disciplines. De creatiefste geesten vinden oplossingen buiten de geijkte paden, waar de vakidioten nooit zouden zoeken.

Ik ben nergens geniaal in, maar beschouw mezelf wel als een goede generalist. Ik kan zingen, pianospelen, een beetje cello en gitaar. Ik maak aardige foto’s en kan best goed koken. Na de muziek heb ik nergens zoveel vrije tijd in geïnvesteerd als het schrijven voor toneel, zeker als je de literatuurcolleges tijdens mijn studie Engels erbij optelt. Ik heb drie stukken geschreven die me geen roem of rijkdom hebben opgeleverd, maar wel veel plezier. En het geeft me een onverwacht nieuw inzicht in het vak waar ik wel mijn brood mee verdien.

Software in zijn pure vorm is niet meer dan een reeks instructies, levenloos zolang het niet wordt uitgevoerd door een besturingssysteem. Evenzo is een toneeltekst alleen maar woorden totdat ze door acteurs op het toneel tot leven worden gebracht voor een publiek. Shakespeare’s stukken bestaan voor 99% uit gesproken zinnen. Een filmscript heeft daarnaast veel aanwijzingen over hoe je de actie in beeld wil brengen, maar het draait nog steeds om woorden. Achter die woorden gaat een fictieve wereld schuil van personages, emoties en plotwendingen om de kijker geboeid te houden. Daar kun je van genieten zonder die wereld heel schools te willen ontleden. Sterker nog, dat doet toch alleen maar af aan het plezier, zoals je je nog wel herinnert van de verplichte boekenlijst op de middelbare school.

Maar als je wil schrijven heb je geen keuze. Ik had me nooit gerealiseerd hoe methodisch je te werk moet gaan om een stuk van anderhalf uur te schrijven. Voordat je je personages ook maar iets zinnigs kunt laten zeggen moet je een fictieve wereld in je hoofd bouwen waarbinnen ze tot leven komen. Je beschrijft wie ze zijn, wat ze van elkaar vinden en wat er met ze gebeurt, expliciet, liefst op papier. Pas als je ze goed kent schrijf je op wat ze tegen elkaar moeten zeggen. Dan zit je al op twee derde van het hele schrijfproces, maar dan wordt het ook echt leuk.

Niet elke schrijver is even sterk in dialogen, stijl, of personages. Zo was Shakespeare geniaal in zijn verbeeldingskracht, maar haalde hij zijn plots meestal uit bestaande verhalen. Hoe dan ook, als je alleen maar sterke dialogen kunt schrijven vlieg je van de ene snedige inval naar de andere en kun je misschien beter stand-up comedy gaan doen. Of je vormt een koppel met iemand die wel goed is in structuur en personages en dan kan er iets geweldigs ontstaan. Elke goede regel dialoog stuwt het verhaal verder of onthult iets over de personages, die je eerst goed moet leren kennen. Dialoog schrijven is het leukste deel van het proces, maar je moet wel het voorwerk gedaan hebben.

Wat heeft dit nu allemaal te maken met software bouwen? Nou, het schrijven van code is net als een pakkende dialoog het eindproduct van een creatief proces. Tijdens dat proces denk je na over de hardware waar jouw software op draait, wie het gaan gebruiken en vooral waarvoor. Sommige agile richtingen zeggen dat je zo snel mogelijk moet beginnen met coderen en niet over-analyseren. The proof of the pudding is in the eating. Dat mag zo zijn, maar wil je code schrijven die de gebruiker optimaal dient, dan moet je regelmatig uitzoomen naar het grote plaatje. Dat grote plaatje is de architectuur, het doel van de software en de gebruikers. Doe je dat niet dan ben je stuurloos een potje aan het hacken. Kan heel leuk zijn, maar doe dat alsjeblieft in je vrije tijd.

Je hebt ontwikkelaars die graag coderen op de vierkante millimeter en elk slimmigheidje van de taal optimaal uitpuren. Je hebt er die graag met opdrachtgevers voor een whiteboard zitten en zich over de architectuur buigen. Het zijn allemaal specialismen binnen een en dezelfde bezigheid: software ontwikkelen. Niet iedereen scoort op elke deeldiscipline een tien, dus je hebt elkaar bitterhard nodig.