Writer's block en programmer's block

Mensen zeggen nou nooit tegen me: “Karl, ik zou graag willen bloggen, maar ik weet niet waar ik moet beginnen.” Maar als ze dat zouden doen, dan zou ik zeggen: “Begin eens met wat je vandaag hebt gedaan.”

Writer’s block

Wat daarna volgt, zo stel ik me voor, is een stroom aan tegenwerpingen die iedereen bekend voor zou moeten komen die ooit meer dan één letter op papier heeft gezet. Maar dat is niet (precies) wat ik wil zeggen. En: Maar dat is niet (precies) hoe ik wil zeggen wat ik wil zeggen. En de ergste van allemaal: Maar daar zit toch niemand op te wachten.

Die tegenwerpingen zijn allemaal uitdrukking van writer’s block.

Wat de laatste tegenwerping betreft, kan ik kort zijn: je blogt niet voor de lezer. Althans, dat zou je niet moeten doen - niet in eerste instantie, in elk geval. Bloggen levert veel te veel op voor jou als schrijver om te dat te doen voor een lezer.

Verwachtingen

De eerste twee tegenwerpingen zijn het gevolg van bepaalde verwachtingen die je als schrijver van je blog hebt. Meer bepaald: onrealistische verwachtingen.

Wie zegt dat-ie dat niet wil schrijven, vóórdat hij het daadwerkelijk heeft opgeschreven, heeft voor zichzelf een bepaalde verwachting geschapen van hoe de uiteindelijke tekst eruit zou moeten zien. Meestal zijn die verwachtingen ongedefinieerd, maar altijd zijn ze te hoog. Typische verwachtingen van iemand met writer’s block zijn: mijn tekst moet origineel zijn of mijn tekst moet compleet zijn.

De onderliggende, meest blokkerende verwachting gaat echter niet over de tekst zelf, maar het schrijfproces: de eerste versie van mijn tekst moet aan al die verwachtingen voldoen. Of, prangender verwoord: ik moet in één keer een tekst kunnen schrijven die aan al mijn verwachtingen voldoet. Deze gedachte is voldoende om alles wat volgt onmiddellijk als rotzooi af te schrijven.

Beginnen (1)

Het is zaak zulke gedachten te doorbreken. Verleg je focus van theoretische beren op de weg, naar praktische obstakels om uit de weg te ruimen.

Het beste wat je kan doen is beginnen. Dat is het moeilijke gedeelte. Als dat eenmaal achter de rug is, kun je je tekst verbeteren. Dat is het makkelijke gedeelte.

Om het moeilijke gedeelte zo makkelijk mogelijk te maken, doe je er goed aan je verwachtingen van de uiteindelijke tekst zoveel mogelijk af te snijden.

Een truc die ik zelf regelmatig toepas, is om niet te beginnen met een “echte” tekst, maar met een puntsgewijze opsomming van wat ik wil (of denk te willen) zeggen. De vorm is in dat geval voldoende om mezelf eraan te herinneren dat datgene wat ik nu opschrijf, nooit in die vorm in de uiteindelijke tekst terecht zal komen.

De eerste versie van je tekst is nog mijlenver verwijderd van wat je wil zeggen én hoe je het wil zeggen. Dit is geen bug maar een feature.

Het schrijfproces

Een goede tekst ontstaat niet uit het niets. Herschrijven is een essentieel onderdeel van het componeren van een goede tekst.

Niemand weet precies wat hij wil zeggen vóórdat hij datgene gezegd (of in dit geval: opgeschreven) heeft. Pas nadat je woorden zijn opgeschreven, hebben je gedachten een vorm aangenomen die concreet genoeg is om te kunnen zeggen: “Dat is wat ik wilde zeggen.”

Maar vaker zul je zeggen: “Dat is niet precies wat ik bedoelde; ik bedoelde eerder dit” (gevolgd door een hopelijk betere uitdrukking van wat je bedoelt). En ook die uitdrukking zal heus niet altijd precies goed aanvoelen. Dat is ook niet erg. Het gaat erom dat je dichter bij dat ideaal komt. Tot je op een punt komt waarop je kunt zeggen: dit is dichtbij genoeg.

Een goede tekst schrijven is, net als software ontwikkelen, een iteratief proces.

Programmer’s block

Sterker nog, alles wat ik hierboven heb beschreven, is net zozeer van toepassing op het schrijven van code. Ook wanneer je aan een applicatie werkt, kunnen je verwachtingen je blokkeren. Ook daar is de onderliggende verwachting: de code die ik nú ga schrijven gaat dit probleem in zijn volledigheid oplossen.

Onzin, natuurlijk. Je code is een heleboel versies verder eer je het met tevredenheid je wijzigingen commit.

Toch raad ik voor programmer’s block niet precies oplossing aan als voor writer’s block. Voor de laatste is het voldoende om te beginnen. Zeker in de context van een blog is herschrijven goedkoop. Dat komt doordat de scope van je tekst klein genoeg om te allen tijde het overzicht te kunnen behouden. Je betaalt geen boete voor je geklooi, integendeel. Juist dat geklooi is wat je helpt je tekst vorm te kunnen geven.

Code is helaas wat minder vergevingsgezind. Je moet ervoor zorgen dat je code blijft compileren en het verwachte gedrag behouden blijft. Bovendien werk je meestal binnen de bredere context van een applicatie, die je niet moet willen vervuilen met een half uitgedachte oplossing.

Beginnen (2)

Binnen de context van code geldt: begin met het uitschrijven wat wat je probleem is. Specificeer voor jezelf welke uitkomst je verwacht en welke bouwblokken je daarvoor nodig hebt.

Doe dit in commentaar, want commentaar is goedkoop om te schrijven en laterna weer aan te passen. Bovendien houdt het commentaar je oplossing dicht bij de code die je aan (denkt te) moet(en) passen.

Als je een eerste versie van je probleem en oplossing hebt geschetst, kijk dan of je dingen opvallen die beter kunnen. Zou je ergens gebruik kunnen maken van bestaande code? Is er een ontwerppatroon dat goed bij deze casus past?

Op een gegeven moment heeft deze schrijfoefening je begrip van het probleem zodanig gevormd, dat je programmer’s block is verdwenen. Je weet dan wat er voor nodig is om de boel tot een goed einde te brengen. En belangrijker nog: je weet waar je moet beginnen.

Het is niet voor niets een adagium in de softwareontwikkeling: First make it work. Then make it pretty. En make it work is in eerste instantie altijd make it - make something, anything!.

Achter de schermen

De eerste versie van deze blog was immers ook niet om over naar huis te schrijven. Lees maar:

Mensen zeggen nou nooit tegen me: Karl, ik zou graag willen bloggen, maar ik weet niet waar ik moet beginnen. Maar als ze me dat zouden doen, dan zou ik zeggen: begin eens met wat je vandaag gedaan hebt.

Wat daarna volgt, zo stel ik me voor, is een stroom aan tegenwerpingen die iedereen bekend voor zou moeten komen die ooit één letter op papier heeft gezet. Maar daar zit toch niemand op te wachten. En: Maar dat is niet wat ik wil zeggen. En: Maar dat is niet hoe ik wil zeggen wat ik wil zeggen.

Die tegenwerpingen zijn allemaal uitdrukking van writer’s block.

Writer’s block ontstaat wanneer je eigen verwachtingen van de tekst die je op het punt staat te schrijven, zo hoog zijn dat je hoe dan ook faalt.

Gewoon beginnen is eigenlijk altijd dé manier om die verwachtingen te doorbreken. Onder het schrijven kom je er wel achter wat je wil zeggen en hoe je het wil zeggen. De truc is eerst te beginnen.

Writer’s block is: in één keer goed willen schrijven. Maar zo werkt schrijven niet. Een groot gedeelte van schrijven bestaat uit het herschrijven van je eigen werk.

Juist softwareontwikkelaars zou dat proces bekend voor moeten komen. Hoe vaak komt het voor dat je de code in één keer precies goed schrijft? Mij nooit.

Dit is hoe ik writer’s block overwin wanneer ik codeer. Ik schrijf eerst in code uit welk probleem ik op wil lossen. Onderdelen van die oplossing zijn: wat ik er voor nodig heb en wat voor uitkomsten ik verwacht. Als ik die twee heb, dan heb ik iets tastbaars waarop ik de code daartussenin op kan baseren.

Als ik mijn commentaar in code om heb gezet, loop ik nog eens door het resultaat heen. Dan vallen me dingen op die beter kunnen. Die neem ik mee. Daarna loop ik nog eens door het resultaat heen. Elke keer probeer ik de code een stukje beter te maken.

Of je nu code of blogs schrijft, het proces is altijd hetzelfde. Je begint met een ruwe versie, en die verfijn je. Eerst komt het aankloten, daarna pas het inzicht.

Writer’s block is het aankloten willen overslaan, en kunnen beginnen met inzicht. Maar juist door het aankloten verkrijg je dat inzicht.

Dit is een bevrijdend idee.

Zegt de uiteindelijke blog precies wat ik wilde zeggen? Ach, het is goed genoeg. Daarom: begin gewoon. Dat is het moeilijke gedeelte. De boel verbeteren kan daarna alleen nog maar meevallen.

bloggen · iteratieve ontwikkeling · refactoren · software ontwikkelen · writer's block