De Python Paradox
Augustus 2004
In een recente talk zei ik iets dat veel mensen van streek maakte: dat je slimmere programmeurs aan een Python-project kon laten werken dan aan een Java-project.
Ik bedoelde hiermee niet dat Java-programmeurs dom zijn. Ik bedoelde dat Python-programmeurs slim zijn. Het kost veel moeite om een nieuwe programmeertaal te leren. En mensen leren Python niet omdat het hen een baan oplevert; ze leren het omdat ze echt van programmeren houden en niet tevreden zijn met de talen die ze al kennen.
Wat hen precies het soort programmeurs maakt dat bedrijven zouden moeten willen inhuren. Vandaar wat ik, bij gebrek aan een betere naam, de Python-paradox zal noemen: als een bedrijf ervoor kiest om zijn software in een relatief esoterische taal te schrijven, kunnen ze betere programmeurs inhuren, omdat ze alleen degenen aantrekken die er genoeg om gaven om het te leren. En voor programmeurs is de paradox nog uitgesprokener: de taal om te leren, als je een goede baan wilt, is een taal die mensen niet louter leren om een baan te krijgen.
Slechts enkele bedrijven zijn tot nu toe slim genoeg geweest om dit te realiseren. Maar hier vindt ook een soort selectie plaats: het zijn precies de bedrijven waar programmeurs het liefst zouden willen werken. Google, bijvoorbeeld. Wanneer ze vacatures voor Java-programmeurs adverteren, willen ze ook Python-ervaring.
Een vriend van mij die bijna alle veelgebruikte talen kent, gebruikt Python voor de meeste van zijn projecten. Hij zegt dat de belangrijkste reden is dat hij de manier waarop broncode eruitziet, mooi vindt. Dat lijkt misschien een frivole reden om de ene taal boven de andere te kiezen. Maar het is niet zo frivool als het klinkt: als je programmeert, besteed je meer tijd aan het lezen van code dan aan het schrijven ervan. Je verplaatst codeblokken zoals een beeldhouwer kleiblokken verplaatst. Dus een taal die broncode lelijk maakt, is tergend voor een veeleisende programmeur, net zoals klei vol met klonten dat zou zijn voor een beeldhouwer.
Bij de vermelding van lelijke broncode zullen mensen natuurlijk aan Perl denken. Maar de oppervlakkige lelijkheid van Perl is niet het soort dat ik bedoel. Echte lelijkheid is geen harde syntax, maar het moeten bouwen van programma's met de verkeerde concepten. Perl mag eruitzien als een cartoonfiguur dat scheldt, maar er zijn gevallen waarin het conceptueel Python overtreft.
Tot nu toe, in ieder geval. Beide talen zijn natuurlijk bewegende doelen. Maar ze delen, samen met Ruby (en Icon, en Joy, en J, en Lisp, en Smalltalk) het feit dat ze zijn gemaakt door, en gebruikt worden door, mensen die echt geven om programmeren. En die doen het meestal goed.