Themabijeenkomst Coding Therapy for Software Developers

OGh-leden massaal in therapie bij Steven Feuerstein
20 dec 2013 - Toine van Beckhoven

Coding Therapy for Software Developers. Dat was de titel van de onlangs gehouden OGH sessie met als spreker niemand minder dan Steven Feuerstein, die we de afgelopen jaren al minstens zes keer hebben mogen begroeten.

Therapie kan kortweg beschreven worden als de behandeling van ziekten of het verlichten van symptomen ervan. Het woord ziekte moeten we in relatie tot software ontwikkeling wel heel ruim en vooral luchtig opvatten. Therapie bestaat in allerlei vormen en heel waarschijnlijk gaat iedereen op zijn eigen manier van tijd tot tijd 'in therapie'. Bij Oracle In Utrecht gingen op 11 december jongstleden ongeveer honderd OGH leden dus in 'Coding' therapie bij dr. Feuerstein.

Misschien waren velen gekomen met de verwachting om de meest bruikbare 12c PL/SQL new features te horen en te zien. Of om nog eens een flitscursus 'Werken met Collections' te krijgen. Maar niets van dat alles. De avond draaide nauwelijks om PL/SQL, wat toch de passie is van Steven Feuerstein. Niet eerder in de veertien jaar dat Steven gesproken heeft voor de OGh-leden, kwam er zo'n relatief vaag onderwerp uit de koker. Maar er was evengoed een hoge mate van herkenbaarheid: het gemak waarmee Feuerstein spreekt, de humor, de interactie met de zaal, de politieke geëngageerdheid en de kleine maar aanwezige verwijzingen naar de PL/SQL Challenge maakten het samen met de uitstekende presentatie weer een onderhoudende avond.

 

Omhakken van bomen

Het onderwerp van de sessie had kort gezegd te maken met verschillende vormen van therapie voor softwareontwikkelaars. Steven begon (als rechtgeaarde Amerikaan) met een onvervalste disclaimer en gaf aan dat het geenszins zijn bedoeling is om welke vorm dan ook van therapie belachelijk te maken. Hij gaf zelfs toe zelf wel eens een vorm van therapie gehad te hebben, maar toch vooral PL/SQL - en sinds enige tijd het omhakken van snel woekerende bomen - als therapie te zien. Dat laatste had vooral te maken met nieuwe passies van hem: evolutie en het bestrijden van 'invasive species' (in het Nederlands wel aangeduid als invasieve soorten of invasieve exoten). Mooi aan Steven is dat hij elke keer weer iets weet mee te geven aan de aanwezigen waarmee de wereld een stukje beter kan worden.

 

Na de disclaimer legde Steven eerst de reden uit van het onderwerp. De producten die wij software ontwikkelaars maken zijn een voortvloeisel van hoe wij als mens zijn en hoe ons lichaam en onze geest samenwerken en elkaar beïnvloeden. Het is dus wel eens goed stil te staan bij gewoontes die we hebben ontwikkeld in ons dagelijks werk en te kijken of we het creatieve proces dat softwareontwikkeling is, kunnen verbeteren door ingesleten patronen te doorbreken. Feuerstein's hoop was om veel voorkomende problemen waar we tegenaan lopen een beetje te verhelpen met een gezonde mate van therapie voor (database)ontwikkelaars.

 

Doe sit-ups

Wat te denken van uitspraken als 'SQL is not your best friend' en 'Consider any hard-coded declaration of a variable as VARCHAR2(N) as a bug'. Of de op het eerste gezicht als humoristisch bedoelde opmerking dat een goede manager je zijn kantoor met sofa mag aanbieden als je hem of haar vraagt of je tijdens het werk even een dutje mag doen. En: 'Doe sit-ups tijdens het werk, zelfs al doe je helemaal niets aan sport, doe sit-ups'. Het klinkt zo allemaal wat vreemd, maar in de hele context van de presentatie pasten ze wel. Het hoorde thuis in de luchtige vorm van therapie we in een kleine twee uur ondergingen.


 
Steve Feuerstein presenteert
 

Steven gaf een aantal hele aardige tips gedurende de avond. Niet om die allemaal letterlijk te nemen, maar vast ook om een stuk over de grenzen te kijken van wat we allemaal elke dag als normaal (zijn gaan) beschouwen. Wat te denken van de tip om spelletjes te gaan spelen tijdens het werk? Niet zoiets als Monopolie of Patience, maar patroonherkenning-verbeterende spellen als 'MasterMind' en 'Set' (www.setgame.com). Software ontwikkeling, debuggen en testen zijn werkzaamheden waarbij het kunnen denken in patronen, deductie en inductie van groot belang zijn. Als een spel als MasterMind of Set je grote problemen geeft, kun je jezelf zelfs afvragen of je als ontwikkelaar wel voldoende logisch denkvermogen hebt. Die uitspraak kwam wellicht als een schok (en was vast een voorproefje op de 'Schoktherapie'). Steven noemde het spelen van dit soort spelletjes 'Game Therapy'. Het was in dit onderdeel dat uiteraard ook de PL/SQL Challenge genoemd werd. En terecht, want het loont voor je dagelijks werk om PL/SQL vraagstukken die je misschien niet eerder gezien hebt, op te lossen.

 

Hulp vragen

'Dream Therapy' was de volgende vorm die Steven aanhaalde. Hiermee doelde hij op het goede effect van jezelf letterlijk en geestelijk verwijderen van de computer als je een probleem niet kunt oplossen. In plaats van je hoofd te breken en 'het tegen de muur te bonken', helpt het heel vaak om de zinnen te verzetten en er ofwel een nachtje over te slapen of iets lichamelijks te gaan doen zoals een blokje wandelen of de genoemde sit-ups. Het maakt niet uit wat, als je maar iets heel anders gaat doen. Het antwoord of de beste manier om dat antwoord te vinden zit vaak al verborgen in het onderbewustzijn, maar wordt geblokkeerd door er te hard mee bezig te zijn.

Er is ook iets dat we van nature moeilijk vinden om te doen en dat is onszelf bloot geven en onze zwaktes tonen. Het verbergen van zwaktes kan zelfs gezien worden als een natuurlijk overlevingsmechanisme. Velen van ons zoeken liever een hele dag zelf naar de oplossing voor een probleem (bijvoorbeeld het oplossen van een bug), dan om hulp te vragen. En die hulp hoeft volgens Steven helemaal niet eens te komen van iemand die dezelfde (technische) kennis heeft als wijzelf.
Het gaat er vooral om, om de gedachtes die we zoveel binnen onszelf houden, naar buiten te laten komen. Door erover te praten met iemand anders of door ze op papier te zetten. We hebben vast allemaal al eens gemerkt dat we een probleem hadden en zodra we er iets tegen een ander over begonnen te zeggen, kwamen we al pratende zelf achter de oplossing. Deze aanbeveling kwam aan bod als 'Confession Therapy': geef toe dat je iets niet kunt oplossen, betrek er niet alleen mensen in die beter zijn dan jij maar zeker ook de junioren in je team. Alleen al omdat je als deskundige toegeeft niet alles te weten, maakt het voor de minder ervaren teamleden makkelijk om zelf ook met hun vragen naar jou te komen. Op die wijze kunnen alle teamleden, ervaren en onervaren, elkaar helpen. De praktische vuistregel die Steven voorstelde was: als je meer dan een half uur aan het zoeken bent zonder oplossing, vraag dan om hulp.

 

Loslaten

'Shock Therapy' (Schoktherapie) slaat op het loslaten van een aantal ingebakken gewoontes die we als Oracle PL/SQL ontwikkelaars hebben (en het schokkende is dat deze gewoontes niet de juiste zijn). Ik heb het al even genoemd, maar het zou zo moeten zijn dat het schrijven van SQL een minder dominante plaats inneemt dan ze nu doet. We schrijven aan de lopende band SQL statements binnen onze PL/SQL code. Het opnemen van SQL statements is namelijk eenvoudig binnen PL/SQL; we denken dat Oracle SQL allemaal uit zichzelf perfect optimaliseert; we denken dat elk SQL statement zo uniek is dat we het wel moeten schrijven; we vergeten Exception handlers omdat die insert nooit kan falen en meer van dat soort gedachtes zitten in onze hoofden als we aan SQL denken. Maak gebruik van een (geheel of deels gegenereerde ) data access layer (in PL/SQL packages), neem SQL statements op in een functie en gebruik die functies in je programma's.

 
Steve Feuerstein presenteert
 
Schokkend is ook het idee dat elke declaratie van VARCHAR2(N) moet worden gezien als een bug, tenzij het de enige aanwezige declaratie is die we hebben, en dan wel door het te declareren als een SUBTYPE in een centrale Types package. Maak gebruik van %TYPE, %ROWTYPE en SUBTYPES om de VARCHAR2(N) declaraties een betekenisvolle naam te geven en ze op die manier op één plek bij te houden. Aanpassing van die ene declaratie en Oracle's automatische invalidatie en hercompilatie zorgen ervoor dat die ene wijziging overal vanzelf bijgewerkt wordt. Programma's worden er ook leesbaarder en dus zelfdocumenterend van. In dit onderdeel zagen we de enige stukjes PL/SQL code van de hele presentatie!

 

 

Goede relatie

'Couples Therapy' heeft alles te maken met de samenwerking die je als ontwikkelaar moet hebben of aangaan met de DBA en je manager. De manager is ervoor om het jou als expert mogelijk te maken je werk te doen. Zorg dat je in een positie komt waarbij je elkaar niet tegenwerkt, maar ondersteunt. Vraag je manager om dingen als ontwikkelstandaarden, de juiste tools, om testprotocollen en testmethodes en... geef hem een boek cadeau als dank daarvoor. Het boek 'PeopleWare' door Tom DeMarco en Timothy Lister, was Steven's advies. Het boek beschrijft het formeren van succesvolle ontwikkelteams.

De DBA en de ontwikkelaar behoren ook een goede relatie te hebben. De ontwikkelaar moet de DBA op de hoogte houden van belangrijke design beslissingen, zeker als er dingen nodig zijn als gebruik van built-in packages die niet standaard gebruikt kunnen worden en performance-gerelateerde functionaliteiten als het gebruik van Collections, BULK COLLECT en FORALL, de Function Result Cache en in de zaal werd ook nog Virtual Private Database genoemd. Als de DBA niet op de hoogte is van het gebruik van deze dingen, kan hij of zij ook niet de juiste memory componenten instellen of de impact inschatten op de rest van de server. De DBA kan de ontwikkelaar helpen door hem of haar toegang te geven tot wat V$ views waarmee de ontwikkelaar zelf kan controleren wat er gebeurt als het programma draait (hoeveel PGA geheugen kost het, hoeveel I/O wordt er gebruikt, wat zijn de wachttijden en meer in het algemeen de meest gebruikte resources van mijn programma als ik kies voor een implementatie met of zonder die ene feature?).

 

Therapeutische werking

En dan was daar tot slot nog het stukje wereldverbetering met een link naar therapie: invasieve soorten bedreigen oorspronkelijke soorten met allerlei desastreuze gevolgen van dien. Voor Steven is het bestrijden van zulke invasieve soorten en dus het beschermen van de natuur een vorm van therapie: je voelt je er beter van, het verzet de zinnen dus je bent niet met je werk bezig en je doet nog iets goeds voor de wereld.

Ik kan me als ontwikkelaar die:

  • regelmatig hardloopt en tijdens die fysieke inspanning wat goede ideeën opdoet of problemen oplost
  • die tot op zekere hoogte gebruik maakt van een data access layer, gegenereerd door een tool die Steven 15 jaar geleden heeft geschreven
  • die het gebruik van SUBTYPES en %TYPE niet vreemd voorkomt
  • en een goede relatie heeft met zijn DBA en managers,

gelukkig prijzen als ik de avond zo volgde. Maar ik kan niet zeggen dat ik die goede gewoontes altijd naadloos volg. Van invasive species had ik nog nooit echt gehoord, laat staan er veel over nagedacht. En een spelletje MasterMind vind ik absoluut moeilijk, laat ik daar dan maar eens aan gaan werken. Tijdens het schrijven van dit artikel lukte het me maar net om er eentje op te lossen. En dat had een therapeutische werking!

 

Toine van Beckhoven (http://www.jom-it.nl/) is zelfstandig en allround Oracle specialist. Oracle Performance Tuning en PL/SQL hebben zijn grootste interesse.