Richard Reis hat auf Medium einen sehr intelligenten Artikel über Problemlösungen mit analytischer Denke geschrieben, den kann ich jedem, der auch nur ein bisschen Ahnung vom Codieren hat, wärmstens empfehlen:
Der Titel heißt auf Deutsch:
Wie man wie ein Programmierer denkt: Lektionen in Problemlösung
Als Motto des Beitrags hat er sich ein Zitat von Steve Jobs ausgesucht:
“Everyone in this country should learn to program a computer, because it teaches you to think.” — Steve Jobs
Frei übersetzt: „Jedermann sollte es lernen einen Computer zu programmieren, denn es lehrt einem das Denken“
Reis postuliert, dass einem die Programmierung eine neue Denke zur Problemlösung beibringt, und wendet diese Erkenntnisse auf Probleme des Alltags an.
1. Verstehen
Hier findet man mein Lieblingszitat von Richard Feynman:
“If you can’t explain something in simple terms, you don’t understand it.” — Richard Feynman
Wenn du etwas nicht in einfachen Begriffen erklären kannst, hast du es nicht verstanden. Amen!
2. Planen
Um einen guten Plan zu bekommen, sollte man die folgende Frage beantworten können:
„Wenn du einen Input X hast, was sind die notwendigen Schritte, um Output Y zu erreichen?“
3. Aufteilen
Dies ist der wichtigste Schritt. Breche alle Probleme auf möglichst einfache, kleine Sub-Probleme herunter und löse diese der Reihe nach. Wenn du alle Sub-Probleme gelöst hast, verknüpfe die Lösungen, und du hast das grosse Problem gelöst!
4. Festgefahren?
Wenn man hängenbleibt und nicht mehr weiterkommt mit der Problemlösung, einen Schritt zurück machen, tief durchatmen und nochmal von vorne anfangen. Das nennt man auch Debuggen:
“The art of debugging is figuring out what you really told your program to do rather than what you thought you told it to do.”” — Andrew Singer
Frei übersetzt: „Die Kunst des Debuggens ist es, herauszufinden was du deinem Programm gesagt hast, was es tun soll, und nicht was du denkst was du ihm gesagt hast.“
5. Üben
Der Mensch lernt nur durch Übung, und natürlich erlernt man die Programmierer-Denke auch nur durch ständiges Dranbleiben und indem man sich immer neuen Herausforderungen stellt. Das kann auch auf spielerische Art und Weise geschehen, Problemlösen kann man auch in Spielen lernen, wie in Schachproblemen, Sudoku, Monopoly, Video Games usw.
Eine besonders interessante Programmierer-Spielwiese findet man bei Coderbyte, THE #1 WEBSITE FOR CODING CHALLENGES & INTERVIEW PREP
Ich geh da jetzt mal hin und suche mir eine nette Challenge zu meinem Morgenkaffee aus!