skip to Main Content
Geweldige Software Engineers Inhuren

Geweldige software engineers inhuren

Het vinden van goede ontwikkelaars en het opzetten van een goed softwareteam is in het beste geval een uitdaging, maar in het ergste geval is het een grote gok; je gooit de dobbelstenen en hoopt op het beste. Als je een sterk technische manager bent (het wil zeggen dat je vroeger een hands-on engineer was) heb je het voordeel van persoonlijke ervaring om je te begeleiden, maar zelfs ex-ontwikkelaars die nu in het management zitten, moeten zeer zorgvuldig engineers selecteren. Als je geen technisch manager bent en je moet een ontwikkelingsteam inhuren of aansturen (geen situatie die ik aanbeveel), dan moet je met nog meer voorzichtigheid handelen.

Het inhuren van geweldige ontwikkelaars, het opbouwen van een geweldig softwareteam en het managen van software engineers vereist een diepgaand begrip van de antwoorden op drie basisvragen; (1) Wat is een software engineer? (2) Wie zijn software engineers? (3) Wat zijn de kwaliteiten en vaardigheden die je moet zoeken in een software engineer?

De beste programmeurs zijn niet iets beter dan slechts goede programmeurs. Ze zijn een orde van grootte beter. – Randall E. Stross

Wat is een software engineer?

Termen als ontwikkelaar, programmeur, software engineer, architect, etc. kunnen verwarrend zijn, vooral als je dat niet bent. Sommige van deze termen zijn een kwestie van mode en betekenen niets, sommige betekenen iets, en sommige zijn impliciet verbonden met verschillende bedrijfstakken. Er zijn twee functietitels die zeker iets betekenen en die goed begrepen en gebruikt moeten worden. De eerste is software engineer. Ik wissel heel vaak “softwareontwikkelaar” en “software engineer” uit, maar “software-ingenieur” impliceert technisch gezien een persoon die van oudsher een opleiding heeft genoten met de juiste diploma’s, en als we heel specifiek zijn over het gebruik van het woord “ingenieur“, dan is een diploma van een technische studie een vereiste. De titel draagt de implicatie van een hogere standaard met zich mee, maar garandeert deze zeker niet (zie de volgende paragraaf). Software architect is een andere zeer specifieke titel die niet zomaar gebruikt mag worden. Een architect is een zeer ervaren software engineer, heeft meer dan waarschijnlijk een graad in informatica, en is iemand die een heel systeem van kop tot teen deskundig kan ontwerpen en begrijpen. Een architect is een expert in systeemdenken. Naast deze twee benamingen zijn de rest van de functietitels vooral een kwestie van voorkeur. Afgezien van de terminologie en de kwestie van het diploma, zijn er twee kwalificaties die een softwareontwikkelaar zonder uitzondering definiëren: (1) de persoon moet een uitgebreid en volledig begrip (maar niet noodzakelijkerwijs beheersing) hebben van de gehele softwareontwikkelomgeving en -tools (ook wel de full-stack genoemd), en (2) de persoon moet een goede moderne softwarearchitectuur begrijpen. Het nalopen van deze twee kwalificaties is van het grootste belang en dient ten volle in aanmerking te worden genomen.

Wie zijn software engineers?

Software engineers zijn gecompliceerde medewerkers en er zijn verschillende dingen die je over ontwikkelaars moet weten voordat je ze in dienst neemt, inhuurt of managet.

Engineering is een beroep en ontwikkelaars zijn daar erg trots op. Dit betekent dat de meeste ontwikkelaars een zeer sterke mening over hun werk hebben (vooral de goede ontwikkelaars). Dit betekent ook dat ze anders gemotiveerd zijn dan de gemiddelde werknemer. Ontwikkelaars worden gemotiveerd door interessante en nieuwe technologie, en zien hun werk in de wereld als nuttig. Dit geeft je een krachtige motivator, belangrijker dan geld, vrije tijd of andere voordelen.

Ontwikkelaars hebben (tot op zekere hoogte) behoefte aan vrijheid. Daar is een oude grap…. De manager vertelt alle ontwikkelaars dat ze om 9 uur ‘s morgens op kantoor moeten zijn, ‘s middags moeten lunchen en om 18 uur moeten vertrekken. De helft van de ontwikkelaars neemt ontslag en de productiviteit daalt tot bijna nul. De manager zegt dan dat je kunt komen en gaan zoals je wilt. De ontwikkelaars verschijnen om 12 uur ‘s middags, werken tot 3 uur ‘s nachts, de productiviteit schiet omhoog. De grap is: het is geen grap!

Ontwikkelaars moeten vaak het werk van anderen doen. Elke ontwikkelaar die ik ken is op een bepaald moment nodig om projecten te managen, met klanten te praten, kwaliteitsborging te doen of zichzelf te managen. Dit maakt ontwikkelaars heel anders dan de gemiddelde werknemer. Nooit wordt van een projectmanager of klantenservicemedewerker verwacht dat hij of zij code schrijft (of zelfs mag schrijven), maar heel vaak wordt van ontwikkelaars verwacht dat ze projecten managen, feedback van klanten verzamelen, productspecificaties schrijven, supportkwesties afhandelen en het management adviseren. Als je iets van deze taken van jouw ontwikkelaars gaat eisen, wees er dan eerlijk over, realiseer je dan dat je om een super-werknemer vraagt, en zorg ervoor dat je deze vaardigheden ook naloopt. Persoonlijk denk ik niet dat je al deze vaardigheden van jouw ontwikkelaars zou moeten vragen, maar dat is een andere discussie. Als je dat wel doet, dan moet je die vaardigheden nalopen.

De meeste ontwikkelaars zijn niet gemotiveerd om zich tot management te laten promoveren, maar dit betekent geenszins dat ze niet ambitieus zijn. De meeste zijn erg ambitieus, maar hun ambities liggen in de technologie, niet in het beklimmen van de carrièreladder. Als je dit weet, dan begrijp je ook hun motivaties.

Alle goede technici hebben last van het Terminal Engineering Syndroom™. Als je ze alle vrijheid heeft, zal een ontwikkelaar de code tot zijn dood toe herschrijven. Er is namelijk altijd nog een andere verbetering aan te brengen. Er is altijd code die sneller, cleaner, netter en efficiënter kan zijn. Het heeft nog één extra aanpassing nodig…. Vrijheid moet worden gecompenseerd door bedrijfsdoelstellingen en deadlines. Ontwikkelaars hebben niet alleen harde en redelijke deadlines nodig, ze hebben er ook behoefte aan (zelfs als ze het niet willen toegeven).

Techneuten kunnen raar zijn, dus laat ze dat maar zijn. Ik ben er een, dus ik mag het zeggen (jij niet). Het is een stereotype, maar het is ook waar. Ontwikkelaars zijn meestal nerds, kleden zich raar, hebben rare gewoontes, en maken zich eigenlijk niet al te veel zorgen over wat je ervan vindt. Verwacht niet dat je ontwikkelaars populair zijn en dat ze erg sociaal zijn. Ontwikkelaars hebben eigenaardigheden (in verbazingwekkende overvloed) en zijn over het algemeen introvert. Laat ze zichzelf zijn. Door dat ene ding te doen zal er meer loyaliteit ontstaan dan enig ander voordeel dat je je kunt bedenken.

De meeste goede programmeurs programmeren niet omdat ze verwachten dat ze betaald krijgen of door het publiek aanbeden worden, maar omdat het plezierig is om te programmeren. – Linus Torvalds

Welke kwaliteiten en vaardigheden moet je in een software engineer zoeken? (in volgorde van belangrijkheid)

Sterke basis. Neem niet aan op basis van een specifieke technologie, neem aan op basis van een stevig fundament en passie. Je wilt een ontwikkelaar die een goed ontwerp en een goede architectuur begrijpt en weet hoe je op een moderne, flexibele manier moet werken. Ontwerp- en architectuurvaardigheden overtreffen alle andere overwegingen.

Passie voor technologie. Ontwikkelaars met passie voor technologie zullen altijd de beste software produceren. Huur ontwikkelaars in die na werktijd voor hun lol thuis gaan zitten programmeren. Elke goede ontwikkelaar die ik ken, heeft projectjes lopen omdat ze houden van wat ze doen.

Teamwork. Het is een cliché en ik vind het vervelend om het om die reden te zeggen, maar in het geval van ontwikkelaars is dit zowel belangrijk als anders. De meeste ontwikkelaars zijn niet de sociaalste en ze beschermen fel hun werk. Dit creëert een ander soort barrière voor teamwork en kan ertoe leiden dat ontwikkelaars geïsoleerd werken, of je het nu leuk vindt of niet. Ontwikkelaars moeten goed kunnen samenwerken, in het bijzonder met hun collega’s. Ze moeten in staat zijn om als mentor op te treden, kritiek te accepteren, van elkaar te leren en andere ontwikkelaars te helpen. Deze kwaliteiten moeten zorgvuldig worden gescreend (zie hieronder de kopjes “Neem beslissingen als team” en “Vraag om echte code”). Als ze het niet goed kunnen vinden met jouw verkopers of accountants, maak er geen probleem van, maar onder elkaar moet teamgevoel er wel zijn.

Brede kennis. Inzicht in een breed scala aan ontwikkelingsmethoden en -methodieken, programmeerstijlen en technologie is essentieel voor een goede ontwikkelaar, ongeacht hun directe behoefte of gebruik. Dit betekent inzicht in waterfall en agile. Het begrijpen van object oriented, functionele en procedurele paradigma’s. Het begrijpen van sterk en zwak getypte talen. Inzicht in test-driven development, MVC, extreme programming, RAD, loose coupling en tientallen andere concepten. Het maakt niet uit of je een bepaalde technologie wel of niet gebruikt in jouw huidige productie, je ontwikkelaars moeten ze allemaal kennen. Het inzetten van breed opgeleide engineers is jouw beste garantie voor kwaliteitssoftware.

Ervaring in het algemene werkveld. Dit betekent dat als jouw bedrijf webontwikkeling doet, je iemand wilt hebben die getraind en ervaren is in webontwikkeling. Ik heb het nog niet over specifieke talen. Dit zegt alleen dat je niet een mainframe programmeur wilt inhuren om aan mobiele apps te werken of een embedded code programmeur om web development te doen. Wijk niet af van jouw algemene werkveld, tenzij je een goede reden hebt om dat te doen.

Vaardigheid in je stack. Dit zijn de specifieke vaardigheden in jouw taal, jouw database of wat dan ook. De meeste mensen die dit lezen zullen geschokt zijn dat dit onderaan het lijstje staat. Als je al het bovenstaande als eerste krijgt, heb je al een geweldige ontwikkelaar gevonden, dus neem die persoon aan! Als jouw bedrijf expert in PHP is en je interviewt een ontwikkelaar die aan al het bovenstaande voldoet, maar hij of zij heeft Perl ervaring in plaats van PHP, neem die persoon dan aan! Als je een .NET specialist bent en een senior Java ontwikkelaar met alle bovenstaande kwalificaties en 10 jaar ervaring wil voor je werken, neem hem of haar dan aan! Meestal, als ik moet beslissen of ik iemand aanneem, dan doet ik dit ruimschoots voor ik aan dit onderwerp begin, en dan kan het me niet meer schelen. Soms wil je juist iemand met een frisse blik hebben die jouw technologie ter discussie kan stellen en nieuwe ideeën kan aandragen. Wees nooit bang om een Java-programmeur in te huren om op je .NET afdeling te komen werken, of een PHP-ontwikkelaar om je Python team te versterken, zolang ze maar alle andere hierboven genoemde vaardigheden hebben. Elke ontwikkelaar kan een nieuwe taal leren. Dat is letterlijk wat ontwikkelaars voor de kost doen.

Passie en integriteit kan je niet leren, je hebt het of je hebt het niet. Technologie is het gemakkelijke deel.

Neem geen genoegen. Maak je kansen op succes nog groter.

Neem beslissingen als team. Voer waar mogelijk teaminterviews uit. Zet al je ontwikkelaars in de kamer met de kandidaten en laat ze samen interviewen, met de nadruk op bovenstaande lijst (in volgorde). Wie je nieuwe ontwikkelaar ook is, zij zullen met jouw hele team moeten werken, dus je moet buy-in van je team hebben. Bovendien wil je nooit je keuze van ontwikkelaars in de weg staan van een enkel oordeel of poortwachter. Als je dat doet, eindig je alleen maar met de vaardigheden en houding van die poortwachter. Eén enkele poortwachter leidt tot inteelt van je team. Ik garandeer dat niemand slim genoeg is om één enkel punt van succes of falen in de moderne technologie te zijn. Technologie gaat over vooruitstrevend en innovatief zijn, je wilt veel ideeën en perspectieven in de kamer hebben.

Diploma of geen diploma? Dit is een lastige kwestie, vooral in het tijdperk van “code schools”. Je mag de voorkeur geven aan een kandidaat met ene HBO/WO diploma. Dit is echter geen harde regel en moet zeer zorgvuldig afgewogen worden. Het is waar dat een ontwikkelaar met een afgeronde HBO/WO opleiding een veilige keuze is, maar als ik de vijf beste ontwikkelaars zou noemen die ik ken, dan hebben twee van de vijf geen formele opleiding gehad en is er een ervan ooit begonnen aan de universiteit, maar heeft hij het niet afgemaakt. In geval van twijfel, ga voor het diploma, maar keur niet kandidaten af die geen diploma hebben.

Vraag om echte code. Bekijk altijd de echte productiecode van een ontwikkelaar voordat je hem of haar inhuurt. Laat je ontwikkelaars de code uit elkaar halen en bekijk de code actief in een interview. Je bent niet alleen op zoek naar goede code, maar je bent ook op zoek naar hoe een kandidaat op kritiek reageert. Als een goede ontwikkelaar kritiek krijgt, zal hij dingen zeggen als: “Ik heb er nooit zo over nagedacht, dat is een goed idee, dank je.” Een “slechte” ontwikkelaar zal defensief worden en zichtbaar geïrriteerd raken. Als je naar de code van een ontwikkelaar kijkt, zie je heel snel met wie je te maken hebt.

Mijn laatste gedachten….

Ontwikkelaars zijn geen handelswaar. Het merendeel van de hogere leidinggevenden met wie ik heb samengewerkt (met name degenen met een business administration opleiding, ja, ik kijk naar jou) beschouwen ontwikkelaars als vervangbare onderdelen. Dat zijn ze niet. Het zijn zelfs je meest onvervangbare medewerkers. Hoogwaardige software vereist diepgaande kennis van jouw systemen. Software is complex. Hoe goed het ook is ontworpen, het heeft eigenaardigheden, rare workarounds, ongedocumenteerde gedeelten en allerlei dingen die je nooit zult weten. Jouw ontwikkelaars weten van oudsher waar lijken in de kast zitten. Verloop van ontwikkelaars is erg duur en je verliest kennis die je nooit meer terugkrijgt. Gebruik de bovenstaande richtlijnen om jouw verloop laag te houden.

Huur een software engineering manager in die ontwikkelaar was/is. Engineering managers kunnen niet alleen maar “managers” zijn. Zij moeten eerst goede ontwikkelaars en architecten zijn geweest. Ze kunnen geen Excel managers zijn en ze mogen nooit gewoon iemand zijn die in het belang van het management in het MT terecht is gekomen. Jouw engineering manager moet een zeer goede hands-on software engineer zijn. Hij of zij moet in staat zijn om als mentor op te treden, mensen in dienst te nemen en vooral het respect van zijn of haar team af te dwingen. Alleen een ontwikkelaar kan ontwikkelaars goed leiden. Ik heb gezien wat er gebeurt met teams die geleid worden door middenmanagers die nog nooit een regel met productiecode hebben geschreven (ja, ja, ik weet dat je ooit op school een HTML-formulier hebt moeten maken…. sorry, dat telt niet mee). Het is schokkend om te zien dat niet-ontwikkelaars leiding geven aan ontwikkelaars in de frontlinie…. dus stop ermee.

Niemand en niets kan een goede werving garanderen, maar je doel moet altijd zijn om de kansen in jouw voordeel te krijgen. Begrijp en volg deze richtlijnen en je hebt altijd een goede manier om de beste kansen te hebben voor het opzetten van een geweldig softwareteam.

Heeft u op de afdeling softwareontwikkeling een uitdaging met personeel en zoekt u tijdelijke, gekwalificeerde junior developers die direct operationeel zijn? Team X is een detacheringsbureau dat u kan helpen. Neem vrijblijvend contact op met Anthony Carter voor onze tarieven. Of lees meer over onze dienstverlening op de site.

Telefoon : 023-2052070

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Back To Top