Frankenstein
Kennis is technologie kennen, wijsheid is het begrijpen ervan
Vrij naar Ben "The Hosk" Hosking, gepubliceerd in ITNEXT, 19 jul. 2024
Kennis is weten dat tomaat een vrucht is. Wijsheid is weten dat je het niet in een fruitsalade moet doen — Brian O'Driscoll.
Het is voor ontwikkelaars eenvoudig om kennis te vergaren in softwareontwikkeling, uit te leggen welke technologie ze moeten gebruiken en waar het voor is.
Kennis van technologie garandeert niet dat een ontwikkelaar die kennis kan gebruiken om software te maken of dat ze software kunnen maken op een manier die geen problemen veroorzaakt. De code en software van vandaag is het probleem van morgen.
Wijsheid, begrip en ervaring laten je domheid vermijden. Zonder wijsheid hebben ontwikkelaars blinde vlekken, hun acties leiden tot onbedoelde gevolgen.
Kennis is gemakkelijk te verkrijgen, wijsheid vecht en zorgt ervoor dat je het verdient.
Frankenstein
“Kennis is weten dat Frankenstein niet het monster is. Wijsheid is weten dat Frankenstein HET monster IS.” ― Anoniem
Het boek Frankenstein is opmerkelijk, een futuristisch sciencefictionverhaal geschreven in 1818 door Mary Shelley toen ze 18 was. Elektriciteit werd nog niet volledig begrepen, voordat Faraday's wet van inductie en gloeilampen bestond. De levensverwachting van mensen was 40-50 jaar, dus het idee om elektriciteit te gebruiken om leven te creëren was behoorlijk radicaal.
Dokter Frankenstein wil de kennis van het leven verwerven, om een levend persoon te creëren met behulp van lichaamsdelen en elektriciteit. Kennis op zichzelf is noch goed noch slecht, maar het kan leiden tot goede en slechte daden.
Het monster is bang en eenzaam en niet uitgerust om in de wereld te leven. Het monster ziet er afschuwelijk uit, maar is intelligent en welbespraakt. Mensen die het monster zien, zijn bang en bang voor hem.
Het monster vermoordt iemand en bekent dit aan Dr. Frankenstein. Het monster vraagt Dr. Frankenstein om een partner voor hem te creëren omdat hij eenzaam is, maar Dr. Frankenstein wil geen twee monsters creëren.
Frankenstein laat zien dat kennis krachtig kan zijn. Kennis zonder wijsheid kan gevaarlijk zijn als je de consequenties en effecten van je acties/idee niet overweegt.
Kennis die zonder wijsheid wordt gebruikt, kan tot spijt leiden. Dokter Frankenstein heeft spijt van het creëren van het monster en geeft zijn creatie nooit een naam.
Ik en andere ontwikkelaars hebben de wijsheidsklok vaak te laat gezet. Wijsheid vermijdt problemen, slimme ontwikkelaars moeten de problemen daarna oplossen.
Het is niet het verwerven van kennis dat gevaarlijk is, maar hoe Dr. Frankenstein de kennis gebruikt om een monster te creëren zonder een plan te hebben om het te verzorgen.
Houd altijd rekening met de knock-on-effecten van een actie of het veranderen van iets. Voordat je code verandert, een ontwerp verandert, moet je begrijpen wat het doet en de afhankelijkheden ervan.
Voordat u code verwijdert of wijzigt, denk aan Chesterton's Fence. Als code bestaat, is er een reden voor. Als u iets verandert zonder te begrijpen wat het doet, kunt u niet zien of het werkt of dat de afhankelijke functionaliteit kapot is. Dit is waarom het toevoegen van nieuwe code of het wijzigen van bestaande code bugs kan creëren in andere delen van de codebase.
Wijsheid is om te overwegen wat er zou gebeuren als hij een persoon zou creëren die is samengesteld uit lichaamsdelen, de gevolgen en bijwerkingen.
Kennis is om technologie te kennen, wijsheid is om het te begrijpen
"Veel ontwikkelaars verwerven kennis, weinigen verwerven wijsheid"
De weg naar wijsheid begint met onwetendheid, gaat door kennis en met actie en denken bereikt wijsheid. Softwareontwikkeling is een vaardigheid, je kunt het alleen verbeteren door software te maken.
Vaardigheden zijn als sport, softwareontwikkeling, presenteren, etc. Je hebt meer nodig dan kennis, je moet het doen om te begrijpen hoe je de kennis implementeert en ze omzet in acties.
Het volgt dit pad
Niet alle ontwikkelaars bereiken de wijsheidsfase van onderwerpen in softwareontwikkeling.
Kennis kan gevaarlijk zijn
De grootste vijand van kennis is niet onwetendheid, het is de illusie van kennis. — Daniel J. Boorstin
Kennis zonder wijsheid kan gevaarlijk zijn voor uzelf en anderen, dit is acties hebben gevolgen en onbedoelde neveneffecten. Wanneer u alleen kennis hebt, bent u een eerste niveau denken, u kunt alleen de directe gevolgen van uw acties zien.
Voorbeelden in softwareontwikkeling zijn hard coderen, magische getallen, geen documentatie schrijven, geen broncontrole gebruiken, geen unittests. Stappen overslaan en snelkoppelingen nemen kan aanvoelen alsof u sneller vooruitgang boekt (eerste niveau denken). Tweede niveau denken overweegt de gevolgen en effecten van uw acties, tweede niveau denken vraagt en wat dan?
Geen broncontrole betekent dat u niet terug kunt om oude code te zien of begrijp wat er is gewijzigd. Als de ontwikkelomgeving per ongeluk wordt verwijderd, kun je de code niet herstellen.
Hard coderen gaat in het begin snel, maar elke wijziging moet de volledige ontwikkelingscyclus doorlopen. Een kortetermijnwinst, maar een langetermijnverlies.
Een beetje kennis is gevaarlijk, vooral als die persoon krappe deadlines en een beheerdersaccount heeft.
Kennis versus begrip in softwareontwikkeling
"Het is niet wat je niet weet dat je in de problemen brengt. Het is wat je zeker weet dat gewoon niet zo is." Mark Twain
Kennis komt van het lezen van artikelen, het bekijken van video's, het behalen van certificeringen, trainingen en andere methoden om kennis te vergaren. Kennis helpt je de naam van technologie te begrijpen, hoe technologie werkt, maar het geeft je geen praktische vaardigheden over hoe je het moet gebruiken.
Om kennis om te zetten in begrip en wijsheid, moet je het gebruiken om software te maken. Het maken van software helpt je te begrijpen hoe het echt werkt, je kunt fouten maken, je hebt successen en je doet ervaring op.
Je ontwikkelt vaardigheden in softwareontwikkeling door software te maken, je kennis toe te passen of kennis te vergaren. Nadat ontwikkelaars de basis onder de knie hebben, richten ze zich op andere gebieden en verbreden ze hun kennis en verdiepen ze hun expertise.
Wijsheid komt voort uit het begrijpen van de effecten en consequenties van acties. Ontwikkelaars moeten nadenken, reflecteren en leren van mislukkingen en successen. Fouten zijn pijnlijk en we worden gemotiveerd om de pijn in de toekomst te vermijden.
Het verschil tussen wijze en slimme ontwikkelaars is ervaring en straatwijsheid. Wijsheid helpt je om problemen te voorkomen en goede praktijken te implementeren om technische schulden te beheersen.
Tekenen van kennis zonder wijsheid
De persoon die zegt dat hij weet wat hij denkt, maar het niet kan uiten, weet meestal niet wat hij denkt. Mortimer Adler
Ontwikkelaars die kennis hebben, maar geen wijsheid, hebben moeite om technische oplossingen op een eenvoudige manier uit te leggen die een niet-technisch persoon kan begrijpen. Ze kennen de naam, maar ze begrijpen niet hoe het werkt.
Mensen gaan ervan uit dat ze dingen begrijpen, maar beseffen pas dat ze dat niet doen als ze het proberen uit te leggen.
Ze praten en praten en praten. Springen van het ene punt naar het andere met zinnen die goed klinken (ish), maar niets lijken te zeggen.
Er is meestal geen structuur, geen logische volgorde waardoor het publiek verward en overweldigd raakt. Dit creëert de illusie dat er communicatie heeft plaatsgevonden, maar in werkelijkheid begrijpt het publiek niet wat de ontwikkelaar zegt.
Dit geeft het publiek alle punten, niet de belangrijkste punten.
Een ontwikkelaar met alleen kennis geeft je alle punten over een onderwerp.
Een ontwikkelaar met wijsheid geeft je alleen de belangrijkste punten in eenvoudige woorden.
Waarom gebeurt dit?
Kennis begrijpt de namen van technologie en wanneer de technologie wordt gebruikt.
Wijsheid begrijpt wat technologie doet, hoe het werkt en waarom het op die manier werkt.
Wijsheid is begrijpen en weten wanneer en hoe technologie moet worden gebruikt.
De snelle manier om wijsheid te krijgen, is door software te maken en vervolgens te reflecteren. Het creëren, falen, repareren geeft je snelle feedback die acties combineert met feedback.
Doen is niet genoeg, je hebt reflectie nodig om de logica te begrijpen en te definiëren.
Wanneer je een technologie begrijpt, kun je deze uitleggen in eenvoudige woorden die het publiek zal begrijpen en in minder woorden.
Hoe meer woorden een ontwikkelaar gebruikt om een technisch onderwerp uit te leggen, hoe minder hij het begrijpt en hoe meer hij het publiek in verwarring brengt.
Richard Feynman zegt dat je iets echt moet begrijpen door het uit te leggen op een manier die een negenjarig kind zou begrijpen en in je eigen woorden.
Door anekdotes of metaforen te gebruiken, kan het publiek technische uitleg begrijpen door te gebruiken wat iemand al weet om hen te helpen iets nieuws te begrijpen.
Ontwikkelaars die technologie niet echt begrijpen, kunnen dit niet omdat ze het zelf niet begrijpen. Ze hebben een kwetsbare kennis die ze niet gemakkelijk kunnen uitleggen omdat ze het niet diepgaand genoeg begrijpen.
Hoe gaat een ontwikkelaar van kennis naar wijsheid?
Kennis is het kennen van technologie, functies en ontwerpen. Wijsheid is het begrijpen ervan en in staat zijn om je kennis toe te passen om software te maken.
Begrip komt voort uit nadenken, leren en reflecteren op wat je hebt geprobeerd en de ervaring van het maken van software.
Wijsheid is stilstaan bij en leren van je fouten, mislukkingen en successen. Je kunt geen software maken zonder bugs, problemen en fouten
Het gevaar van kennis zonder wijsheid is dat je gemakkelijk fouten maakt die je niet ziet aankomen. Ervaren ontwikkelaars kennen goede praktijken en begrijpen waarom het goede praktijken zijn (het doel).
Senior ontwikkelaars zijn technische leiders die de normen bepalen en de ontwikkelingspraktijken creëren die junior ontwikkelaars moeten volgen. Wijsheid komt niet alleen voort uit het volgen van goede praktijken, maar ook uit het begrijpen ervan.
Conclusie
Kennis geeft de illusie van begrip, je leest technische artikelen en denkt dat je het kunt. Wanneer je van theoretische kennis naar praktische kennis gaat, realiseer je je dat er een gat is tussen kennis over technologie en het gebruiken van technologie.
De kaart is niet het gebied, de overgang van hello world kennis en voorbeelden naar echte software is complex, moeilijk en vol met ongeziene valkuilen.
Begrip en wijsheid komen voort uit ervaring met het maken van software. Fouten maken, consequenties, afhankelijkheden en bijwerkingen begrijpen, zijn allemaal onderdeel van het proces van het verkrijgen van wijsheid.
Mijn herinnering aan het laten werken van integraties voelde alsof ik elke manier probeerde die niet werkte, totdat alleen de juiste manier overbleef. Door snel falen/feedback begrijp je hoe technologie werkt.
Kennis is geweldig, maar vergeet niet dat het de eerste stap is op het pad naar wijsheid.