Von Super Neuro
Steve Jobs hat ein berühmtes Zitat: „Jeder in unserem Land sollte wissen, wie man programmiert. Es lehrt einen, wie man denkt.“
Die Idee besteht nicht darin, von jedem zu verlangen, die Arbeit eines Programmierers zu erledigen, sondern darin, über Probleme wie ein Programmierer nachzudenken und sie zu lösen.In westlichen Ländern wie den USA und Italien ist Programmieren Teil des Lehrplans in Grundschulen, weiterführenden Schulen und sogar in Kindergärten geworden. Im Jahr 2014 schrieb Obama persönlich einen Code, um Menschen zu ermutigen, Programmieren zu lernen und das Programmierdenken zu kultivieren.
Viele Menschen, darunter auch einige Juniorprogrammierer, stehen vor komplexen Problemen. Wir sind es gewohnt, von historischen Erfahrungen auszugehen und nach dem Zufallsprinzip verschiedene Lösungen auszuprobieren. Ob uns das gelingt, hängt davon ab, ob wir über genügend Erfahrung verfügen. Sie suchen selten nach Problemlösungen aus einer Rahmenperspektive.
Dadurch wird der Problemlösungsprozess zeit- und arbeitsintensiv und das Endergebnis ist möglicherweise nicht gut.
HackerRank erwähnte in seinem Bericht zu Entwicklerkompetenzen aus dem Jahr 2018, dass, ohne die Bedeutung der Technologie zu betonen, eine Framework-Denkweise oder die Fähigkeit, große und komplexe Probleme aufzuschlüsseln, wichtiger sei als die Beherrschung von Programmiersprachen.
Der Vorteil vieler erfahrener oder guter Programmierer im Problemlösen liegt in diesem Rahmendenken, das auch als Programmiererdenken oder Programmierdenken verstanden werden kann. Diese Denkweise ist nicht nur beim Programmieren anwendbar, sondern kann auch jedem anderen dabei helfen, Probleme beim Programmieren zu lösen.
Was denkt der Programmierer?
Das Buch „The 4-Hour Chef“ von Tim Ferriss könnte Ihnen als Inspiration dienen, es scheint jedoch noch keine chinesische Übersetzung dieses Buches zu geben. Dieser Autor ist ein berühmter Effizienzexperte und hat einige klassische Reden bei TED gehalten. Er schrieb auch „Vier Stunden Fitness pro Woche“ und „Vier Stunden Arbeit pro Woche“, um Menschen zu einem effizienten Leben anzuleiten.
Darüber hinaus gibt es von V. Anton Sprauls „Think Like a Programmer“ (englischer Titel: Think Like a Programmer) eine chinesische Übersetzung, was die Lektüre erleichtert.
Nachfolgend wird das Programmierdenken erläutert, das aus den folgenden Aspekten verstanden werden kann:
1. Verstehen Sie das Problem
Der Grund, warum ein Problem schwierig ist, liegt darin, dass Sie es nicht gut genug verstehen. Der berühmte Physiker Richard Feynman sagte einmal:„Wenn man etwas nicht einfach erklären kann, versteht man es nicht.“
Wenn Sie also ein Problem lösen, müssen Sie das Problem zunächst verstehen, bis Sie es in einfacher Sprache beschreiben können.
Viele Programmierer haben diese Erfahrung gemacht: Wenn sie anderen ein Problem erklären, stoßen sie immer auf logische Schlupflöcher, die ihnen vorher nicht aufgefallen sind. Und diese Entdeckungen können für sie der Schlüssel zur Lösung des Problems sein.
2. Machen Sie einen Plan
Das heißt: Formulieren Sie Schritte zur Lösung des Problems und führen Sie diese nicht blind aus, ohne die Schritte zur Lösung des Problems zu durchdenken.
Für Programmierer bedeutet dies, dass Sie beim Programmieren nicht einfach mit dem Schreiben von Code beginnen, sondern zunächst Ihre Gedanken klären, das Problem analysieren, die Informationen verarbeiten und die notwendigen Schritte entwickeln, um X einzugeben und Y auszugeben.
3. Das Problem analysieren
Wenn Sie mit einem Problem konfrontiert sind, das nicht sofort gelöst werden kann oder relativ komplex ist, besteht der beste Ansatz darin, es in mehrere Unterprobleme zu zerlegen und dann mit der Lösung des einfachsten Problems zu beginnen. Sobald Sie diese Teilprobleme gelöst haben, wird das große Problem durch die Verbindung dieser Probleme problemlos gelöst.
Beispielsweise wird ein Juniorprogrammierer gebeten, ein Programm zu schreiben, um aus 10 Zahlen die drittgrößte Zahl zu finden. Obwohl das Programm nur einige grundlegende Programmiersprachen erfordert, ist es für jemanden, der neu in der Programmierung ist, immer noch schwierig.
An dieser Stelle können Sie versuchen, das Problem aufzuschlüsseln, anstatt direkt nach der drittgrößten Zahl zu suchen.
Bestimmen Sie beispielsweise zuerst die größte Zahl unter 10 Zahlen, suchen Sie dann die größte unter drei Zahlen oder suchen Sie die größte unter zwei Zahlen. Ordnen Sie dann die größten Zahlen dieser Gruppen neu an, bis die drittgrößte Zahl ermittelt ist.
Zerlegen Sie ein großes Problem in die kleinste Einheit, die Sie direkt beantworten können. Verbinden Sie dann diese Unterprobleme und erweitern Sie sie leicht, um die endgültige Antwort zu erhalten.
4. Schwierigkeiten bewältigen
Was sollen wir tun, wenn wir ein großes Problem in mehrere Unterprobleme zerlegen und nicht einmal die Unterprobleme lösen können? Ziehen Sie sich jetzt nicht aus Angst zurück, sondern suchen Sie weiter nach Lösungen für das Problem.
Debuggen: Dies bedeutet, jeden Schritt der Lösung erneut zu überprüfen, um festzustellen, ob die Lösung einen Fehler enthält. Wenn ja, finden und lösen Sie es. Dieser Vorgang wird in der Programmiersprache „Debuggen“ genannt.
Neubewertung: Wenn kein Fehler gefunden wird, untersuchen Sie das Problem aus einer anderen Perspektive erneut, um festzustellen, ob es eine allgemeinere Lösungsmöglichkeit gibt. Beachten Sie, dass Neubewertung hier bedeutet, die Lösung aus einer völlig neuen Perspektive zu bestimmen.
C. Jordan Ball, der auf der Programmier-Challenge-Website Coderbyte oft unter den ersten drei rangiert, sagte einmal: „Manchmal verlieren wir uns in den Details eines Problems und ignorieren den allgemeinen Lösungsansatz. Wenn man beispielsweise 1+2+3+…+n berechnet, kann man mit der Formel n(n+1)/2 schnell zum Ergebnis kommen und sich langwierige und sogar fehlerhafte Additionen ersparen.“
Studieren Sie historische Fälle: Tatsächlich wurden viele Probleme bereits von anderen Personen beantwortet und gelöst. Das Studium ihrer Fälle kann Ihnen bei der Lösung vieler ähnlicher oder neuer Probleme helfen. Darüber hinaus können Sie dadurch Ihre Denkweise über Probleme während des Forschungsprozesses verfeinern, was für die Lösung anderer Probleme sehr hilfreich ist.
Wie kann man das Denken eines Programmierers fördern?
Wenn Sie ein hervorragender Problemlöser werden möchten, besteht der beste Weg darin, Ihr Denken und Ihre Fähigkeiten zur Problemlösung in Ihrem täglichen Leben zu entwickeln. Vieles hängt zusammen. Die Fähigkeit, Problem A zu lösen, kann auch auf Problem B angewendet werden.
Mit anderen Worten: Sie können Ihre Problemlösungsfähigkeiten trainieren und Ihre Problemlösungsmentalität auf viele Arten und Weisen kultivieren, die nicht viel kosten, beispielsweise durch Spiele oder andere Dinge, die Sie interessieren.
PayPal-Gründer Peter Thiel kultiviert diese Denkweise oft beim Schachspielen und Elon Musk durch Videospiele. Darüber hinaus haben auch bekannte Unternehmer wie der Linkedin-Mitbegründer Reid Garrett Hoffman und der Facebook-Gründer Mark Zuckerberg erklärt, dass sie beim Spielen von Videospielen Lösungen für praktische Probleme gefunden hätten.
Diese Beispiele sollen nicht heißen, dass Sie durch das Spielen von Spielen erfolgreich sein können. Ich möchte Ihnen aber nur sagen, dass es nicht schwierig ist, ein Denken zur Problemlösung zu entwickeln, und dass Sie dies auch bei einigen Mikroproblemen im Leben erreichen können.
Wenn Sie Programmierer sind oder sich für das Programmieren interessieren, können Sie außerdem die Programmierherausforderungen auf Coderbyte ausprobieren, die sehr hilfreich sind, um Ihr Programmierdenken zu verbessern.
Stellen Sie sich dem Problem, analysieren Sie es und lösen Sie es dann Schritt für Schritt,das heißt„Programmierendes Denken“.
Obwohl ich nicht behaupten möchte, dass alle Programmierer so denken, ist diese Methode tatsächlich sehr effektiv. Und je mehr Probleme Sie haben, desto besser können Sie sie lösen.
Aus dieser Sicht liegt der Grund, warum erfahrene Programmierer höhere Gehälter als jüngere Programmierer verdienen, möglicherweise nicht an ihren Programmierkenntnissen oder -tools, sondern an ihrer unterschiedlichen Denkweise. Viele Unternehmen legen bei der Einstellung Wert auf Berufserfahrung, was in diesem Zusammenhang ebenfalls ein Faktor ist.