S02·013Robert van Loghem en Jamie Craane over Mobile Development
Robert en Jamie zijn ervaren Mobile Developers die aan veel gebruikte mobile applicaties hebben gewerkt zoals de NS reisplanner en Eneco
Robert en Jamie zijn ervaren Mobile Developers die aan veel gebruikte mobile applicaties hebben gewerkt zoals de NS reisplanner en Eneco
- ▸Wat Kotlin Multiplatform inhoudt voor mobiel
- ▸Hoe je domeinkennis bouwt door langdurig aan een project te werken
- ▸Wat snelle feedback loops bijdragen aan betere software
- ▸Hoe je gebruikersfeedback centraal stelt in development
- ▸Waarom je in gereedschap en tools moet investeren
Transcript
Nou, welkom allemaal weer bij een nieuwe aflevering van CodeKlets.
We zitten alweer in aflevering 13, Lucky 13, en dit keer in real life.
Dat is toch wel bijzonder en vandaag ook bij Southwest Test Services in Rotterdam.
En ik ben vandaag jullie host Kishen, maar gelukkig hoef ik deze aflevering niet alleen
te doen.
Ik heb twee hele leuke gasten uitgenodigd, Robert van Lochem en Jamie Krane, de amazing
duo in mobile development.
Maar wel op anderhalve meter afstand van elkaar.
Ja, ja, ja, zeker absoluut.
Ja, dat moet niet te zeggen inderdaad, we zijn wel heel voorzichtig in deze ruimte.
Precies, precies.
Ja, je weet maar nooit.
Dus we hebben al in Niels nog niet de corona-app gecheckt, hè?
Nee, dat hebben we niet gedaan.
Nee, nee.
Nee, goed geluk heb ik ook niet zo'n scannen.
Dus wat dat betreft vertrouw ik jullie wel.
Wij jullie ook.
Ja, oké, mooi, mooi, mooi.
Ja, zoals je hoort, ja, ik ben helaas vandaag in mijn uppie.
Was de bedoeling dat ik met Bernard samen zou gaan opnemen voor CodeKlets.
Maar ja, helaas, hij vertelde me gisteren dat hij een niet zo'n mooie stem heeft
op dit moment.
Dus helaas, ja, dat zou niet ten goede zijn van de opname.
Dus doe ik het vandaag even alleen.
En ja, ik ben natuurlijk hartstikke blij dat Robert en Jamie vandaag ons gaan verblijden
met het onderwerp mobile development.
Ik zal Robert even kort even aankondigen.
Nou, Robert van Lochem, die programmeert al sinds zijn dertiende in Turbo Pascal.
Ik hoop dat hij daar iets meer over mag vertellen, want ik ben het allemaal weer
begrepen. Pointers en dat soort dingen en vroeger mouse drivers gemaakt en zo voor de pc.
Oh, nice. Nou, toch wel nieuwsgierig, maar goed, dat komen we straks op terug.
En na tien jaar backend ontwikkeling in Java en wat Scarlet hebben gedaan, is hij in 2010 gaan
beginnen met ontwikkeling in Objective-C, IOS apps voor NS bouwen en een klein beetje ProRail.
Ja, want dat hoort bij elkaar, toch? Of ook weer niet, he?
Ja, een beetje logistiek. Logistiek, precies, ja.
En nu zit hij voornamelijk in Kotlin en Swift in de front-end en ook in de backend.
En ook in de backend en ook nog steeds een beetje Java.
Ondertussen naast NS en ProRail ook Eneco en ANWB.
Dus het zijn vooral de grote, bekende Nederlandse mooie merken waar we gewoon
hele coole dingen voor doen. Nice.
Ja, daar gaan we vast wel meer over willen.
Daar willen we echt van alles over weten.
Dus er komen vast wel wat vragen richting jullie daarover.
Even kijken. Nou, en we hebben ook nog een tweede gast, natuurlijk,
wat ik al zei, Jamie Kranen.
En nou is het altijd bij mij de vraag, spreek ik het nou crane uit
of is het nou kranen? Het is kranen.
Je spreekt het goed uit. Oké.
Maar je bent eigenlijk een producer in disguise, he?
Ja, klopt.
Ik heb in het verleden heel veel dance music gemaakt.
Helaas ontbreekt me de tijd tegenwoordig aan,
maar het is nog steeds een hobby van mij.
Ja, cool, want volgens mij is dan jouw artiestennaam ook crane.
Maar dan Jamie Crane dan?
Ja, klopt, klopt.
Dus dat is mij altijd blijven hangen.
Ook in de tijd dat we samenwerken.
We hebben in het verleden ook heel veel LP's op plaat uitgebracht.
Die waarvan een aantal je nog op YouTube kan vinden.
Dus dat is wel super super gaaf. Super gaaf.
Ja, maar goed, ja, Jamie heeft inderdaad ook nog een andere hobby.
Dat is een full stack software ontwikkelaar
met een passie voor Kotlin en Kotlin Multiplatform.
En hij heeft onder andere aan de wieg gestaan bij de NS
rondom de reisplanner Android app en de Kotlin Multiplatform app van Enneco.
Dus ja, wat Robert zegt, genoeg interessante, leuke bedrijven
waar jullie gewerkt hebben.
En we zijn natuurlijk super nieuwsgierig naar jullie ervaring.
Ja, het leuke is dat we eigenlijk al die dingen die Robert ook heeft gezegd,
dat we dat samen hebben gedaan.
Al acht jaar lang.
Dus we werken al acht jaar lang in iOS en Android developers samen en back-end natuurlijk.
En back-end, ja, volgens mij.
Ja, dat is ook precies waar.
Ja, dat is ook de reden waarom ik jullie de amazing duo in mobile
development heb genoemd, want dat viel me een beetje op in jullie.
Ja, op LinkedIn te kijken van goh, hey, die zitten toch wel vaak samen.
Dus dat is wel leuk, hè?
Maar we wonen niet samen. Nee, dat niet.
Nee, zo ver is het nog niet.
Nog. Oeh, nog niet.
Ja, dit kan nog komen, natuurlijk.
Oké, nou goed, vlucht naar de volgende VR-plak, dat is goed, ja.
Nou ja, zoals jullie, ja, misschien ook wij de vorige afleveringen wel schoot hebben, is
ja, we zijn altijd nieuwsgierig naar onze gasten en de eerste ervaringen
met de computer of coding in general.
Dus laten we eens even beginnen bij Jamie misschien.
Wat was jouw eerste programmeer ervaring?
En kun je daar iets meer over vertellen?
Ja, daar kan ik zeker wel wat meer over vertellen.
Dat begon eigenlijk al op jonge leeftijd.
Ja, de jeugd tegenwoordig groeit op met mobiele telefoons en allerlei digitale apparaten.
Dat was toen totaal nog niet.
Dus mijn eerste pc ervaring, zo gezegd, was toen ik een jaar of 12 was.
We hadden toen een pc thuis met basic erop.
En dat was ook mijn eerste programmeer ervaring.
En het eerste wat je doet is text adventures gaan maken van ga naar links en wat zie je dan?
En dan koop je boeken en dan ga je games maken door die boeken die code uit die boeken te schrijven.
En op een gegeven moment leer je en leer je.
En dan vind je dat toch heel leuk om te doen.
En zo is dat een beetje ontstaan en dat is er altijd ingebleven.
En vanuit die hoek ben ik er ook ingerold, zeg maar.
Oké, dus dat was eigenlijk game development, als ik het goed begrijp.
Ja, in het begin echt game development en daarna.
Ja, dan werd het serieuzer.
Opleiding gedaan natuurlijk aan de HTS in Den Bosch toen nog.
Ja, en zo is dat ontstaan.
Maar echt op jonge leeftijd al mee bezig geweest.
Ja, en kan je nog iets herinneren, weet je, gewoon een heel belangrijk leermoment vanuit jou.
Weet je altijd experimenteren met programmeren en coderen?
Wat je misschien nu nog steeds in je DNA, zeg maar, zit.
Ja, goede vraag.
Het is uiteindelijk altijd een beetje puzzelen coderen.
Je maakt iets, maar je loopt toch soms wel eens tegen problemen aan,
waarbij je oplossingen moet zoeken in creatieve hoeken.
En dat was toen al en dat is nog steeds.
En dat vind ik het leuke eraan.
Echt een uitdaging en uiteindelijk weer voldoening.
Als je datgene hebt gemaakt, wat je voor ogen had, dat het ook echt zo werkt.
En zeker nu als miljoenen mensen van je product gebruikmaken.
Dat is super gaaf.
Ja, en ja, misschien zei je het in het begin ook al,
maar even voor mij welke ontwikkeltaal was dat ook weer waar je het over had net?
Vroeger bedoel je? Ja, in Basic.
In Basic was het, oh ja.
Pascal, wat Robert nu ook heeft gedaan.
Een Delphi visual designer had je destijds om Windows applicaties te maken,
maar daar is het een beetje mee begonnen.
Ja, ik kan me ook nog herinneren dat ik ook, ja,
maar dat was dan meer op school.
We waren ook een game aan het bouwen.
Dat was een soort van, hoe heet dat nou?
Space Invaders.
Ja, dat je dan objecten moest kapot schieten en zo.
Leuk. Ja, dat was wel heel bijzonder.
Dat was een hele bijzondere ervaring.
Games zijn natuurlijk heel erg tastbaar.
Dat is veelal de eerste dingen waar je mee in aanraking komt.
Je ziet iets op een scherm beschijnen.
En dat, ja, dat is leuk.
Ja, precies.
Wat mij nu even te binnen schiet, is iets wat ik dan van geleerd heb,
is dat, ja, noem het maar even object georienteerd programmeren,
maar in ieder geval met objecten omgaan.
Dat je een object hebt, zoals inderdaad zo'n alien die je moet raken en die dan
attributen heeft en dan weet je wel wat die dan kan en wat die niet kan.
Dat je daar dan encapsulatie omheen, weet je wel, maakt en dat soort dingen.
En in het begin deed je dat misschien onbewust.
En uiteindelijk leer je bewust dat soort dingen.
Dus dan zie je heel veel dingen zijn herkenbaar.
Nou, jullie moeten er eigenlijk bij zitten.
En dan ben ik wel blij dat ik nu in real life aan het opnemen ben.
Maar Robert, die begint nu een dikke feestpalm.
Ja, precies zo.
Maar object georienteerd programmeren.
Volgens mij, ik was vroeger altijd bezig met procedurale, de ene functie,
de andere functie en globale dingen en zo.
Vroeger was het wel heel erg, want mijn pa en ma hadden nooit zoveel geld.
Dus wij hadden geen pc.
Mijn oom, daarentegen, was hoofd van de IT-afdeling
van een middelbare school.
Dus die had allemaal computers thuis staan.
Dus ik begon inderdaad gewoon, zeg maar, ieder weekend daar hem toe te gaan
en dan gewoon lekker GW Basic spelletjes spelen.
En op een gegeven moment dacht ik al, zeg maar,
het lijkt me wel leuk om die dingetjes een beetje aan elkaar te knopen.
Dus een soort menuetje gemaakt en zo. Nou, en toen begon het.
En toen dacht ik van, nou, het is wel heel stoer om dat soort dingen te maken.
En ik weet nog wel dat we op een gegeven moment hadden we een beetje geld gespaard,
Pama, en had ik bij een ander vriendje,
had ik een spelletje gespeeld, Scorched Earth.
Ik weet niet of jullie dat kennen.
Dat was echt, dat was, zeg maar, een soort landschap.
En er stonden allemaal verschillende tankjes op en iedere speler had een eigen tankje.
En dan kon je, zeg maar, elkaar, het is Worms, zeg maar, maar dan een tankje.
Dat is het leukste, dat was de Nuke natuurlijk.
Precies, de funky Nuke en dat soort dingen.
Maar dat was met een VGA scherm.
Maar wij hadden geen VGA, wij hadden CGA, een CGA scherm.
Dus ik wilde dat spel spelen, dus dat heb ik gedaan.
Ik heb dat spel gewoon nagemaakt in Turbo Pascal.
En daar was ik super trots op, dat ik inderdaad een funky bomb kon maken
en dat, zeg maar, met een 3D-landschap kon renderen en zo.
En dat was echt super cool om te doen.
En het tof is gewoon dat je gewoon dat samenspeelt met andere mensen
en uitprobeert.
En ook, ik had een vriendje met wie ik dat programmeerde en zo.
En toen dacht ik van, dit is gewoon zo gaaf om te doen.
Je kan er echt uren plezier mee hebben.
Je kan precies maken hoe je het zelf wil allemaal.
Daar is het eigenlijk allemaal mee begonnen.
Ja, oh, tof.
Maar was dat dan ook je eerste ervaring rondom programmeren?
Ja, ja.
Oh, oké, cool.
Dan ben je wel gelijk in het diepe gegooid dan, hè?
Ja, ik vind het gewoon prachtig, zeg maar, als je iets wil,
om daar gewoon in het diepe te duiken
en dat gewoon helemaal uit te zoeken,
om te zorgen dat het gewoon, zeg maar, werkelijkheid wordt
en aan andere mensen te laten zien en te ervaren.
En ja, het is gewoon prachtig om te doen.
Dat vind ik het mooie aan programmeren.
Je maakt er van niets, maak je iets en je laat het zien.
Je ziet gewoon de reacties op het gezicht van mensen.
En je krijgt de feedback erop en je past wat dingetjes aan.
Dat blijft gewoon altijd prachtig, zeg maar.
En ik doe het ook al vanaf mijn dertiende ongeveer.
Dat is al behoorlijk lang helaas.
Dus ik voel me echt wel vet oud.
Maar goed, het is gewoon prachtig om dat te doen.
Het blijft toch een bepaalde manier van voldoening geven.
Steeds iets maken wat tastbaar is en wat anderen iets mee kunnen doen.
Ja, dus ja, dat is op zich wel interessant,
want ik heb ook wel eens gesprekken met developers over
van wat vind je nou belangrijker, koden of het doel om te koden?
Hoe zouden jullie het beantwoorden?
Volgens mij hadden we een tijdje geleden
met het huidige team waar we nu zitten, hadden we daar een natere gesprek over.
En waar ik toen aan dacht is van kijk,
zeg maar iets maken voor andere mensen is het mooiste.
En vaak is het zo dat als je dat niet op tijd doet,
want er is maar een beperkte hoeveel het geld en tijd beschikbaar,
dan houdt het op een gegeven moment op.
Alleen, je moet er geen rotzootje van maken,
want anders schiet je zeg maar in je eigen voet.
Anders kan je nooit zeg maar dat langdurig voortzetten.
Dus het is altijd een balans tussen zeg maar die kwaliteit,
tijd en geld, het is een beetje standaard, ouderwetse driehoek en zo.
Maar je moet het altijd in ogen schouw nemen van wat is haalbaar
en hoe ver kan ik gaan in het ene of het andere.
En nogmaals, ik heb echt vroeger toen ik net begon met programmeren,
ik weet nog wel, ik was aan een of andere programmetje aan het werken,
het kies-en-klik menu.
Daar kon ik allemaal verschillende DOS programma's mee opstarten.
Ik had er zo'n puinzooi van gemaakt
dat ik over een gegeven moment niet meer mijn eigen code snapte.
En toen dacht ik echt zo, oké, dit moet gewoon anders.
Dus weet je, je leert gewoon wel van, oké, tot hoe ver kan je gaan?
Wanneer snap ik het en wanneer moet ik het aanpassen en zo.
Maar je wilt toch altijd wel een bepaalde voortgang
wil je erin hebben.
Ja, ja, klopt.
Dat is ook een beetje ervaring natuurlijk, he.
En op een gegeven moment kom je op een punt dat dat wellicht altijd zo is.
En dan is het tijd om wat dingen anders te doen.
Ja, klopt.
Elke context is net even anders, he.
Dus de ene die heeft inderdaad een oneindig budget om toffe dingen te doen in code.
De andere natuurlijk niet.
En dan, ja, dan ga je keuzes maken.
Klopt.
Ja, de ene is dan misschien wat rigoureuzer dan de ander.
En ja, op zich, in jullie antwoorden hoorde ik wel toch,
als ik het goed heb gehoord, dat het meeste genieten is de reactie van die gebruiker.
Klopt, klopt.
Dat geeft ze echt de voldoening.
Ja, ja, oké.
En ik denk, zeg maar, toen wij allebei voor de NS werkten,
ik ging dagelijks met de trein naar Utrecht Centraal, want daar zit NS hoofdkantoor.
Het is zo gaaf om de NS reisplanner in handen te zien van mensen die
vervolgens een reis plannen of bijvoorbeeld een treinrader bekijken of de delays zien ofzo.
Denk je van, oh, daar heb ik al gewerkt, weet je, dat is mijn scherm.
Daar heb ik, oh, en ik weet waar de bugs zitten of ik weet waar dit nog zit.
Oh, dat weet ik ook nog niet helemaal lekker.
Maar ze komen er toch wel uit en je ziet gewoon dat ze het gebruiken en snel opstarten en weer weg gaan.
En dat vind ik ook het mooie van mobiele ontwikkeling, want het is, zeg maar,
je kan het aan iedereen uitleggen.
Ik kan het aan, ik bedoel, niet alleen mijn moeder en vader,
zeg maar, op verjaardagsfeestjes die we de laatste tijd niet zo heel veel mee hebben onder vanwege corona enzo.
Maar je kan altijd heel makkelijk binnen drie seconden kan je uitleggen ongeveer wat je doet.
Ik maak apps voor iOS en ik maak ook de achterkant een beetje en zeg ze,
oh, wat heb je nou gemaakt nou? Heb je de reispunten? Ja, die heb ik wel.
Ik bedoel, oh, dat is graag.
Nee, dat is super cool om gewoon, zeg maar, dat te doen.
Dat is ook heel erg tastbaar.
Iedereen heeft een mobiele telefoon bij tegenwoordig, dus iedereen weet waar je het over hebt.
Kunnen jullie misschien ook iets vertellen over jullie huidige projecten,
want jullie zijn de Amazing Duo op dit moment.
Ja, welk project zitten jullie nu en kunnen jullie iets meer over vertellen?
Ja, zeker.
We zitten nu bij de ANWB allebei en we werken aan de onderweg app.
De onderweg app is natuurlijk een van de vlaggenschip apps van de ANWB.
En wat we concreet dit jaar hebben gedaan is het tanken en laden.
Waar zijn laadpalen nou beschikbaar, waar zijn tankstations beschikbaar?
Om dat op een betere manier inzichtelijk te maken in de app.
En ook dat je in realtime beschikbaarheid krijgt te zien van waar is nou een
specifieke laadpal, is die nou beschikbaar of niet.
Dus als je je reis gaat voortzetten met je elektrische auto, dan kun je ook zien
is die laadpal beschikbaar of niet.
Dus daar zijn we voornamelijk mee bezig geweest.
Plus we werken nog aan hele nieuwe, coole features.
Daar mogen we helaas nu nog niet heel veel over zeggen, maar dat gaat er wel
aankomen.
Spannend, joh. En hoe lang zitten jullie er al, Robert?
We zitten er sinds februari ongeveer.
Dus inderdaad wat Jamie zegt, die laadpalen, het is echt zo dat op het moment
dat je bijvoorbeeld een stekker in een stekker ergens insteekt, dat je gewoon
echt in de app, gewoon realtime, zeg maar het bolletje van groen naar rood
ziet veranderen, gewoon zeg maar zo realtime.
En we hebben daarvan niet alleen de iOS en Android voorkant gemaakt, maar ook
de backend. Dus bijvoorbeeld een polling mechanisme die netjes gewoon iedere
twintig seconde poldt. Sorry, het zijn geen websockets.
Dat zou nog mooier zijn, maar goed, dat komt nog wel.
Maar het toffe is, we krijgen wel zeg maar netjes via Patch Request via een
derde partij, ik heb er niks aan gegeven, zeg maar welke palen gewoon
onbeschikbaar zijn of ineens in gebruiken of iets dergelijks.
Dus het is best wel best wel realtime.
Draait allemaal op AWS en Kubernetes omgeving.
Dus daar houden wij ons eigenlijk allemaal mee bezig.
Anderen wat we dit jaar nog gereleased hebben is zeg maar dat je je
Wegenwacht pechmeldingen kan inschieten.
Dus op het moment dat jij aan de kant van de weg staat en je hebt pech, dan
kan je netjes via de onderwegheb, kan je aangeven wat er aan de hand is.
We gebruiken natuurlijk netjes gps locatie.
Als je ingelogd bent, dan weten we precies wie jij bent.
En zo wordt er uiteindelijk een Wegenwacht autootje naar je toegestuurd.
Echt waar joh, dus zover gaat het, dat jullie echt, noemen we het maar even
de connectie van de klant, dus de ANWB en de klanten van ANWB, zeg maar, kunnen maken.
Oké, dat is wel interessant zeg.
En ja, zou je ook iets kunnen vertellen over hoe groot jullie team nu op
de moment is?
Ja ja, ik schat dat we met 15 personen nu in het team zitten van de
onderweg app.
Er zitten een stuk of vier Android developers, waarvan een aantal full stack.
Vier iOS developers als ik het goed heb, twee dedicated back-end developers.
We hebben nog een Scrum Master, een design rol.
Dus het is een redelijk groot team.
Er zit best wel veel functionaliteit in de onderweg app, bijvoorbeeld ook een
parkeren stuk, waarmee je kan zien welke parkeerplaatsen beschikbaar zijn en dat
je ook echt een plek kan reserveren.
Dus verschillende des werk aan verschillende onderdelen in de app, zeg maar.
Oké, en hoe bevalt dat?
Want er zijn toch twee verschillende technologieën.
Hoe valt dat samen en hoe is de ervaring dan tussen de developers?
Qua iOS en Android, ja, op zich gaat dat goed, want we hebben redelijk veel
contact met elkaar, ook als een team, gezamenlijk Scrum team, gezamenlijke
stand-up, dus we weten redelijk goed van elkaar waar we allemaal mee bezig zijn.
Oké.
Het feit blijft natuurlijk, omdat je Android en iOS native doet, dat je twee
keer dezelfde dingen aan het bouwen bent.
Oké, ja, ja, dat was ook een beetje waar ik nieuwsgierig naar was, van hoe
jullie daar dan mee omgaan.
En zijn het dan ook twee echt aparte teams of doe jullie dat samen?
Nee, het is één team eigenlijk.
Wat we proberen is dat bijvoorbeeld één platform iets vooruitwerkt, de
eerste implementatie maakt.
Daarmee loop je al tegen wat problemen op aan en moet je ze oplossen en dat de
tweede team, of de tweede team, zeg maar dat andere platform er een beetje
schuin achterloopt, zodat je niet nog eens een keer dezelfde problemen
tegelijkertijd hoeft op te lossen.
En daarmee behaal je best wel wat winst eigenlijk.
Daarnaast proberen we in mindere, meerdere maten proberen ook zeg maar
bepaalde manieren in de code, zeg maar qua architectuur proberen we ook op de
zelfde manier op te lossen door dezelfde patronen te gebruiken ongeveer.
Bijvoorbeeld Android gebruikt Compose, in iOS gebruiken we SwiftUI en ViewModels
en zo. Dus het ziet er allemaal wel een beetje ongeveer hetzelfde uit.
En ik denk dat dat juist goed is, want op zich misschien is de
interactie net een klein beetje anders en zijn de UI componenten net een
beetje anders. Maar de business logica is hetzelfde, je backends zijn hetzelfde.
Het hoort eigenlijk op dezelfde manier te reageren, vanuit functioneel gezien
eigenlijk. Dus ja, daar zit best wel wat kruisbestuiving tussen.
Klopt. En uiteindelijk, functionaliteit moet in beide apps terechtkomen.
Dus je hebt ook continu met elkaar te maken.
Ja, nee, oké. Dus als ik het goed heb begrepen, jullie team samenstelling
is wel zodanig ingericht dat of teams, want ik hoorde net twee teams.
Om m'n weg heb ik dus één team, maar wel dedicated Android en iOS developers,
maar wel in één gezamenlijk.
Oké, dus dus je zei dat er een team is, dat is wel gaaf.
En zien jullie dan ook dat Android developers ook een beetje iOS
programmeren, andersom?
Ja, en vice versa. Dus bijvoorbeeld, we hebben een ander teamlid, Sam,
hebben we erin zitten, die af en toe gewoon Android bijspringt.
Om bepaalde dingen gewoon op te pakken of zo, en dat kan ook gewoon prima.
En ja, datzelfde doen we ook bijvoorbeeld, zeg maar,
een aantal iOS'ers kan ook gewoon prima kort in.
Dus wij kunnen ook gewoon prima in die code kijken of dingetjes aanpassen.
Of ja, dat is helemaal geen probleem.
Ja, dat zou ik ook misschien strakjes ook hebben.
Nog een onderwerp staan, daar zou ik ook willen inzoomen.
Ook voor degenen die daar misschien nog niet echt mee bezig zijn.
We zien even kort introduceren.
Oké, cool. En ja, en hoe gaat het
bij de ANWB rondom remote werken en zo?
Werken jullie over het algemeen remote of zit jullie nogal regelmatig op kantoor?
Nee, we werken grotendeels remote.
Sterker nog, toen wij voor de ANWB zijn begonnen 1 februari,
zijn we niet één keer naar kantoor geweest en hebben we alles
eigenlijk remote gedaan.
Tot aan een maandje geleden, waar we hebben besloten om toch één keer
in de twee weken naar kantoor te komen
of met z'n allen bij elkaar te zitten, wel op veilige afstand uiteraard.
Maar grotendeels wordt alles remote gedaan.
Dus development is daar ook op ingericht met de juiste communicatiemiddelen.
Iedereen weet elkaar te vinden.
Proactief is ook belangrijk, denk ik.
Dagelijks doen we een informele coffee stand-up zodat we elkaar
toch allemaal zien en een beetje informeel
met elkaar over dingen kunnen praten.
Maar ja, grotendeels is het remote.
Ja, waar ik ook wel nieuwsgierig naar ben is de development manier van werken.
Kunnen jullie daar iets over vertellen?
Tegenwoordig hebben we natuurlijk allerlei way of workings in teams.
Hebben jullie misschien er eentje,
misschien ook wel willen delen met de rest van de wereld?
Ja, zeker, zeker.
De manier van werken was redelijk vast toen we bij ANWB kwamen.
Ze werken op een scrub manier met twee wekelijkse sprints,
waarbij er aan het begin van de sprint bepaald wordt
wat er aan werk verzet gaat worden in de sprint.
Op dit moment neigt het weer een beetje meer naar kanban,
omdat vooraf in de sprint twee weken is best wel lang, vind ik,
om te bepalen wat ga je nou in twee weken doen.
Dus het idee is ontstaan om vooraf te kijken,
oké, wie pakt welke story op,
maar we gaan geen extra werk in de sprint zetten.
Is die story klaar?
Dan gaan we kijken wat heeft dan de hoogste prioriteit en pakken we dat op.
Dus dat is net iets meer kanban dan echt,
het zijn nog wel twee wekelijkse sprints,
maar iets flexibeler.
Zitten ze bij ANWB echt op de deadlines en dat soort dingen,
of valt het wel mee?
Er ligt eraan wat voor functionaliteit het is.
Als je zorgt dat je niet iedere keer dezelfde demo laat zien,
zie ik je goed.
Oh nice, ja, dat is wel een hele goede graadmetering.
How to kill your software project, show the same demo twice.
Nee, inderdaad, dat wil je zeker niet.
Oké, zijn er ook product developers in the teams aanwezig,
of zijn jullie helemaal autonoom?
We zijn redelijk autonoom,
maar er zit wel een product owner op die bepaalt uiteindelijk wat er
aan functionaliteit inkomt en wat voor werk er gedaan moet worden,
maar wel veel input vanuit het team zelf ook.
Ja, zeker.
En het andere gave is wel dat we merken dat de developers,
een aantal, je pakt een lead voor een bepaald onderwerp
en je spreekt met de business, dus de product owner en de lead,
spreekt met de business en dan weet je heel goed, zeg maar,
wat wil de business, waar gaan we naartoe,
wat is de visie allemaal, maar ook nog eens een keer,
hoe zit het technisch in elkaar, hoe moeilijk is iets,
wat is zeg maar een beetje de low hanging fruit ergens,
kunnen we creatieve oplossingen hebben en dat is best wel waardevol,
denk ik, wat we nu geïntroduceerd hebben bij de ANWB en wat wel goed werkt.
Dus en daarmee kan je best wel zeggen van nou, weet je,
dit is mogelijk of dit is heel erg lastig of en dan kan je heel snel
inschatten en heel snel stories maken en heel snel opleveren,
zeg maar, waar die business en die klant uiteindelijk,
zeg maar, behoefte aan heeft.
Ja, het voordeel daarvan is dat men ook een bepaalde manier
van verantwoordelijkheid gaat krijgen voor het werk wat gedaan wordt.
En ik denk dat dat heel belangrijk is om, als je iets oppakt van,
waarom doe ik nou iets en wat maakt die klant nou blij?
Ja, want het is niet alleen maar een story op de backlog,
maar het is, weet je, ik wil graag meer dat als iemand bijvoorbeeld pech
helpt, heeft, dat hij bijvoorbeeld, en hij is nog geen lid,
dat hij zich makkelijk kan aanmelden.
Weet je, dat is een nieuw lid voor de ANWB, super waardevol eigenlijk.
En als je dat gewoon kan pushen of als je die functietijd mogelijk maakt,
dat is natuurlijk super gaaf om dat op te gaan zetten eigenlijk.
Ja, ja, dus het keert weer terug waar we het in het begin over hadden,
weer die empathie voor die gebruiker.
Ja, dus dat moet er wel in zitten, denk ik,
ook voor degenen die dan ook die requirements gaat opstellen.
Ja, dat is wel tof dat jullie daar ook aandacht aan besteden,
want je hoort het ook wel eens anders.
Zeker, zeker.
Kunnen jullie ook iets meer vertellen over de, ja,
de stack die jullie nu gebruiken?
Natuurlijk is het iOS en Android, maar onderliggend,
van waar bouwen jullie in en welke tools,
of misschien ook wel frameworks gebruiken jullie?
Ja, als ik even voor Android praat,
vanuit mijn achtergrond bouwen we een native app natuurlijk.
Tools die wij gebruiken zijn Android Studio op dit moment,
voor backend IntelliJ.
Een architectuur die we in de Android app hanteren is echt een MVI,
MVVM-architectuur.
Maar ANWB heeft natuurlijk een app met een lange lifecycle
van jaren aan ontwikkeling, dus je ziet daar een verscheidenheid aan,
aan patterns in terugkomen.
En dat zal ook voorlopig zo blijven.
En dat is ook prima, omdat alles evolueert mee natuurlijk,
maar dat wil niet zeggen dat je al het oude meteen moet omschrijven,
elke keer naar iets nieuws, want als je dat gaat doen,
dan krijg je op een gegeven moment niks meer gedaan.
Dus daar is een stukje commonsense ook aanwezig.
Maar nieuwe dingen, allemaal volgens nieuwe patronen.
Alles in Kotlin ook.
En qua backend doen we veel met Spring Boot op het Kubernetes platform op AWS.
En welke database systemen gebruik je?
Het zijn verschillende.
De search, hebben we bijvoorbeeld Elastic Search voor,
voor bepaalde realtime systemen, DynamoDB.
Het ligt een beetje aan de use case en de functionaliteit.
Oh ja, ja, ja.


