Van eerste scriptje naar webapp
Een veelvoorkomende misvatting over developers is dat ze zijn geboren met programmeerskills. Niets is minder waar. Uit een enquêteonderzoek van Stack Overflow blijkt dat maar liefst 90% van de 30,354 respondenten zichzelf heeft leren programmeren. Lukas Snoek, psycholoog en neurowetenschapper aan de Universiteit van Amsterdam, is daar een voorbeeld van. Tot 2 jaar terug wist hij nog niets van programmeren. Onlangs heeft hij zijn eerste webapplicatie gebouwd. Hoe pakte hij het aan?
Programmeermythes
‘Ik had allerlei vooroordelen over programmeren’, begint Lukas. ‘Ik dacht bijvoorbeeld dat je goed moest zijn in wiskunde en hele technische skills moest hebben. Door mijn werk in de psychologie zit ik niet aan de bètakant. Daarom dacht ik dat programmeren niets voor mij was.’ Al vrij snel kwam Lukas erachter dat dit niet aan de basis ligt om te beginnen met programmeren. ‘Natuurlijk helpt het als je een opleiding als Informatica doet of hebt gedaan. Maar het hoeft niet. Ik heb het zonder al die kennis in mijn vrije tijd geleerd. Met een goed idee, een beetje creativiteit en doorzettingsvermogen kom je heel ver.’
Een helder doel
Lukas werd over de streep getrokken om te leren programmeren door iets waar hij in de praktijk tegenaan liep. Lukas: ‘Als PhD doe ik psychologisch onderzoek naar de hersenen door middel van MRI-data. Die data wordt vertaald naar 2D-beelden. Die beelden bevatten niet alle data, maar zijn te zien als een samenvatting ervan. Het leek mij mooi om meer recht te doen aan de data door deze op een intuïtieve en gedetailleerde manier te visualiseren. Zo ontstond het idee voor een webapplicatie waarin je op een 3D-manier door het beeld van de hersenen kunt scrollen en dus meer inzicht krijgt in hoe de data eruitziet.’
Ook viel het Lukas op dat alle software die ze voor MRI-data gebruiken, lokaal geïnstalleerd is. ‘Deze software werkt vaak alleen op Linux of Mac, niet op Windows. Dat vond ik omslachtig. Een browserbased-oplossing is veel efficiënter, want zo hoeven mensen niets meer op hun computer te installeren. Ze kunnen gewoon naar een website of app gaan om de MRI-data te bekijken.’
Het eerste scriptje
Zodra je de mythes over programmeren overboord hebt gegooid en je idee vorm heeft gekregen, dan is er maar één logische vervolgstap: beginnen. Lukas: ‘Als je wilt leren programmeren, moet je niet een boek gaan lezen. Dan moet je het gewoon lekker gaan doen. Ik weet nog heel goed dat ik mijn eerste Pythonscriptje schreef om uit te rekenen of een cijfer oneven of even was. Dat script besloeg 20 regels, dus ik begon echt met nul kennis. Vooral niet bang zijn om te denken dat het niet goed genoeg is, of dat het altijd beter kan. Want dat is ook zo. Je moet gewoon ergens beginnen voordat je weet hoe het efficiënter kan.’
Bovendien hoef je dankzij de vele online tools niet van alles iets af te weten. ‘Zo heb ik naast Python ook JavaScript nodig gehad om mijn applicatie web-based te maken. Maar in korte tijd kon ik er niet nog een tweede taal bij leren. Gelukkig kwam ik via via achter het bestaan van Plotly Dash. Dat is een framework dat Pythoncode omzet in JavaScript. Zo kon ik lekker blijven programmeren in iets wat ik kende, en toch een webapp maken zonder een regel JavaScript te hoeven schrijven.’
Programmeren is de helft van de tijd goed zoeken
‘Ik heb mezelf leren programmeren door verschillende gratis online courses te doorlopen, blogartikelen te lezen en YouTube-filmpjes te kijken. Ook heb ik gemerkt dat mensen graag willen helpen. Mensen uit je omgeving die iets meer van het onderwerp afweten, maar ook via allerlei forums. Dat werkt ontnuchterend, te beseffen dat er verschillende manier zijn om jezelf te leren programmeren.’
Wanneer je programmeert, kom je geheid termen tegen die je nog niet kent. Lukas: ‘Als je ergens weinig kennis van hebt, weet je ook niet zo goed hoe je moet zoeken. Daar liep ik in het begin erg tegenaan. Je moet vooral creatief zijn in het zoeken naar antwoorden en leren de juiste vragen te stellen om je probleem op te lossen. Het helpt mij altijd om te bedenken dat ik vast niet de enige ben met een bepaald vraagstuk. Die heeft iemand anders echt wel een keer gehad. Grote kans dat het dus eigenlijk ook al voor je is opgelost. Je moet het alleen vinden. Ik zoek vaak raad op community’s als Stack Overflow, waar miljoenen developers hun kennis delen. Daarnaast vind je op GitHub veel opensourcesoftware. Het wiel hoeft echt niet voor alles opnieuw te worden uitgevonden.’
Blijven aanklooien
‘Wat ik in het begin heel erg ervaarde met programmeren, is dat het een hele tijd niet werkt. Je hebt een error, die los je op. Dan heb je nog een error. Je moet door die leercurve heen zien te komen. Blijf aanklooien, zoeken, het van verschillende kanten proberen op te lossen.’ Ook raadt Lukas aan om je project in stukken op te delen. ‘Ga niet meteen proberen de beste app te bouwen. Probeer een minimaal voorbeeld werkend te krijgen en ga dat steeds complexer maken. Het werkt motiverend wanneer je een stukje van de puzzel hebt opgelost en je je weer in een ander gedeelte vast kunt bijten.’
Timemanagement is ook iets om niet over het hoofd te zien. Lukas: ‘Ik bouwde de app als hobbyproject, naast mijn fulltime baan. Ik pakte dan ook vooral de avonduren en het weekend om eraan te werken. Ik vind het erg leuk, dus ik heb de neiging om me erin te verliezen. Je bent lekker bezig, leert nieuwe dingen. Dan vliegt de tijd. Af en toe op de rem trappen is noodzakelijk. Even iets anders doen en achter dat scherm vandaan komen.’
Verplaatsen van local install naar een VPS
Dan is daar je eigen creatie. Lukas: ‘Ik heb iets gebouwd wat ik aan iedereen wil laten zien. Maar het stond vooralsnog op mijn laptop, die ik ook weleens wil uitzetten en dichtklappen. Om er echt een webapp van te maken die dag en nacht draait en beschikbaar is via een URL, heb ik mijn applicatie naar een VPS van TransIP overgezet en gekozen voor het besturingssysteem Ubuntu 16.04. Iets draaiende krijgen op een server had ik ook nog nooit gedaan, dus het was weer een hele nieuwe ervaring. Maar de implementatie verliep vrij soepel. Vervolgens kon ik ook de ultieme test uitvoeren of de app behalve lokaal ook online echt werkt.’
Vrijheid
‘Het was echt kicken om voor het eerst via de browser naar de app met al die MRI-data te gaan en aan iedereen te laten zien waar ik al die tijd aan had zitten knutselen. Je bent zoveel flexibeler wanneer je een beetje kunt programmeren. Ja, het proces is weleens frustrerend. Maar het is uiteindelijk erg belonend. Je bouwt namelijk iets, een product dat van jou is. Jij hebt het in elkaar gezet. Niet fysiek, maar wel een stuk software waarmee je nu zelf dingen kunt implementeren en analyseren. Dat biedt heel veel vrijheid.’
Is jouw project ready for liftoff?
Bedankt voor het toelichten!