De auteur betoogt dat software engineering een rigoureuze fundering vereist, waarbij hij een analogie maakt met de specialistische training van een chirurg. Aan de hand van diverse anekdotes beschrijft hij de tekortkomingen van 'senior' ontwikkelaars die zich focussen op triviale details (zoals linting-regels en tabs versus spaces), maar fundamentele kennis van architectuur, netwerken en testen missen.
Het artikel maakt een onderscheid tussen drie categorieën onvoldoende geschoolde ontwikkelaars: mensen die de verkeerde prioriteiten stellen, mensen met oppervlakkige kennis, en mensen die vertrouwen op politiek en soft skills.
De kernpunten zijn:
- Academische vorming: Een graad in informatica biedt een essentieel overzicht van hoe computersystemen echt werken.
- Algoritmen: Het oefenen met algoritmische problemen (zoals LeetCode) helpt ingenieurs om problemen beter te visualiseren en preciezer op te lossen.
- Concurrentie: In een verzadigde markt en in een post-AI-tijdperk vormen deze formele kwalificaties een doorslaggevend concurrentievoordeel en een vorm van professionele zekerheid.
- Sociaal-economische barrières: De auteur erkent de financiële obstakels van het onderwijssysteem, maar adviseert desondanks om te investeren in fundamentele kennis.
Een formele graad en algoritmisch probleemoplossend vermogen is het antwoord. Altijd al.
Je wilt dit instrument niet aan de verkeerde persoon geven. Hoe gemotiveerd, open voor leren, goedbedoeld en hardwerkend ze ook zijn, ze zullen het verpesten. Ze kunnen een chef-kok, een kapper of een andere professionele gebruiker van een snijinstrument zijn. Ondanks hun aanverwante ervaring zullen ze het verpesten. Het hanteren van een scalpel voor het doel van een operatie is een moeilijke baan met een grote verantwoordelijkheid.
Ik gebruik deze analogie graag wanneer ik nadenk over de huidige staat van software. We hebben een hard filter nodig voor mensen die AI op een computer willen gebruiken met het doel deze te programmeren. Het is een bitterzoet statement om te maken vanuit iemand die zowel gekwalificeerd als niet gekwalificeerd is om een dergelijk argument aan te voeren:
Gedurende het grootste deel van mijn carrière had ik geen formele, rigoureuze opleiding in informatica, noch heb ik de tijd geïnvesteerd in "leetcoding". Desondanks deed ik het goed. Ik was en ben nog steeds iemand die software bouwt om problemen op te lossen. Ik doe dat niet altijd voor het geld; ik doe het omdat ik het altijd al wilde doen. Tegelijkertijd heb ik een schat aan ervaring opgedaan met bootcamp-ontwikkelaars, voormalige natuurkundigen en ingenieurs die hun opleiding nooit hebben afgerond of er niet bijzonder ver in zijn gekomen. De ervaring heeft geleerd dat dingen op de lange termijn zelden goed aflopen als je streeft naar een succesvolle carrière zonder graad of door codeer-interviews te omzeilen. Het ontbreken van deze vaardigheden kan in de huidige omstandigheden carrièrebeëindigend zijn.
Anekdotes over onbekwaamheid
Hier zijn enkele anekdotes:
- Ik werkte ooit bij een startup waar een senior engineer iedereen in het team dwong om hun bestandsimporten alfabetisch te sorteren. Hij had ook de meest krankzinnige linting-regels ooit, en alles wat hij niet in linting kon codificeren, maakte hij goed met opmerkingen in pull requests. Ironisch genoeg had diezelfde startup nul unit- of e2e-tests voor de applicatielaag, en een klein aantal smoke-tests voor de backend-services. Testen en implementeren was een absolute hel die hele weekenden in beslag nam. Ze hadden hun prioriteiten zeker op orde.
- Bij een andere baan was er iemand die uren besteedde aan discussies over de maximale lengte van symbolen voordat tekst in een IDE werd afgebroken, een sterke mening had in het "tabs versus spaces"-debat, en ook alles zelf had gebouwd, inclusief een e-maildienst die altijd vastliep en geplande e-mails verloor zodra we meer klanten begonnen aan te nemen. Accepteer dat je magnum opus van software troep is en gebruik een service van derden die geen klanten wegjaagt.
- Ik heb ook taal- en framework-experts doorstaan. Dat zijn het type ontwikkelaars die relatief goed zijn in een zeer klein subset van technologieën, maar volledig verloren zijn in alles wat daaraan grenst, en ook volkomen onwetend zijn over de fundamenten. Dit zijn de mensen die in constante paranoia leven dat het bedrijf waarvoor ze werken het framework waarin ze expert zijn overbodig maakt en hen dwingt iets nieuws te leren. Het is eerlijk gezegd vermoeiend om een uur lang een tirade te horen over hoe geweldig Angular is in vergelijking met de middelmatigheid van React, of de inferioriteit van Kotlin in vergelijking met Java. Slik het gewoon en gebruik wat het probleem het beste oplost.
- Er zijn ook volkomen onwetende mensen die er somehow doorheen glippen, vooral in corporate omgevingen. Er was iemand die zich voordeed als een Linux-expert en aan wie ik vroeg om advies voor mijn homelab-setup. Zijn initiële verhaal was goed, waarbij hij een reeks leuke feitjes uitlegde over de verschillende distributies en systemd, maar na een paar weken discussie stopten zijn suggesties met kloppen, waardoor ik wantrouwig werd. Na hem te hebben geprikkeld met enkele fundamentele vragen over besturingssystemen en netwerken, bleek dat hij slechts oppervlakkige kennis had en dat mijn homelab-setup het meest ingewikkelde was dat hij ooit had gezien. Er was een soortgelijke situatie waarbij een bepaald stuk functionaliteit niet werkte, en aangezien ik mezelf niet goed vond in dat specifieke deel van de technologie-stack, bleek de persoon die het had geschreven en beheerde niet in staat te zijn zijn eigen werk te lezen en te debuggen.
De meeste mensen die ik hierboven noem, bekleedden op het moment dat ik met hen werkte seniorere posities dan ik, en ze allemaal beschouwden een formele opleiding in informatica en vaardigheden in algoritmisch probleemoplossend vermogen als niet belangrijk voor een succesvolle carrière. Die mindset werd op veel plaatsen waar ik werkte getolereerd of zelfs gevierd. De mensen die ik beschreef, werden niet beschouwd als slechte presteerders.
De drie categorieën van onvoldoende scholing
Als ik de groep in ons vakgebied die beweert dat er "geen noodzaak is voor opleiding, geen noodzaak voor algoritmen" zou moeten categoriseren, vallen ze in drie categorieën:
- Ze richten zich op de verkeerde dingen bij het ontwikkelen van software.
- Ze hebben een zeer oppervlakkige kennis en een gebrek aan besef van hoe moeilijk goede engineering is.
- Ze zijn volkomen onwetend en vertrouwen op goede soft skills en politiek.
Misschien ben ik te wrokvol geworden door het omgaan met mensen die shortcuts nemen waar shortcuts niet genomen zouden moeten worden.
De waarde van academische vorming en algoritmiek
Een graad in informatica aan een gerenommeerde universiteit geeft een student, in het slechtste geval, een overzicht van hoe een computer werkt en wat deze kan doen. Voor de meer gemotiveerden biedt het ook de kans om waardering te krijgen voor de diepte en complexiteit van computersystemen. Ik geloof dat het oprecht moeilijk is om dat niveau van begrip en waardering te verkrijgen door alleen maar een baan uit te oefenen, vooral in een wereld na de komst van AI.
"Leetcode grinden" zou een aangenaam tijdverdrijf moeten zijn, wanneer het niet wordt gedaan met het doel een baan te bemachtigen. Het voedt een specifiek type denken dat ingenieurs helpt om problemen in hun hoofd te visualiseren, goed gedefinieerde problemen met code op te lossen en een goede grip te krijgen op een programmeertaal. Probleemoplossing voor je plezier maakt codeer-interviews niet minder stressvol... het is immers een competitie. Competities zijn bedoeld om mensen te dwingen zich goed voor te bereiden en het beste uit zichzelf naar boven te halen. Dit is inherent stressvol. Bovendien zijn er nauwelijks economisch levensvatbare manieren om duizenden kandidaten te filteren die allemaal erg slim zijn en een hoog salaris willen verdienen.
Veiligheid in een concurrerende markt
noch een prestigieuze graad, noch een goede beheersing van algoritmisch probleemoplossend vermogen garanderen carrièresucces. Het zijn factoren die de statistieken in het voordeel van de kandidaat doen werken. In een moeilijke markt zoals die van nu bieden ze zekerheid. In het post-AI-tijdperk zullen ze een enorm concurrentievoordeel bieden, omdat ze een geweldige kans bieden voor behoud en ontwikkeling van vaardigheden.
Er zijn ook de uitschieters, de edge-cases die het voor het geld zijn gaan doen en het ver hebben gebracht, maar ik ben niemand tegengekomen die niet ongelooflijk ongelukkig en bitter is over hun baan, dus ze zijn mijn toetsaanslagen niet waard.
Financiële aspecten en het onderwijssysteem
Voor velen van ons die vanuit het niets zijn begonnen, is er ook het financiële aspect van het bereiken van de hoogste echelons van software engineering. Voordat ik me een prestigieuze opleiding en de tijd kon veroorloven om me bezig te houden met algoritmisch probleemoplossend vermogen, schreef ik software om te overleven. Bovendien beschouw ik het onderwijssysteem in een groot deel van de wereld als grotesk perverterd. Prestigieuze universiteiten neigen naar rijke kinderen en "nepo-babies" die steeds meer losgekoppeld raken van de wereld en brutaal zijn in hun omgang met de samenleving (shout out naar SBF).
Ik kan geen redelijke, erudiete oplossing bieden voor het probleem van de financiering van een opleiding, noch troost bieden. Wat voor mij werkte, was me genadeloos en onvergeeflijk op te stellen en te vechten voor mijn geld. De dingen begonnen pas goed te lopen toen ik stopte met naïef en hardwerkend te zijn, en begon mensen af te snijden en te nemen wat ik verdiende. Tot mijn verbazing brandde dit niet zoveel bruggen, maar wekte het juist bewondering en respect op. Het is een harde wereld daar buiten.
Blijf op school, wees geen tool, en leer problemen oplossen voor de liefde van het spel.
Een formele graad en algoritmisch probleemoplossend vermogen is het antwoord. Altijd al.
Je wilt dit instrument niet aan de verkeerde persoon geven. Hoe gemotiveerd, open voor leren, goedbedoeld en hardwerkend ze ook zijn, ze zullen het verpesten. Ze kunnen een chef-kok, een kapper of een andere professionele gebruiker van een snijinstrument zijn. Ondanks hun aanverwante ervaring zullen ze het verpesten. Het hanteren van een scalpel voor het doel van een operatie is een moeilijke baan met een grote verantwoordelijkheid.
Ik gebruik deze analogie graag wanneer ik nadenk over de huidige staat van software. We hebben een hard filter nodig voor mensen die AI op een computer willen gebruiken met het doel deze te programmeren. Het is een bitterzoet statement om te maken vanuit iemand die zowel gekwalificeerd als niet gekwalificeerd is om een dergelijk argument aan te voeren:
Gedurende het grootste deel van mijn carrière had ik geen formele, rigoureuze opleiding in informatica, noch heb ik de tijd geïnvesteerd in "leetcoding". Desondanks deed ik het goed. Ik was en ben nog steeds iemand die software bouwt om problemen op te lossen. Ik doe dat niet altijd voor het geld; ik doe het omdat ik het altijd al wilde doen. Tegelijkertijd heb ik een schat aan ervaring opgedaan met bootcamp-ontwikkelaars, voormalige natuurkundigen en ingenieurs die hun opleiding nooit hebben afgerond of er niet bijzonder ver in zijn gekomen. De ervaring heeft geleerd dat dingen op de lange termijn zelden goed aflopen als je streeft naar een succesvolle carrière zonder graad of door codeer-interviews te omzeilen. Het ontbreken van deze vaardigheden kan in de huidige omstandigheden carrièrebeëindigend zijn.
Anekdotes over onbekwaamheid
Hier zijn enkele anekdotes:
- Ik werkte ooit bij een startup waar een senior engineer iedereen in het team dwong om hun bestandsimporten alfabetisch te sorteren. Hij had ook de meest krankzinnige linting-regels ooit, en alles wat hij niet in linting kon codificeren, maakte hij goed met opmerkingen in pull requests. Ironisch genoeg had diezelfde startup nul unit- of e2e-tests voor de applicatielaag, en een klein aantal smoke-tests voor de backend-services. Testen en implementeren was een absolute hel die hele weekenden in beslag nam. Ze hadden hun prioriteiten zeker op orde.
- Bij een andere baan was er iemand die uren besteedde aan discussies over de maximale lengte van symbolen voordat tekst in een IDE werd afgebroken, een sterke mening had in het "tabs versus spaces"-debat, en ook alles zelf had gebouwd, inclusief een e-maildienst die altijd vastliep en geplande e-mails verloor zodra we meer klanten begonnen aan te nemen. Accepteer dat je magnum opus van software troep is en gebruik een service van derden die geen klanten wegjaagt.
- Ik heb ook taal- en framework-experts doorstaan. Dat zijn het type ontwikkelaars die relatief goed zijn in een zeer klein subset van technologieën, maar volledig verloren zijn in alles wat daaraan grenst, en ook volkomen onwetend zijn over de fundamenten. Dit zijn de mensen die in constante paranoia leven dat het bedrijf waarvoor ze werken het framework waarin ze expert zijn overbodig maakt en hen dwingt iets nieuws te leren. Het is eerlijk gezegd vermoeiend om een uur lang een tirade te horen over hoe geweldig Angular is in vergelijking met de middelmatigheid van React, of de inferioriteit van Kotlin in vergelijking met Java. Slik het gewoon en gebruik wat het probleem het beste oplost.
- Er zijn ook volkomen onwetende mensen die er somehow doorheen glippen, vooral in corporate omgevingen. Er was iemand die zich voordeed als een Linux-expert en aan wie ik vroeg om advies voor mijn homelab-setup. Zijn initiële verhaal was goed, waarbij hij een reeks leuke feitjes uitlegde over de verschillende distributies en systemd, maar na een paar weken discussie stopten zijn suggesties met kloppen, waardoor ik wantrouwig werd. Na hem te hebben geprikkeld met enkele fundamentele vragen over besturingssystemen en netwerken, bleek dat hij slechts oppervlakkige kennis had en dat mijn homelab-setup het meest ingewikkelde was dat hij ooit had gezien. Er was een soortgelijke situatie waarbij een bepaald stuk functionaliteit niet werkte, en aangezien ik mezelf niet goed vond in dat specifieke deel van de technologie-stack, bleek de persoon die het had geschreven en beheerde niet in staat te zijn zijn eigen werk te lezen en te debuggen.
De meeste mensen die ik hierboven noem, bekleedden op het moment dat ik met hen werkte seniorere posities dan ik, en ze allemaal beschouwden een formele opleiding in informatica en vaardigheden in algoritmisch probleemoplossend vermogen als niet belangrijk voor een succesvolle carrière. Die mindset werd op veel plaatsen waar ik werkte getolereerd of zelfs gevierd. De mensen die ik beschreef, werden niet beschouwd als slechte presteerders.
De drie categorieën van onvoldoende scholing
Als ik de groep in ons vakgebied die beweert dat er "geen noodzaak is voor opleiding, geen noodzaak voor algoritmen" zou moeten categoriseren, vallen ze in drie categorieën:
- Ze richten zich op de verkeerde dingen bij het ontwikkelen van software.
- Ze hebben een zeer oppervlakkige kennis en een gebrek aan besef van hoe moeilijk goede engineering is.
- Ze zijn volkomen onwetend en vertrouwen op goede soft skills en politiek.
Misschien ben ik te wrokvol geworden door het omgaan met mensen die shortcuts nemen waar shortcuts niet genomen zouden moeten worden.
De waarde van academische vorming en algoritmiek
Een graad in informatica aan een gerenommeerde universiteit geeft een student, in het slechtste geval, een overzicht van hoe een computer werkt en wat deze kan doen. Voor de meer gemotiveerden biedt het ook de kans om waardering te krijgen voor de diepte en complexiteit van computersystemen. Ik geloof dat het oprecht moeilijk is om dat niveau van begrip en waardering te verkrijgen door alleen maar een baan uit te oefenen, vooral in een wereld na de komst van AI.
"Leetcode grinden" zou een aangenaam tijdverdrijf moeten zijn, wanneer het niet wordt gedaan met het doel een baan te bemachtigen. Het voedt een specifiek type denken dat ingenieurs helpt om problemen in hun hoofd te visualiseren, goed gedefinieerde problemen met code op te lossen en een goede grip te krijgen op een programmeertaal. Probleemoplossing voor je plezier maakt codeer-interviews niet minder stressvol... het is immers een competitie. Competities zijn bedoeld om mensen te dwingen zich goed voor te bereiden en het beste uit zichzelf naar boven te halen. Dit is inherent stressvol. Bovendien zijn er nauwelijks economisch levensvatbare manieren om duizenden kandidaten te filteren die allemaal erg slim zijn en een hoog salaris willen verdienen.
Veiligheid in een concurrerende markt
noch een prestigieuze graad, noch een goede beheersing van algoritmisch probleemoplossend vermogen garanderen carrièresucces. Het zijn factoren die de statistieken in het voordeel van de kandidaat doen werken. In een moeilijke markt zoals die van nu bieden ze zekerheid. In het post-AI-tijdperk zullen ze een enorm concurrentievoordeel bieden, omdat ze een geweldige kans bieden voor behoud en ontwikkeling van vaardigheden.
Er zijn ook de uitschieters, de edge-cases die het voor het geld zijn gaan doen en het ver hebben gebracht, maar ik ben niemand tegengekomen die niet ongelooflijk ongelukkig en bitter is over hun baan, dus ze zijn mijn toetsaanslagen niet waard.
Financiële aspecten en het onderwijssysteem
Voor velen van ons die vanuit het niets zijn begonnen, is er ook het financiële aspect van het bereiken van de hoogste echelons van software engineering. Voordat ik me een prestigieuze opleiding en de tijd kon veroorloven om me bezig te houden met algoritmisch probleemoplossend vermogen, schreef ik software om te overleven. Bovendien beschouw ik het onderwijssysteem in een groot deel van de wereld als grotesk perverterd. Prestigieuze universiteiten neigen naar rijke kinderen en "nepo-babies" die steeds meer losgekoppeld raken van de wereld en brutaal zijn in hun omgang met de samenleving (shout out naar SBF).
Ik kan geen redelijke, erudiete oplossing bieden voor het probleem van de financiering van een opleiding, noch troost bieden. Wat voor mij werkte, was me genadeloos en onvergeeflijk op te stellen en te vechten voor mijn geld. De dingen begonnen pas goed te lopen toen ik stopte met naïef en hardwerkend te zijn, en begon mensen af te snijden en te nemen wat ik verdiende. Tot mijn verbazing brandde dit niet zoveel bruggen, maar wekte het juist bewondering en respect op. Het is een harde wereld daar buiten.
Blijf op school, wees geen tool, en leer problemen oplossen voor de liefde van het spel.