Als je de doorsnee Nederlander vraagt om een software-ontwikkelaar te omschrijven, dan hoor je ongetwijfeld dingen als ‘nerds die wel wat sociale vaardigheden kunnen gebruiken’. Mensen denken al gauw aan mannen die niets anders doen dan coden en gamen. Een achterhaald stereotype natuurlijk. Maar hoe zit het dan wel? En welke eigenschappen en kwaliteiten heb je nodig om écht succesvol te zijn en blijven als developer?
In de 20 jaar die ik actief ben in de it-wereld heb ik voor veel klanten gewerkt en aan nog wel meer projecten deelgenomen. Wat in al die tijd altijd het allerbelangrijkste is geweest en gebleven, is communicatie. De moderne programmeur is daar ontzettend goed in. Software-ontwikkeling valt of staat er immers bij.
Natuurlijk gaat er zelfs in de meest geoliede organisaties en ontwikkelteams wel eens iets mis. En in de projectteams waar ik deel van uitmaak, zie ik dat zulke issues – als ze er zijn – bijna altijd ontstaan doordat mensen niet goed of zelfs vergeten te communiceren. Iemand gaat op vakantie midden in een sprint en vergeet iets over te dragen. Of teamleden en ontwikkelteams geven niet goed aan waar ze precies mee bezig zijn. Het gevolg: dingen worden dubbel gedaan. Een goede developer kan zichzelf uitstekend motiveren en werkt zelfstandig, maar is dus absoluut geen einzelgänger. Hij neemt het initiatief om continu in gesprek te blijven met directe collega’s en alle andere betrokkenen.
Lever op tijd op
Het blijft moeilijk, die deadlines. Ontwikkelaars hebben vaak moeite met inschatten hoeveel werk iets is. Als je niet weet hoe lang iets duurt, dan is het erg lastig om op tijd op te leveren. Natuurlijk helpt de scrum-aanpak je om voorspelbaarder te worden en makkelijker deadlines te halen. Maar dat betekent niet dat je op je lauweren kunt rusten.
Als ontwikkelaar ben je verantwoordelijk voor jouw deel van de werkzaamheden, je moet dus een realistische planning en doorlooptijd kunnen afgeven. Als ontwikkelaar is het dus erg belangrijk om je met die planning te bemoeien en continu terug te koppelen wanneer iets meer werk kost dan verwacht.
Verdiep je in de klant(vraag)
Een goede software-ontwikkelaar zorgt dat hij de klant en eindgebruikers goed begrijpt. Hij neemt de tijd om zich te verdiepen in persona’s, user stories en vraagt actief door om zeker te weten dat hij iets bouwt waar de klant echt op zit te wachten. Zo’n verdiepingsslag zorgt ervoor dat je meer betrokken bent bij het project, en dat komt de kwaliteit van wat je bouwt alleen maar ten goede (daarover later meer).
Ben dus niet tevreden als je slechts een set specificaties krijgt voorgeschoteld, maar vraag door. Praat regelmatig met de klant. Zorg dat je weet waar je mee bezig bent, zodat je snapt wat je aan het bouwen bent. Daarin mag je als ontwikkelaar pro-actief zijn: is die informatie niet voorhanden? Ga er dan zelf naar op zoek.
Lever kwaliteit
Nog al zo’n inkoppertje – maar ja, dat zijn bijna al deze eigenschappen. Toch is dit te belangrijk om niet te noemen. Kwaliteit leveren betekent enerzijds bouwen wat de klant wil én anderzijds iets maken wat goed werkt. Om echt kwaliteit te kunnen leveren, moet je niet alleen begrijpen wat je klant en de eindgebruiker wil. Je moet er ook voor zorgen dat de verwachtingen van de klant goed gemanaged worden.
Bijvoorbeeld op het gebied van known issues en deelopleveringen (welke functionaliteit zit er al wel in en welke niet). Kwaliteit betekent ook dat je onderhoudbare programmatuur oplevert. Schrijf code met het oog op de toekomst. Er komen altijd aanpassingen en uitbreidingen op de applicatie die je bouwt. Heldere code met een goede en duidelijke structuur zorgt ervoor dat iemand anders er later makkelijk mee verder kan.
Hou kennis up-to-date
Er is geen vakgebied dat zo snel verandert en ontwikkelt als het onze. Een goede developer zorgt dat hij bij blijft. Dat betekent cursussen volgen, vakliteratuur lezen, blogs en vlogs volgen, naar user group meetings & evenementen gaan en praten met je collega’s over wat er in het veld gebeurt. Zeker als het gaat om je eigen specialisme.
Maar het betekent niet dat je continu vooraan moet staan als er iets nieuws gebeurt. Dat mag natuurlijk wel, maar soms worden technologieën in een zeer prematuur stadium gedeeld met een selecte groep ontwikkelaars. Om uiteindelijk nooit tot wasdom te komen. Daarnaast kiezen maar zeer weinig klanten voor onvolwassen technologieën of producten. Voorkom dus dat je een hoop tijd verprutst.
Jonge mensen proberen vaak alles bij te houden. Dat lukt niet. Kies je eigen specialisme en focus je daar op. Probeer daarnaast de grote lijnen van wat er speelt in andere relevante vakgebieden (zoals e-commerce, online marketing en design) in de gaten te houden.
Wees inventief en creatief
De ideale developer is niet alleen een kei in logisch redeneren en problemen oplossen. Hij is ook nog eens inventief en creatief. Dan heb ik het natuurlijk niet over design, maar over het bedenken van creatieve oplossingen. Over experimenteren, iets nieuws proberen te maken, iets waarvan je klant niet eens wist dat hij het nodig had. Of zelfs: waarvan niemand had gedacht dat het kon.
Zoals Ruben Meintema in zijn artikel op Marketingfacts aangeeft: ‘programmeren is in beginsel eigenlijk iets heel creatiefs. Je begint met een leeg document en alles wat je kan bedenken is mogelijk.’Juist het creatieve, inventieve aspect – dat je echt iets kunt scheppen – is wat programmeren zo leuk maakt. Een creatieve coder is niet alleen goed in het verbeteren van techniek en bestaande functionaliteiten, maar bedenkt ook graag nieuwe features. Je oplossing moet daarnaast niet alleen snel en goed leesbaar zijn, maar ook slim werken en praktisch zijn voor de gebruiker.
Kan tegen (keuze)stress
Hoewel volgens Amerikaanse wetenschappers het vak van ontwikkelaar ten opzichte van andere beroepen een lage stressfactor kent, is er toch zeker zo nu en dan sprake van. Denk aan de dynamiek die Agile- en Scrum-werken met zich meebrengt, de continue druk om de doorontwikkeling van producten en technologieën bij te houden, wisselende klanten en werkomgevingen, lange dagen als er echt iets opgeleverd moet worden. Het zijn allemaal voorbeelden van herkenbare stressfactoren.
Developers moeten bovendien de hele dag door keuzes maken. Welke productstack gebruik ik, hoe noem ik deze methode, is dit het juiste algoritme, moet ik mijn code opsplitsen en refactoren? Dat kan leiden tot decision fatigue: het maken van keuzes wordt steeds moeilijker naarmate je meer keuzes gemaakt hebt. En daar moet je wel tegen kunnen.
Wees flexibel
Een negen-tot-vijf-mentaliteit? Dat past – als je het mij vraagt – niet bij het vak. Er wordt van je verwacht dat je zelf verantwoordelijkheid neemt voor je tijd. Dat betekent dat je de vrijheid hebt om rust te pakken als je daar behoefte aan hebt, maar ook extra inspanningen kunt leveren wanneer dat nodig is.
Flexibel betekent ook dat je allerlei verschillende dingen op je bord krijgt. Soms ben je bezig met een e-commerceproject en dan weer met een intranet of portal. Zo nu en dan vragen we je om te adviseren voor weer een ander project of wil werken aan een eigen product. Je moet dus absoluut in staat zijn om diverse petten op te kunnen zetten. En het is erg handig als je veel dingen leuk vindt.
Kritisch op jezelf en collega’s
Een hekel aan testen? Dat is lastig! Want zoals ik eerder al zei, is kwaliteit leveren essentieel. Een goede developer is kritisch op zijn eigen werk en op dat van zijn collega’s. En dat betekent dus ook: unittesten, voortdurend en op eigen initiatief elkaars code reviewen en grondige feedback geven. En ja, testen is echt een andere discipline dan programmeren. Daar kun je je in ontwikkelen.
Testen blijft een ondergeschoven kindje. Niet alleen bij ontwikkelteams, ook bij de opdrachtgever. Vaak denken klanten dat bureaus direct bugvrije software leveren, maar zoiets bestaat natuurlijk niet. Zorg er dus voor dat de klant weet dat de gebouwde software nog getest moet worden. Overtuig hem ervan dat dit echt moet gebeuren. Niet alleen door het ontwikkelteam, maar ook door de klant zelf en de eindgebruiker.
Nieuwsgierig, ambitieus en een leuke collega
Natuurlijk zijn er nog zoveel meer kwaliteiten en vaardigheden waar je als softwaredeveloper in kunt uitblinken. Denk aan nieuwsgierigheid: je continu afvragen waarom dingen zijn zoals ze zijn en gaan zoals ze gaan. Die kritische, nieuwsgierige houding levert nieuwe, creatieve oplossingen op.
Verder ben je bij voorkeur ook een sucker for details en een enorme perfectionist. Ik hoef je waarschijnlijk niet te vertellen hoe groot de gevolgen van kleine foutjes kunnen zijn. Als je ook nog eens ambitieus bent – continu wil blijven leren, groeien en beter werk wilt leveren – én een leuke, gezellige collega bent… dan heb je wat mij betreft het complete pakket te pakken.
Randal van Splunteren, consultant bij Aviva Solutions
of wordt bakker, er zal immers altijd vraag naar brood blijven.
Dus je moet een superman of beter vrouw zijn?
Randal is vergeten nog een paar “Kwaal -liteiten” te benoemen, te weten:
– Ontwikkelaar moet vooral voor een laag salaris willen werken
– Ontwikkelaar meot het leuk vinden oude -code rotzooi van iemand anders te onderhouden
– Ontwikkelaar moet geen overuren schijven
– Ontwikkelaar moet het leuk vinden in een omgekeerde organisatie piramide te willen werken
(onderaan uiteraard)
– Ontwikkelaar moet het leuk vinden in vooral EIGEN tijd te studeren
– Ontwikkelaar heeft geen familie en vrienden
– Ontwikkelaar moet een Indier zijn
Hoezo achterhaald? Een ITer is per definitie ook een gamer. Anders is het een ‘poser’.
Steeds meer mensen werken in internationale c.q. multiculturele omgevingen en daarom worden naast de snel veranderende technical skills de soft skills steeds belangrijker. Persoonlijkheidskenmerken als aanpassingsvermogen, intellectuele en sociale nieuwsgierigheid naast kennis van andere culturen en interculturele communicatie. Onderzoek wijst uit dat de kennis over soft skills bij vrijwel alle bedrijven onvoldoende is waardoor werknemers onderpresteren met alle negatieve gevolgen voor de concurrentiepositie in een globaliserende wereld. Dit speelt met name op in sourcing relaties met andere bedrijven.
Werk je in multiculturele omgevingen en dan loop je tegen zaken aan dat mensen geen nee zeggen omdat dit uiterst onbeleefd is.
–
Wat mij ontzettend stoort aan deze hele manier van denken is dat je er vanuit gaat dat iedere ITer de ideale schoonzoon zou moeten zijn. Iedereen praat elkaar na terwijl we allemaal weten dat dit in de praktijk wel anders in elkaar steekt. Want zelfs als de persoon in kwestie aan alle vinkjes voldoet maar in een rolstoel zit zal deze aanzienlijk minder kansen hebben dan een soortgelijk iemand die niet in een rolstoel zit. (Het aantal rolstoel ITers die ik in 20 jaar tegen ben gekomen kan ik op 1 vinger tellen) Ander voorbeeld: mensen met een kruiwagen hebben het ook makkelijker.
Er zijn legio zaken waarbij mensen op bepaalde vlakken minder goed uit de verf komen of in een bepaalde levensfase zitten waarbij bepaalde zaken minder soepel lopen. Die worden hier min of meer aan de kant gezet omdat ze niet ‘concurrerend’ genoeg zouden zijn?
ITers zijn geen ‘klopvee’ maar net zoals iedereen individuen met eigen kwaliteiten. Als je die in teamverband slim kan combineren dan zal het geheel groter worden dan de som.
–
Trouwens is de aandacht van social skills tijdens een IT opleiding nog steeds zeer pover.
Mede veroorzaakt door het feit dat opleidingen zo efficiënt mogelijk moeten werken om zoveel mogelijk afgestudeerden te produceren en dus zo weinig mogelijk tijd aan ‘bijzaken’ willen spenderen. Wat resulteert dat de gemiddelde consultancy club vaak dan ook voor deze ‘bijscholing’ zorgt.