- Waarom is dit belangrijk?
- Zoek het patroon
- 1. Begrijp haar
- 2. Plan
- 3. Breek het probleem op in kleine subproblemen.
- 4. Vast?
- praktijk
- Volgens HackerRank uitgeroepen tot de 5 populairste programmeertalen
- Hoe word je een programmeur, als je echt wilt, maar er is geen ervaring
Wat betekent denken als een programmeur? In feite is alles op een efficiëntere manier om problemen op te lossen. Blogger en ontwikkelaar van mobiele applicaties Richard Rees gaven enkele tips over het ontwikkelen van een computationele manier van denken.
Waarom is dit belangrijk?
Problemen oplossen is metanavyk. Hoe gaan we ermee om? Vrij willekeurig. Als u geen systeem hebt, kunt u problemen waarschijnlijk op deze manier 'oplossen':
Probeer de oplossing.
Als het mislukt, probeer een ander.
Herhaal stap twee tot geluk.
Dus niet doen. Dit is een enorme verspilling van tijd. Je moet a) een patroon vinden en b) oefenen.
“Bijna alle werkgevers kijken allereerst hoe werknemers problemen oplossen. Deze vaardigheid is voor hen belangrijker dan kennis van programmeertalen, foutopsporing en systeemontwerp. Computationeel denken en het vermogen om met grote en complexe problemen om te gaan, worden op dezelfde manier gewaardeerd als de technische basisvaardigheden die nodig zijn om te werken, ”- HackerRank (Developer Skills Report 2018).
Zoek het patroon
“Beginnende programmeurs richten zich vaak op syntaxis, niet op het oplossen van problemen. En dit is de grootste fout. " V. Anton Sproul .
Wat moet u doen als u geconfronteerd wordt met een nieuw probleem?
1. Begrijp haar
Je moet weten wat er van je wordt gevraagd. De taken lijken ingewikkeld omdat u ze niet begrijpt. Hoe weet u of u het probleem begrijpt of niet? Probeer het in eenvoudige taal uit te leggen.
Foto: Unsplash
Dit gebeurt vrij vaak: loopt u vast aan een taak, begint u het uit te leggen en merkt u plotseling logische tekortkomingen? De meeste programmeurs zijn bekend met dit gevoel. Schrijf je probleem op papier of vertel het aan iemand.
2. Plan
Ga niet onmiddellijk over tot het oplossen van een probleem zonder een plan. Niets helpt u als u de exacte stappen niet opschrijft. Geef de hersenen tijd om het probleem te analyseren en de informatie te verwerken. Beantwoord deze vraag om een goed plan te maken:
"Stel dat er een X aan de ingang is. Welke stappen zijn nodig om Y aan de uitgang te krijgen?"
Programmeurs hebben hier een geweldig hulpmiddel voor ... Reacties!
3. Breek het probleem op in kleine subproblemen.
Dit is de belangrijkste stap. Probeer niet meteen een groot probleem op te lossen. Breek het in plaats daarvan op in kleine puzzels en los ze geleidelijk op. Begin met de eenvoudigste - dat is degene waar u het antwoord al op kent. Zodra je alles aankunt, verbind je de stippen. Zodat u het oorspronkelijke probleem kunt oplossen.
“Ik adviseer beginnende programmeurs altijd om het probleem te vereenvoudigen. Laten we ons voorstellen dat u een programma moet schrijven dat tien cijfers leest en bepaalt welk nummer het derde wordt. Voor beginners lijkt deze taak erg moeilijk, ondanks het feit dat de oplossing kennis van de basissyntaxis vereist. Probeer het probleem te vereenvoudigen als u vastloopt. Probeer in plaats van het op twee na grootste nummer alleen het grootste van allemaal te vinden. Nog steeds moeilijk? Vind het grootste aantal van drie gegeven. Of twee. Vereenvoudig het probleem totdat u begrijpt hoe u het oplost. Maak de taak vervolgens geleidelijk gecompliceerder en herschrijf de oplossing ”, - V. Anton Sprol.
4. Vast?
Nu denk je waarschijnlijk: "Wel, ja, dit is natu/index/nl/urlijk geweldig, maar wat als ik vastzit en zelfs een klein probleem niet kan oplossen?"
Foto: Unsplash
Maak je geen zorgen. Het overkomt iedereen. Het verschil is dat programmeurs hier niet boos op worden. Integendeel, ze zijn geïnteresseerd in het vinden van een oplossing. Hier zijn drie manieren om dit te doen:
Beoordeel opnieuw . Bekijk het probleem van de andere kant. Is er iets dat eenvoudiger kan worden gepresenteerd?
“Soms raken we verdwaald in de details en missen we de algemene principes die het probleem sneller kunnen oplossen. Het klassieke voorbeeld is de som van opeenvolgende getallen - 1 + 2 + 3 + ... + n. Karl Friedrich Gauss presenteerde dit in de vorm van de uitdrukking n (n + 1) / 2, en hij hoefde geen onnodige berekeningen uit te voeren. ”
Er is nog een optie - om de code volledig te herschrijven. Verwijder alles en begin opnieuw.
Verkennen . Het maakt niet uit welk probleem u nu probeert op te lossen. Iemand heeft het al eerder voor je gedaan. Je hoeft alleen maar te zoeken. Doe dit zelfs als u het probleem hebt opgelost.
praktijk
Denk niet dat je over een week een meester op dit gebied zult worden. Als je problemen goed wilt oplossen, doe dit dan regelmatig. Practice. Schaken, wiskundige problemen, sudoku, go, monopolie, videogames, cryptocotica - dit alles zal je helpen je probleemoplossende vaardigheden te perfectioneren. Bekende mensen doen dat ook. Peter Thiel speelt bijvoorbeeld schaak en Ilon Musk - in videogames .
"Ilon Musk, Reed Hoffman, Mark Zuckerberg en anderen beweren dat de games de basis hebben gelegd voor hun succes" - Mary Meeker .
Betekent dit dat je gewoon videogames moet spelen? Niet echt. Natu/index/nl/urlijk moet je nog leren. Zoek iets waar je je vaardigheden kunt oefenen.
Materialen over het onderwerp:
Volgens HackerRank uitgeroepen tot de 5 populairste programmeertalen
12 tekenen van een slechte programmeur - we identificeren een leek
Hoe word je een programmeur, als je echt wilt, maar er is geen ervaring
Hoe ik mijn baan als grafisch ontwerper opzegde en binnen vijf maanden frontend ontwikkelaar werd
Een typfout gevonden? Markeer tekst en druk op Ctrl + Enter
Waarom is dit belangrijk?4. Vast?
Waarom is dit belangrijk?
Hoe gaan we ermee om?
Wat moet u doen als u geconfronteerd wordt met een nieuw probleem?
Hoe weet u of u het probleem begrijpt of niet?
Welke stappen zijn nodig om Y aan de uitgang te krijgen?
Nog steeds moeilijk?
4. Vast?
Nu denk je waarschijnlijk: "Wel, ja, dit is natu/index/nl/urlijk geweldig, maar wat als ik vastzit en zelfs een klein probleem niet kan oplossen?