JAVA developer Venkat Subramaniam over lesgeven, eenvoud en kwalitatieve code

compleet interview bekijken


    JAVA developer Venkat Subramaniam over lesgeven, eenvoud en kwalitatieve code

Toen Venkat Subramaniam op 13 november 2018 in België was voor Devoxx, hebben wij hem gestrikt voor een interview. Hierbij het verslag dat verscheen in Java Magazine - April 2019.

Venkat Subramaniam is een bekende auteur en spreker over agile development. Hij bezoekt de ene na de andere conferentie, vaak als spreker. Toch slaagt hij erin om zijn tijd zeer efficiënt te gebruiken. Zelfs verre reizen zijn voor hem productief: “Een vlucht van acht of negen uur is een geweldige tijd om me te focussen op een artikel of een hoofdstuk in een boek dat ik aan het schrijven ben of op een ingewikkeld stuk code. Ik ben dan heel productief. Terwijl veel mensen tijdens hun vlucht films kijken, programmeer ik liever: het is beter dan elke andere vorm van in-flight entertainment. Reizen om op vakantie te gaan, is een hele andere modus dan reizen als onderdeel van je werk. In het laatste geval wordt het een deel van je routine om op elk moment tijdens de vlucht zoveel mogelijk werk gedaan te krijgen.” Volgens Subramaniam is een vliegtuig zonder internettoegang zelfs een voordeel. “Ook al zijn we afhankelijk van het internet om dingen op te zoeken, een vlucht is een geweldig moment zonder onderbrekingen: geen Twitter of Facebook. Ook al hebben de meeste vliegtuigen waarmee ik nu vlieg wel internettoegang, ik maak er een punt van om dat niet in te schakelen. Die vier tot acht uur zonder internet zijn immers absoluut kostbaar: ik kan me dan op één specifiek probleem focussen.”

Leren uit kritiek

Subramaniam zou echter niet zijn hele werkdag in de lucht willen vliegen. Hij leert ook veel van interacties met anderen, vooral van kritiek die anderen op zijn werk leveren. “Als anderen naar mijn code kijken en er kritiek op leveren, dan leer ik daar veel van. Alleen al wanneer ik weet dat iemand anders naar mijn code gaat kijken, schrijf ik de code heel anders. En als ze er dan écht naar kijken en er commentaar op leveren, gaat het vaakle om aspecten waarvan ik dacht: wauw, dat had ik niet gezien. Dat menselijke aspect is voor mij heel waardevol.” Voor Subramaniam gaat het om het juiste evenwicht vinden tussen zich afzonderen zodat hij zich kan focussen en met anderen in interactie gaan voor hun nieuwe gezichtspunten. “Er zijn momenten waarop ik met mensen wil werken en er zijn momenten waarop ik in isolatie wil zijn en tijd wil besteden aan denken.”

Iets ingewikkelds eenvoudig maken

Eenvoud speelt een grote rol in Subramaniams drive om les te geven: “We leven in een hele ingewikkelde wereld. En veel mensen maken ingewikkelde dingen nog ingewikkelder. Er zijn zelfs mensen die erin slagen om eenvoudige dingen ingewikkeld te maken. Als ik iets ingewikkelds, al is het maar iets kleins, eenvoudig kan maken door het jargon weg te nemen en mensen kan laten inzien hoe eenvoudig het is, dan voel ik me goed.” Zoals Subramaniam het uitlegt, lijkt het allemaal eenvoudig. Maar dat is het niet: “De weg om dingen te vereenvoudigen, is echt een moeilijke weg. Ik heb gelukkig de luxe dat ik veel tijd kan vrijmaken als het nodig is. En dan doe ik soms twee dagen niets anders dan een probleem aanpakken dat ik wil vereenvoudigen. Ik zit dan urenlang op een zaterdag code te schrijven, te herschrijven, weg te gooien en na een uur of zeven heb ik dan een stukje gedistilleerde code dat echt werkt en inzichtelijk is. Voor mij is dat probleem dan belangrijk genoeg om me erin te verdiepen en andere verplichtingen even opzij te zetten.”

Subramaniam beschouwt zichzelf niet als een rockstar developer, zegt hij. “Er is zoveel dat ik niet weet en wanneer ik over een nieuw concept of idee leer, dan worstel ik er vaak weken, maanden, soms jaren mee. Ik heb niet die spreekwoordelijke plotselinge klik. Het is voor mij echt een strijd. Ik ben geen rockstar developer, maar een spartelende programmeur. En dat vind ik goed. Het zou maar saai zijn als ik al die inzichten eenvoudig zou verkrijgen. De strijd om ertoe te komen, maakt het juist zo spannend.”

Niet zo’n slecht idee om les te geven

Die gave om ingewikkelde zaken eenvoudig te maken en het ook eenvoudig uit te leggen, had Subramaniam al tijdens zijn studies. Toen hij doctoreerde, kwamen zijn klasgenoten vaak naar hem als ze met een probleem zaten. “Ik legde het dan uit en dan zeiden ze vaak: ‘Wauw, waarom is dit zo eenvoudig als jij het uitlegt, terwijl ik er dagen mee geworsteld heb?’”

Later, toen hij onderwijsassistent was, vroeg zijn professor hem eens om voor zijn klas te staan om vragen van zijn studenten te beantwoorden over computerarchitecturen.

"PROGRAMMEREN IS VEEL LEUKER DAN ELKE ANDERE VORM VAN IN-FLIGHT ENTERTAINMENT"

“Ik was eerst doodsbenauwd, want ik moest vragen beantwoorden twee dagen voordat de studenten hun examen hadden. Mijn uitleg was dus heel belangrijk. Dat was de eerste keer dat ik voor studenten stond. Toen de les voorbij was, zeiden de studenten dat mijn uitleg echt een verschil maakte. En toen dacht ik ’s avonds: misschien is het niet zo’n slecht idee om les te geven. Toen startte ik aan de universiteit met doceren en na tien jaar begon ik ook op conferenties te spreken.”

Meer inzicht door les te geven

Subramaniam is ook gepassioneerd door lesgeven, omdat het hem verplicht dieper op de materie in te gaan. “Als mensen zeggen dat ze tien of vijftien jaar ervaring in een industrie hebben, dan betekent dat niets. Het gaat niet om de hoeveelheid tijd die je erin hebt gestopt, maar om hoe diep je op de materie ingaat. Als je aan het programmeren bent op je werk, dan los je een probleem op en ga je naar het volgende probleem. Dat is heel belangrijk en die ervaring heb je nodig om les te geven. Maar als je programmeert, is het ook een groot voordeel dat je erover lesgeeft, omdat je dan echt dieper in de materie graaft.”

Lesgeven is volgens Subramaniam een belangrijke feedbackklus: “Als je iets uitlegt en je ziet dat de persoon voor je het niet begrijpt, dan weet je dat je het niet op de juiste manier aanbrengt en dan besef je dat je het zelf ook niet helemaal begrijpt.” Subramaniam geeft een voorbeeld van toen hij C++ doceerde. “Ik was een concept aan het uitleggen en ik zag duidelijk dat niemand een idee had waarover ik sprak. Toen ik thuiskwam, ging ik zitten en begon ik na te denken waarom niemand het leek te begrijpen. Toen besefte ik dat ik zelf niet begreep wat ik dacht begrepen te hebben, terwijl ik het al vijf jaar doceerde. Dat was echt een zenuwslopende ervaring.”

"IK BEN GEEN ROCKSTAR DEVELOPER, MAAR EEN SPARTELENDE PROGRAMMEUR"

De uren erna verdiepte Subramaniam zich dan ook in het onderwerp. “En toen opende er zich plots een kleine deur en zag ik een kamer waarvan ik niet wist dat die bestond: ik begreep het eindelijk. De volgende dag legde ik het uit en zeiden mijn studenten: ‘Dit is zo eenvoudig, waarom legde je het gisteren niet zo uit?’ En daarop antwoordde ik eerlijk dat ik het toen nog niet begreep.”

Soms kan een onderwerp ook onverwachte diepgang herbergen. Zo herinnert Subramaniam zich dat hij eens een presentatie wilde geven over ‘type inference’ op de JavaOneconferentie: “Toen ik de presentatie begon voor te bereiden, dacht ik: ‘Wat kan ik hier over zeggen, in twee minuten heb ik toch alles verteld?’ Maar toen begon ik dieper na te denken over het onderwerp en vond ik laag na laag van complexiteit. Het is net zoals bergbeklimmen, één van mijn andere hobby’s. Je gaat niet ‘gewoon’ naar de top. Je moet allerlei kronkelende paadjes volgen. Ik ontdekte dat er zoveel te vertellen valt over ‘type inference’ dat ik het zelfs moeilijk vond om het tot een presentatie van één uur samen te persen. Uiteindelijk heeft deze presentatie twee uur lang geduurd, omdat de toehoorders zo betrokken waren en met me begonnen te discussiëren.”

1820, geen 2018

Bedrijven spannen steeds vaker een proces aan wegens de lage kwaliteit van software die ze gebruiken, zeker in de VS. Subramaniam is niet gelukkig met deze evolutie, maar gelooft dat dit wel tot iets positiefs zal leiden: “Ik geloof dat onze industrie door deze evolutie gereguleerd zal worden. Er zullen wetten komen die kwaliteit vereisen voor software, zoals dat nu al in de medische industrie vereist is. In 1820 liepen dokters letterlijk met bloed op hun jas rond, omdat ze niet beter wisten. Pas later ontdekte men dat de dokters zo infecties van de ene naar de andere patiënt verspreidden. Pas toen men het concept van ziektekiemen begreep, begon men allerlei beperkingen op te leggen om de verspreiding van ziektekiemen tegen te gaan, zoals het steriliseren van materiaal. Dat kost geld, maar het is nodig.”

Subramaniam legt de link met de huidige software-industrie: “Voor ons beroep zitten we nu niet in 2018, maar in 1820. Ons gebrek aan discipline en kwaliteit zadelt ons met gigantische kosten op. Software wordt ondertussen in alle aspecten van het menselijk leven gebruikt. In situaties waar het om menselijke levens gaat of om hoge financiële belangen, moeten we de manier veranderen waarop we software ontwikkelen. Wanneer die regulering er komt, hebben de ontwikkelaars die nooit de kans hebben gekregen om tijd te besteden aan kwalitatieve code, een probleem. Wie wel heeft geïnvesteerd in het vakmanschap van programmeren, zal zich in een veel comfortabelere positie bevinden.”

Geen tijd voor kwaliteit

Helaas ziet Subramaniam dat organisaties meer en meer onder tijdsdruk komen te staan. “Ze zeggen dan dat ze geen tijd hebben om kwalitatieve code te schrijven en geautomatiseerde tests op te zetten. Ze jagen gewoon hun deadlines achterna. Dat moet uiteraard ook gebeuren. Maar als een junior developer jarenlang van deadline naar deadline holt, dan heeft hij of zij alleen maar geprogrammeerd in deze strakke structuur volgens deadlines. Als je dat vijf à tien jaar doet, ben je misschien ondertussen wel senior developer, maar heb je nooit de tijd gehad om de vaardigheden te ontwikkelen die nodig zijn om kwalitatieve code te schrijven. Als je dan een keer een kritiek stukje code dient te schrijven, dan kun je dat niet, omdat je nooit de kans hebt gekregen om het te leren.”

"WE HEBBEN TIJD NODIG OM FOUTEN TE MAKEN EN DAARUIT TE LEREN"

Zelfs bij bedrijven die het belang van kwalitatieve code inzien, zit die korte termijn focus nog diep ingebakken. Subramaniam geeft een voorbeeld van een bedrijf waar hij les ging geven over ‘test-driven development’. “De CTO zei me: ‘Het is geweldig wat je doet, maar ik heb een tijdlijn nodig. Vertel me hoe lang mijn ontwikkelaars nodig hebben om er goed in te worden.’ Ik moest hem zeggen dat het een jaar, misschien twee jaar zou duren voor zijn ontwikkelaars productief zouden worden. Mijn antwoord maakte hem zichtbaar overstuur. Hij dacht dat zijn ontwikkelaars na een dag geautomatiseerde tests zouden schrijven. Maar we hebben tijd nodig om fouten te maken en daaruit te leren. Het is net zoals leren fietsen. Je leert pas fietsen door te fietsen. Je valt, je kneust je knieën en dat hoort er allemaal bij. Ik ben bezorgd dat we niet meer de tijd nemen om vaardigheden te leren om kwaliteit af te leveren"

Over agility

En zo komen we bij Subramaniams stokpaardje: agility. “Agility is voor mij code in hoge kwaliteit en code met hoge snelheid kunnen ontwikkelen. Maar je kunt die snelheid pas halen wanneer je die snelheid nodig hebt en als je vertraagt wanneer je moet vertragen. Veel organisaties willen onmiddellijk de snelheid zonder te vertragen. En daardoor zijn ze nu vertraagd, omdat ze niet de mogelijkheid hebben om sneller te gaan.”