Refactoren na Tolstoj

Het is geen geheim dat ik graag boeken lees - boeken over softwareontwikkeling, maar ook filosofie en literatuur. En omdat ik soms ook mijn momenten van pedanterie ken, neem ik vandaag de gelegenheid het over de crème de la crème van de wereldliteratuur te hebben op mijn blog over softwareontwikkeling.

Tolstoj

Laatst las ik een verhaal van Lev Tolstoj genaamd Uit de aantekeningen van vorst D. Nechljoedov. Luzern (1857), een verhaal gebaseerd op Tolstojs ervaringen tijdens een reis door Zwitserland. Het is geschreven in dagboekvorm en gaat over een Russische vorst die een nacht verblijft in het Schweizerhof, een prachtig chique hotel in Luzern, Zwitserland.

Na een tijdlang mismoedige over straat gezworven te hebben, wordt de aandacht van de hoofdpersoon getrokken door de prachtige stem van een armoedige zanger van Tirolerliederen. Met zijn gevoelige talent weet de zwerver wel honderd toeristen om zich heen te verzamelen, die ademloos naar zijn muziek staan te luisteren. Maar als hij met de pet rondgaat, weigeren de steenrijke toehoorders hem ook maar een cent toe te stoppen. Tot drie keer toe vraagt de zanger om een gift, en drie keer vangt hij bot.

Vorst Nechljoedov kan dat niet verkroppen. Hij besluit de zanger mee te nemen naar zijn verblijfplaats en staat erop in de chique zaal champagne met hem te drinken. Maar hij merkt aan alles dat de manier waarop hij wordt behandeld, anders is dan voorheen. Het gezelschap van de arme zanger ontmaskert het in naam egalitaire Zwitserland - symbool voor het verlichte Westen - voor de onmenselijke standenmaatschappij die het werkelijk is.

Op zijn kenmerkend meesterlijke manier schijnt Tolstojs verhaal licht op thema’s als medemenselijkheid, de hypocrisie van de elite, en de corrumperende invloed van rijkdom.

Mij deed het aan refactoren denken. - Ja sorry: beroepsdeformatie!

Refactoren

Soms heb je dat, dan zie je een stuk code dat zijn werk goed doet en waar jij en je teamgenoten dankbaar gebruik van maken - en waarvan je weet dat het al een behoorlijke staat van rot door heeft gemaakt. De problemen ermee zijn evident: code kent wat onnodig complexe randen, het commentaar is verouderd, de encapsulatie is hier en daar uit gemak gebroken, dat soort dingen. Maar: hij werkt, hij doet wat het moet doen.

Eigenlijk zou iemand de boel moeten refactoren, niet? Maar ondanks dat jij en je teamgenoten regelmatig in die hoek aan het werk zijn, is er niemand die de handschoen oppakt. De code gaat rond met de pet, maar vangt bot.

Uiteindelijk roep je: “Goed, dan doe ik het wel!” Je verkondigt luidkeels tijdens de Daily Stand-up dat je de rot in die hoek niet meer aan kunt zien en dat je deze middag blokt om de code eens goed onder handen te nemen. Iedereen mag - nee, móet het weten: jij gaat hier eindelijk eens orde op zaken stellen. Je teamgenoten wensen je plezier en succes - met, je weet niet of je het goed hoort of niet, iets van een cynische ondertoon in hun stem.

Je verwijdert commentaar, abstraheert methoden, knipt logica op, en ondertussen scheld je vrijuit op de collega’s die de rot zo ver hebben laten komen en er domweg iets aan weigeren te doen. Hoe kan een mens zorgeloos leven in het zicht van zulk onrecht? vraag je je af. Je aanklacht is vurig, net zo vurig als de lange tirade op het zogenaamd verlichte maar eigenlijk onmenselijke Westen die het eind van de aantekeningen van vorst Nechljoedov vormen.

Eenvoudig?

De situatie lijkt zo eenvoudig. Rottende code refactoren is het juiste om te doen, net zoals het juist is een armoedige zanger te betalen voor het genot dat zijn muziek je heeft geschonken.

Maar in de allerlaatste alinea van het verhaal gebeurt er iets interessants:

Nee, zei ik onwillekeurig tegen mezelf, je hebt het recht niet hem [de zanger] te beklagen en de lord vanweg zijn welstand aan te klagen. Wie heeft het innerlijk geluk afgewogen dat in de ziel van elk van deze mensen rust? Daar zit hij nu op een smerige drempel naar de stralende maanverlichte hemel te kijken terwijl hij vrolijk zingt in de stille, geurende nacht en er in zijn ziel geen verwijt, geen woede en geen wroeging is. En wie weet wat er nu omgaat in de ziel van al die mensen achter hun rijke, hoge muren? Wie weet of er in hun zielen evenveel zorgeloze, zachtaardige levensvreugde en levensharmonie leeft als in de ziel van deze kleine man? Oneindig is de goedheid en wijsheid van Hem die alle tegenstrijdigheden heeft toegestaan en bevolen. Alleen jou, nietige worm, die brutaal en zonder recht Zijn wetten en bedoelingen probeert te doorgronden, alleen jou lijken het tegenstrijdigheden. Hij ziet vanuit Zijn stralende, onmetelijke hoogte lankmoedig neer en verheugt zich over de eindeloze harmonie waarin jullie allen je in eeuwige tegenstrijdigheid bewegen. In je trots dacht je je los te kunnen rukken van de algemene wetten. Nee, jij en je kleine, lage verontwaardiging over bedienden, ook jij benatwoordde aan het harmonische verlangen van het eeuwige en oneindige…1

Wat is het juiste om te doen? - het is een centrale vraag in het oeuvre van Tolstoj. En omdat Tolstoj nu eenmaal een groot schrijver is, weerstaat de werkelijkheid van zijn verhalen, net zoals de werkelijkheid in werkelijkheid, eenvoudige antwoorden.

De wending naar God - naar een groter, onbegrijpelijk geheel -, werpt een nieuw perspectief op het verhaal. Meerdere, zelfs. Want berust de vorst zich hier in het feit dat de wereld oneerlijk is, of ontwijkt hij met een handige theologische ingreep juist van haar gruwelijke implicaties? Wat is zijn verantwoordelijkheid in het licht van Gods wetten? Was zijn aanklacht tegen het onrecht ingegeven door medemenselijkheid of door trots?

Wat is het juiste?

Wat doe je eigenlijk als je luidkeels scheldend een stuk code gaat refactoren? - En is dat het juiste om te doen? Hoe bepaal je wat het juiste is? Hoe ver rijkt je perspectief op de code? Snap je wel met welk idee deze is opgezet? Is wat jij als coderot ziet onderdeel van een groter geheel? - is er misschien een reden waarom die code de staat heeft die hij nu heeft? - Welke afwegingen maak jij als ontwikkelaar ontwikkelaar elke dag in de taken die je oppakt?

Mensen zijn oneindig complex en, aan het eind van de dag, ten diepste mysterieus. Daarbij vergeleken is code maar makkelijk te doorgronden. - Of is die observatie ingegeven door hoogmoed, een onvermogen de architecturele lijnen van een applicatie (met name applicaties met complexe uithoeken, zoals veel legacy-applicaties) te doorzien?

Als je een dagboek bij zou houden van je ontwikkelwerkzaamheden, en je had vandaag scheldend een stuk code lopen refactoren, hoe zou de laatste alinea in jouw dagboekaantekening er dan uitzien? - Of draaf ik nu te zeer door? Sorry, da’s ook een beroepsdeformatie!


  1. L.N. Tolstoj, Verzamelde werken: Verhalen en novellen 1851 - 1863, Amsterdam: Uitgeverij Van Oorschot, p. 383. De vertaling van dit verhaal is overigens van de hand van Yolanda Bloemen en Marja Wiebes. ↩︎

beroepsdeformatie · boeken · literatuur · refactoren