Blog

Q&A met lead backend developer Rob Janssen

Altijd al willen weten wat een programmeur doet tijdens zijn/haar werk? Expert Rob legt het je haarfijn uit
Geschreven door
op
July 15, 2021

In de nieuwe webinarreeks: Ask The Expert, geven experts een kijkje in de wereld van developers en data analisten. Middels de Ask The Expert webinars krijgen onze studenten en andere geïnteresseerden een beter beeld van de werkzaamheden en doorgroeimogelijkheden binnen hun toekomstige vakgebied. De expert deelt niet alleen zijn/haar ervaringen, maar geeft tijdens de Q&A ook antwoord op de gestelde vragen van de deelnemende programmeurs en data analisten in wording. In deze blog delen we je de hoogtepunten uit de eerste Q&A webinar.

Wie is Rob Janssen?

Voor de eerste webinar uit de reeks was niemand minder dan de zeer ervaren programmeur Rob Janssen te gast. Om een beter beeld te krijgen over Rob, stelde hij zich eerst aan ons voor:  “Hoi ik ben Rob, word dit jaar 43 en werk nu iets meer dan een half jaar bij Wolfpack IT. Een hele coole club die IT projecten uitvoeren voor bedrijven die grote ambities hebben maar niet de ontwikkelcapaciteit. We bouwen niet alleen software maar zorgen ook voor consult en ontwerp. Er komen dus bedrijven naar ons toe die zich afvragen: ‘wat wij willen, kan dat überhaupt?’. Daarnaast bouwen we ook apps en webapplicaties. “

Waar werkte je voordat je aan de slag ging bij Wolfpack IT?

“Hiervoor heb ik gewerkt bij de bedrijven Atogear, Studyportals, Omines, Fancon en Logic technology. Het grootste gedeelte van mijn carrière, iets meer dan 10 jaar, werkte ik voor Studyportals. Dit bedrijf heb ik zien opgroeien van een start-up van ongeveer 10 man naar een 130 man tellende scale-up. Daar heb ik destijds trouwens ook mijn scrum master certificaat gekregen.”

Wat houdt lead back-end developer zijn in?

“De titel die ik momenteel heb is lead backend developer. Dit kunnen we opsplitsen in drie stukken. Lead, Backend en developer.” In de Q&A ging Rob dieper in op deze begrippen. “Als we het laatste stuk software engineer, in het Nederlands ingenieur, bekijken op Wikipedia dan zie je de volgende omschrijving: ‘Een ingenieur is een hooggeschoolde technicus die wetenschappelijke kennis gebruikt om problemen op te lossen.’ Het stuk problemen oplossen is het belangrijkste deel van de definitie. Dit is een hele goede omschrijving van wat je als lead backend developer doet. Als je met computers aan de gang gaat dan praat je al snel over programmeren.”

Kan je beschrijven hoe een gemiddelde dag er voor jou uitziet? En hoeveel uur per dag je gemiddeld achter je computer zit?

“Een werkdag duurt voor mij 8 uur. Ik zou zeggen dat ik 5 tot 6 uur van die tijd actief achter de computer zit, waarbij een deel van die tijd komt doordat ik momenteel via de computer met andere mensen moet praten. Er zijn ook dagen dat ik een beetje een spin in het web ben en niets anders aan het doen ben dan meetings houden en daardoor lang voor whiteboards sta. Zo’n sessie van whiteboarden kan makkelijk 1 tot soms wel 2 uur duren en sommige dagen zijn er alleen maar meetings achter elkaar. Andere dagen kan ik lekker is even programmeren en zit ik iets van 6 uur naar het scherm te kijken.”

Het advies wat Rob hierover geeft is: “Het belangrijkste is dat je doet waar je zelf comfortabel mee bent. Programmeren is een creatief beroep in de zin dat je steeds oplossingen moet bedenken. Af en toe heb je even tijd nodig om na te denken. Soms is juist de juiste plaats om dat te doen niet achter de computer. Ga dan even buiten wandelen en wellicht dat je met een oplossing komt waar je anders niet op gekomen zou zijn.”

Wat is het verschil tussen frontend en backend development?

“Laten we een auto als voorbeeld nemen. De onderstaande auto is een mooie Jaguar uit 1961.

Waarom heb ik deze auto als voorbeeld genomen? Nou ja, omdat je daar een mooie exploded view van hebt zoals in onderstaand afbeelding.

Zoals je kunt zien wordt een dergelijke auto niet in een keer gebouwd. Het bestaat uit meerdere onderdelen die los van elkaar in elkaar gezet worden. Zolang er goede afspraken zijn tussen de teams en de mensen die ieder onderdeel bouwen zou alles goed moeten passen. Ditzelfde principe geldt ook voor de software.

Als je in een auto zit zie je een dashboard. Het dashboard zelf zou je in software termen de frontend noemen. Deze wordt ontworpen door een user interface (UI) designer en het bouwen ervan wordt gedaan door de frontend developer. Dit is het deel wat de gebruiker van de software direct aanraakt en gebruikt om instructies te geven.

De backend bestaat dan in feite uit de motor, de versnellingsbak en al het overige wat de gebruiker niet direct aanraakt maar wat je als gebruiker wel nodig hebt om te kunnen rijden.”

In hoeverre kan je creativiteit toepassen in backend development of is dit meer iets voor een frontend developer?

“Goede vraag. Zelf ben ik altijd wel min of meer geïnteresseerd geweest in grafisch ontwerp. De creativiteit die je in backend kunt laten zien is door het bouwen van een heel elegant systeem, waar overal aan is gedacht. Verder betekent voor mij die creativiteit eigenlijk puzzels oplossen. En dat betekent niet gewoon je kop ergens tegenaan knallen totdat je eindelijk alles aan het werk krijgt. Het is het grote overzicht zien. Dus die creativiteit heb je in het oplossen van puzzels.”

Welke tips en tricks kun je geven aan de mensen die na hun frontend opleiding aan een backend opleiding gaan beginnen?

“Als je als backender wilt beginnen kun je je eerst richten op: hoe je met een API kan praten” Rob legde eerder al uit dat een API staat voor application programming interface, ofwel een verzameling definities op basis waarvan een computerprogramma kan communiceren met een ander programma of onderdeel. Rob vertelt verder: “Als je backender wil worden moet je in feite dus een beginnetje maken met je eigen API. Dat zou ik als eerste uitproberen. Dat is denk ik ook het meest nuttige om te leren. Begin dus met het maken van je eigen API! Dat klinkt veel moeilijker en groter dan dat het is, maar dat valt echt mee.”

Hoe kun je doorgroeien als beginnend backend developer?

"Oke, je hebt jouw opleiding afgerond en bent backend developer. Omdat je net bent begonnen ben je nog een junior developer. Dat wil zeggen dat je 0 tot 2 jaar ervaring hebt. Hoewel er geen sluitende definitie voor bestaat, wordt van een junior developer geacht dat je in ieder geval 1 taal goed kan beheersen. Je moet nog veel leren en je hebt nog begeleiding nodig. Je wordt op projecten gezet en daar heb je nog een beperkte invloed.

Van een medior developer wordt verwacht dat hij/zij genoeg ervaring heeft en zich alleen kan redden. Veelal heeft een medior 3 tot 5 jaar ervaring. De medior kan goed samenwerken met collega’s en beschikt over voldoende kennis. De invloed van een medior kan zich uitstrekken over het hele team.

Als senior heb je veel ervaring. Ze coachen andere collega’s, hebben een visie voor een project en zetten de pijlers uit. Er bestaat geen echte standaard voor wanneer iemand een lead of senior wordt genoemd. Bij sommige bedrijven ben je na zo’n 5 jaar al senior. Bij andere bedrijven zal je na 10 jaar nog steeds een medior zijn. Het is niet alleen een kwestie van kennis maar ook van verantwoordelijkheid. Er wordt van je verwacht dat je een project tot een goed einde kunt brengen, op tijd en binnen budget. Vaak fungeer je ook nog als brug tussen verschillende teams.”

Als senior ben je niet per definitie lead. Zeker als je aan meerdere projecten werkt is het prettig om niet bij ieder project lead te zijn. Sterker nog, het is vaak wel vol te houden dat je bij een project lead bent, maar bij de rest niet omdat het een hoop tijd in beslag neemt.

Hoe ziet de rolverdeling binnen een developers team eruit?

“Als je bij een bedrijf gaat werken ga je als het goed is niet alleen aan de slag. Je komt dan in een team terecht. De rollen van junior, medior en senior zijn hier vaak in een mix aanwezig. Naast backenders zal je waarschijnlijk ook frontenders, user interface (UI) en user experience (UX) developers aantreffen. Zoiets heet dan een multidisciplinair team. In het team zelf kan dan een developer zitten die bepaalt wat er gebouwd moet worden waar de klant om vraagt. Dat is een mogelijke invulling van lead. De lead heeft hier invloed op wat de rest van het team bouwt. Als junior wordt er dan van je gevraagd om een deel van het probleem zelfstandig op te lossen. Natuurlijk betekent dit niet dat je ideeën en suggesties niet welkom zijn. Maar de uiteindelijke verantwoordelijkheid ligt bij de lead.

Bij een groot bedrijf heb je meerdere teams en in die zin kan een lead developer bepalen wat die meerdere teams allemaal samen moeten bouwen. De lead van het team zelf heeft een stuk keuzevrijheid bij het bouwen, maar de lead van alle teams samen bepaalt in grote lijnen wat er moet gebeuren. Soms wordt zo een lead van meerdere teams ook wel software architect genoemd. Dat impliceert vaak dat deze persoon alleen dingen ontwerpt en niet zelf aan het programmeren is. Het ontwerpen gebeurt vaak op een hoog en abstract niveau.”

Hoe zorg je er als developer voor dat je aan de verwachtingen van een klant voldoet?

“Het is heel belangrijk om de situatie voor jezelf maar ook voor de klant heel helder te hebben. Als backend developer wordt er vaak van je verwacht dat je een goede en sluitende vertaling kan maken zodat je collega’s aan het werk kunnen. Goed kunnen tekenen is dus een grote plus en een leesbaar handschrift net zozeer. Tegelijkertijd met het tekenen begint het documenteren. Elke beslissing die je maakt moet je kunnen verantwoorden en uitleggen. Want iets waaraan je werkt binnen een project kan op het moment erg obvious lijken, maar binnen een jaar volstrekt onbegrijpelijk zijn geworden. De reden dat je dit als lead engineer documenteert, is omdat er soms foutjes in een ontwerp worden gemaakt. Door iets te documenteren weet je waar het verkeerd ging en kan je dat proberen op te lossen in plaats van dat je helemaal opnieuw zal moeten beginnen.”

Wat is het verschil tussen een website en een webapplicatie?

“Veel bedrijven verwijzen naar hun website. Maar vaak is dit een webapplicatie. Een webapplicatie is een stuk software dat van alles afhandelt: zoeken, sorteren en weergeven van informatie. Wat bekende voorbeelden van zulke webapplicaties zijn Bol.com, Funda en Marktplaats. Vaak bestaan deze webapplicaties uit meerdere delen die met elkaar samenwerken. Het systeem wat ervoor zorgt dat je kunt zoeken is iets anders dan het systeem dat bestellingen, voorraad of berichten afhandelt. Als je kijkt naar Bol.com zie je dat ze systemen hebben voor onder anderen: betalingen van consumenten, analytics, kortingen, promoties, productdata, voorraadbeheer, retouren, prijscontroles en de zoekmachine.”

Wat heb je nodig om een werkende webapplicatie te maken?

“Je moet gegevens ergens kunnen opslaan. Dit doe je bij webapplicaties vaak in een database. Er zijn veel voorkomende type databases. Een veel voorkomend type is een relationele database. Een voorbeeld daarvan is bijvoorbeeld MySQL. In zo een database zitten tabellen gevuld met informatie. Deze informatie wordt op een bepaalde manier met elkaar verbonden. De identiteit en informatie worden in een zogenaamd schema gezet. Je kunt deze gegevens ophalen door middel van een programmeertaal. Deze taal wordt structured query language genoemd. Afgekort als SQL. Het is zoals de naam eigenlijk al zegt een gestructureerde manier om vragen te stellen aan een database.

Hoe sla je gegevens op in een database?

Dit legt Rob uit aan de hand van het volgende vraag als voorbeeld:

Voorbeeld opslaan gegevens in een database

Hij vertelt: “Om deze gegevens op te kunnen slaan in een database moet je onderscheid kunnen maken in de verschillende soorten gegevens. De soorten gegevens noem je datatypes. Er zijn verschillende soorten datatypes, zoals een ‘string’, ‘data’ of ‘integer’. In een ‘string’ kun je een stuk tekst opslaan. Bij ‘data’ gaat het om een datum en bij ‘integer’ om een getal. Deze gegevens kun je sorteren en filteren”

Hoe zorg je ervoor dat een webapplicatie gevonden kan worden?

“Om een webapplicatie te kunnen draaien is er een server nodig. Een server is niets anders dan een computer die continu aanstaat en met internet verbonden is. Vaak staat deze server in een datacenter. Een server heeft een maximale capaciteit. Als dit limiet van een server wordt overschreden, wordt een webapplicatie slomer. Hierdoor kunnen bezoekers op een website de webpagina wegklikken, met als gevolg dat je omzet mis kan lopen. Op dit moment zal er dus automatisch een andere server bij moeten worden aangezet, dit wordt scaling genoemd.”

Hoe zorg je ervoor dat deze webapplicatie op verschillende apparaten werkt?

“Door een website ‘responsive’ te maken werkt deze optimaal op zowel een laptop, mobiel als tablet. Je kunt een webshop bijvoorbeeld ook als App op je telefoon hebben. Met een application programming interface (API), los je het probleem op waarbij je meerdere apparaten hebt die informatie moeten ophalen. Met API heb je één plek waar alle informatie staat opgeslagen.”

Werking van een API

Wat is het voordeel van het leren van de programmeertaal Python over PHP? En is het moeilijk om er een nieuwe programmeertaal bij te leren?

“Als je begint met een programmeertaal is het niet zozeer het belangrijkste dat je leert hoe de programmeertaal werkt. Het eerste Python script dat ze zal maken is ‘Hello World’, waarbij je in Python in feite gewoon een regeltje hebt: print(‘Hello, World!’), en dan hoppatee je hebt iets op het scherm.

Hello world in python

Of je dit in PHP of Python doet, maakt niet zoveel uit. Je hebt dus geen specifiek nadeel of voordeel van het leren van Python over PHP.”

Rob voegt nog wel een klein voordeel van Python toe: “Het interessante is dat Python een aantal ingebakken constructen heeft. Hier heeft Python eigenlijk een voordeel op, want als je dat in PHP wil doen krijg je minder elegante code. Minder elegante code is lastiger te lezen en moeilijker te testen. Als jij ‘n leesbare, goed gestructureerde code kan schrijven, dan kunnen je collega's er naar kijken en snappen ze wat er allemaal gebeurt. En die helderheid van expressie, om het zo maar even te noemen, die is bij Python iets beter.”

Over het leren van een nieuwe programmeertaal zegt Rob het volgende: “Elke taal die je erbij leert, maakt eigenlijk de volgende taal makkelijker. Constructen zoals: ‘als dit, dan dat’ zijn grotendeels hetzelfde. Daar zit de uitdaging niet in.”

Constucten



Vond je de Q&A met Rob Janssen interessant?

Dan hebben we goed nieuws voor je! Er staan namelijk weer een hoop nieuwe webinars op de planning waar je al jouw brandende vragen kan stellen. Zorg er dus voor dat je op tijd bent aangemeld voor de nieuwe sessies. Aanmelden doe je via deze link.

Meer Blogs

Cookie Preferences
close

We may use and track cookies, local storage, your IP address and similar technologies to improve the user experience of this site and to understand how it is used. Read more in our privacy policy.