Column/
Picasso in software ondergewaardeerd
/4 reacties
Column: Christine Karman

Christine werkt sinds 1994 als technologie-expert. Ze heeft aan de wieg gestaan van diverse technologie-bedrijven, en is daarnaast mede-oprichter en bestuurslid bij Meldpunt.
Christine was in 2001 Technology Pioneer bij het World Economic Forum en in 2002 en 2004 jurylid bij de Technology Review 100 op MIT. Ze vervult meerdere adviesfuncties. Momenteel is ze ook associate consultant bij Stratix Consulting. Haar persoonlijke website en blog is christine.nl.
Sinds 2008 bouwt Christine apps voor Android, ze spreekt soms op Android Dev Camps en andere op innovatie en technologie gerichte forums.
Mensen die een vak beheersen, kunnen daar goed in zijn of niet. ‘Goed zijn’ wordt dan vaak minder bepaald door de ervaring dan door het talent om dat vak uit te oefenen.
In de meeste beroepen is het verschil tussen de topbeoefenaars en de ‘onderkant’ in de orde van een factor vijf, maximaal. Een goede schilder schildert je huis in een week, waar een beginnend schilder er misschien een maand over doet. In sommige beroepen is het verschil heel groot. Picasso maakte in een half uur een schets, maar je kunt nog zoveel minder getalenteerde tekenaars een jaar bij elkaar zetten, er komt geen Picasso uit. Er zijn weinig beroepen waar het verschil zo groot is. Gelukkig is meestal wel voor de leek zichtbaar dat iemand beter is in een vak dan een ander, en zijn mensen bereid meer te betalen voor een goede schilder dan voor een matige of slechte.
Broncode
Er zijn beroepen waar het verschil in niveau heel groot is, terwijl dat verschil in niveau door klanten vaak niet wordt gezien. Computerprogrammeur is zo’n beroep. Joel Spolsky verwoordde het ooit zo op zijn blog over software productiviteit: “A good programmer will create code that average programmers simply never can create.” Voor de duidelijkheid, onder ‘code’ wordt hier verstaan ‘broncode’ voor software. Goede programmeurs die als freelancer bij veel verschillende bedrijven in de keuken kunnen kijken, beamen wat Spolsky zegt. Hoe komt het dat er zo’n groot verschil is tussen programmeurs? En interessanter nog, wordt dat verschil groter of kleiner?
In de jaren zeventig van de vorige eeuw had je aan een mulo-/mavodiploma genoeg om programmeur te worden bij een groot bedrijf. Een relatief korte opleiding was voldoende om de gemiddelde geïnteresseerde mulist als programmeur aan het werk te zetten. Programmeur was wel een beroep dat in aanzien stond, meer vanwege de waas van geheimzinnigheid die toen nog rond computers hing dan omdat het moeilijk was. Tegelijkertijd groeide de arbeidsmarkt voor programmeurs die systeemsoftware en pakket-software schreven, met name in de VS. Ook die programmeurs waren vaak niet opgeleid in de informatica, maar hadden zichzelf programmeren geleerd of werden omgeschoold.
Begin jaren ‘80 begonnen bedrijven op grote schaal academici aan te nemen in IT-functies. De computers werden krachtiger, de informatiesystemen complexer. Een academische studie informatica was er nog niet, dus academici werden in een cursus van twee of drie maanden omgeschoold tot volleerd systeemontwerper, die in de praktijk meestal als programmeur aan de slag gingen.
Scala
In de huidige tijd is er een scala aan typen programmeurs werkzaam, variërend van mensen die met javascript hun webpagina opvrolijken tot specialisten die operating systems schrijven voor multicore processoren. Om het overzichtelijk te houden, beperk ik me tot programmeurs die systeemsoftware of bedrijfssoftware schrijven.
Onder programmeur versta ik iemand die software ontwerpt en programmeert. Het is met name bij grote bedrijven gebruikelijk, ook nu nog, om het software-ontwikkelproces op te delen in fasen waarbij de uiteindelijke code pas in de laatste fase wordt gecreëerd. In de eerdere fasen zijn ontwerpers en analisten doende met het functioneel en technisch ontwerp van het systeem. Ik vind dat een achterhaalde werkwijze. Software dient in kleine stappen te worden ontwikkeld, waarbij al in de eerste fase van het project een werkend systeem bestaat. Software dient ontwikkeld te worden door programmeurs die zelf ontwerpen, programmeren en testen.
Vaardigheden
Hoe komt het dat er zo’n groot verschil in productiviteit en niveau is in programmeurs van bijvoorbeeld desktop bedrijfssoftware? Dat zit niet voornamelijk in ervaring. Ik heb gewerkt met programmeurs die zo van de universiteit kwamen, en die op de eerste dag in hun nieuwe baan in rap tempo software produceerden die bijna perfect was. Ik heb ook gewerkt met programmeurs met tien jaar ervaring die er niets van bakten. Een aantal vaardigheden spelen hierbij een rol:
- kun je in je hoofd een stukje van je code “afspelen” voordat je het intypt? Dat geeft je inzicht in hoe je het het beste opschrijft.
- ben je in staat om de globale structuur van je code steeds te overzien?
- kun je je steeds verplaatsen in de mensen die jouw software gaan gebruiken?
- kun je je verplaatsen in de mensen die jouw software gaan beheren?
- begrijp je de programmeertaal die je gebruikt goed genoeg om efficiënte code te kunnen schrijven?
- maak je code die voor de mensen die na jou komen begrijpelijk is, zodat ze onderhoud kunnen plegen?
Toch is met dit lijstje geen afdoende antwoord gegeven op de vraag waarom de ene programmeur zoveel beter is dan de andere. Martijn Brinkers verwoordt het zo: “je kunt aan code gelijk zien of het goed is of niet. Als het er rommelig uitziet dan kun je er vergif op innemen dat de software ook niet lekker loopt.”
Wat hij bedoelt is dat je aan de layout en inhoud van source code kan zien of iemand hart heeft voor software maken – en dus goede software maakt.
Is dat talent vergelijkbaar met dat van een kunstenaar? Mijn opa zat samen met Henk Persijn op tekenles bij Puijper, en hij zei “Als ik Persijn zag tekenen dan werd ik mismoedig. Zoals hij in een paar lijnen iets op papier zette, ik wist dat ik dat nooit zo zou kunnen.” Maar programmeren is geen kunstvorm, er moeten toch aanwijsbare eigenschappen zijn die de goede programmeur onderscheiden van de middelmatige.
Intelligentie
Een bepaald type intelligentie speelt ongetwijfeld een hoofdrol. Wat in mijn ervaring de briljante programmeur kenmerkt is dat zij of hij onmiddellijk voor zich ziet hoe een bepaald stuk software geschreven moet worden. Wat dat betreft kun je een vergelijking maken met een architect: iemand die een zeer goed ruimtelijk inzicht heeft kan iedere driedimensionale structuur zo tekenen, terwijl iemand zonder ruimtelijk inzicht nog niet de eenvoudigste tafel kan tekenen. En als – een bepaald aspect van – intelligentie een hoofdrol speelt, dan is het begrijpelijk dat er een groot verschil is in performance tussen verschillende programmeurs.
Roem
Picasso heeft meer verdiend aan zijn tekeningen dan Persijn. Terwijl ook Persijn toch briljant kon tekenen, waardeert de markt het verschil in talent met een dramatisch groot verschil in roem en beloning. Het wrange is dat de markt voor programmeurs – met name in ons land – weinig oog lijkt te hebben voor het grote verschil in niveau.
Als zeer middelmatig java-programmeur kom je als freelancer makkelijk aan de slag voor 50 euro per uur terwijl je, hoe briljant je code ook is, nooit meer kunt vragen dan 150 euro per uur. Waar het verschil in productiviteit en kwaliteit een factor honderd is, is het verschil in beloning maximaal een factor drie.
Consultants
Een van de gevolgen hiervan is dat programmeurs bij de grotere detacheringsbedrijven worden gedwongen om naar een andere, meer gewaardeerde functie over te gaan. Goede programmeurs worden dan consultants die wel een hoog uurtarief kunnen vragen maar nooit meer een regel code produceren. Met weer als gevolg dat de gemiddelde kwaliteit van beschikbare programmeurs minder hoog is dan gewenst.
Het zou heel goed zijn als het verschil in productiviteit directer gekoppeld zou zijn aan het verschil in beloning. Ik wil dit illustreren met een voorbeeld. Programmeur A levert in twee maanden een perfect systeem op. Programmeur B levert bij een andere klant eenzelfde systeem op, maar van lagere kwaliteit, in twaalf maanden. Programmeur A (tarief 150 euro) wordt beloond met 40.000 euro, B (tarief 50 euro) met 96.000 euro. Nog afgezien van het aanzienlijke verschil in geleverde kwaliteit is het verschil in beloning niet te rechtvaardigen.
Niet cool
Belangrijke oorzaak voor het gebrek aan waardering van goede programmeurs is mijns inziens gebrek aan kennis op dit gebied bij het management van veel bedrijven. Toen ik ooit bij een groot softwarehuis werkte, vroeg een klant om een cobol programmeur met minimaal twee jaar aantoonbare ervaring. We hadden een jonge jongen beschikbaar die heel goed kon programmeren maar die nog nooit cobol had gezien. Ik heb de accountmanager verteld dat ik die jongen in een half uur cobol kon leren en dat hij dan – door zijn talent - aanzienlijk beter zou presteren dan een programmeur met meer ervaring maar minder talent. De klant accepteerde dit echter niet. Ze wilden niet geloven dat het veel beter was om een goede programmeur te hebben dan twee jaar aantoonbare ervaring met een uiterst eenvoudige programmeertaal. Ik kon dat niet begrijpen, en ik begrijp het nog steeds niet.
Een eenvoudige oplossing voor het probleem is er niet. In regio’s zoals Silicon Valley, waar veel managers ook zelf ervaring hebben met het maken van software, speelt het minder. Maar zo lang het bij ons niet cool is voor managers en consultants om verstand te hebben van het maken van software - of zelfs van techniek in het algemeen - zal goede software altijd ondergewaardeerd blijven.
Reacties
- GeertI: "Datgene wat je in je artikel schetst herken ik wel. Volgens m..."
- Christine Karman: "Eigenlijk had ik het in mijn stukje niet over verni..."
- Edward: "Om door te gaan op vooruitgang en dan voornamelijk de snelhei..."
- Sander: ""[...] De klant accepteerde dit echter niet. Ze wilden niet g..."
- Reageer zelf
Reageren via Facebook