Dieser Beruf erfordert eine Menge Übung, und alle erfahrenen Entwickler bestätigen dies. Die Grundlage, der alleinige Beginn und die Fortsetzung der Programmierung und Entwicklung bedeuten, dass diese Fachleute ihre Problemlösungsfähigkeiten täglich verbessern. Die Art und Weise, wie Entwickler denken, sprechen und kommunizieren (einschließlich Aktivitäten, die den Geist trainieren), fasst zusammen, wie sie Probleme lösen und während einer Aufgabe vorausdenken.
Das Lösen von Problemen geschieht in den meisten Fällen nicht absichtlich, man könnte sagen, es ist eine Art Denkweise, eine Art Neugierde, den Dingen möglichst effizient auf den Grund zu gehen. Eine Lösung zu finden ist eine Sache, aber die Freude an der Analyse und am Überblick ist das, was den gesamten mentalen Prozess der Problemlösung in der Entwicklung abrundet.
Daraus können wir schließen, dass es für Entwickler nicht ausreicht, nach einfachen Lösungen zu suchen, sondern dass sie sich geistig und manchmal sogar stundenlang mit dem Thema beschäftigen müssen, sobald sie sich darauf konzentrieren. Um in der Entwicklung (und Programmierung) zu arbeiten, braucht man vor allem eine große Leidenschaft dafür, viel Geduld und die Fähigkeit, sich auf lange Denkphasen einzulassen und sich in ununterbrochene Konzentrationswellen zu stürzen. Später ergibt sich daraus auch excelling in a specific development field.
Im folgenden Artikel werden wir einige der besten Problemlösungsfähigkeiten erwähnen, die alle großen Softwareentwickler gemeinsam haben, und einige Kommentare dazu abgeben, wie all dies erreicht werden kann.
Strategisches und paralleles Denken
Strategisches Denken ist eines der besten Dinge, die man erwerben, beherrschen, lernen und üben kann. Diese Art des Denkens, bei der man etwas im Voraus erkennen und vorhersehen kann, lehrt einen, Risiken im Voraus zu kalkulieren und fehlerhafte Manöver im Nachhinein zu vermeiden. Es handelt sich um eine logische, rationale und kalkulierte Denkweise, bei der eine analytische Denkweise zum Tragen kommt.
Paralleles Denken war ein Begriff, der den antiken Philosophen und ihren Ansätzen gut bekannt war. Es geht darum, in mehr als nur eine Richtung zu denken, ähnlich wie bei einer Debatte, aber ohne scheinbar negative Strategien, die an Angriffe und Abwehrhaltung erinnern. Stattdessen werden parallel Optionen erkundet, mögliche Lösungen durchdacht, Fakten berücksichtigt, bis man schließlich zu einer Schlussfolgerung kommt.
Strategisches und paralleles Denken ist zweifellos ein wichtiger Vorteil, wenn man etwas Bestimmtes lernen oder üben muss, und wir können davon ausgehen, wie wertvoll sie in der Entwicklungsbranche sind.
In diesem Fall kann sich ein guter Entwickler zum Beispiel auf eine Sache konzentrieren, aber dennoch mehr als eine Aufgabe in einem bestimmten Moment erledigen. Wenn Entwickler klicken und tippen, erahnen sie bereits, was als Nächstes benötigt wird oder worauf sie sich konzentrieren müssen, um Bugs oder Fehler effizient zu beheben. Auf diese Weise denken die Entwickler an alle möglichen Interaktionen auf dem Bildschirm und nutzen ihre "Perspektiven", um vorauszudenken und die bestmöglichen Aktionen/Lösungen anzuwenden.
Wiederverwendung von Lösungen
Wenn etwas in der Vergangenheit funktioniert hat, warum kann es nicht wieder funktionieren? Die Entwickler haben kein Problem damit, eine frühere effiziente Lösung zu verwenden. Solange sie funktioniert und den gesamten Prozess nicht unterbricht, kann und sollte sie wiederverwendet werden, um ein gewünschtes Ergebnis zu erzielen.
Problemlösungen müssen nicht immer als komplex wahrgenommen werden, und das berühmte "Occam's Razor" der offensichtlichen, einfachen und schnellen Lösungen kann in vielen Entwicklungsprozessen (wieder) angewendet werden.
Große Entwickler verwenden Tools und Praktiken, die bereits verwendet werden und verfügbar sind und vereinfachen so ihre Arbeit. Wo es möglich ist (und wo die Aufgabe nicht erfordert, etwas von Grund auf neu zu erstellen), erzielen sie mit weniger Ressourcen hervorragende Ergebnisse.
Die Abstraktion meistern
Jeder kann seine Problemlösungsfähigkeiten verbessern, indem er sich in "Abstraktion" übt. Nehmen wir also an, dass sich paralleles und strategisches Denken darauf bezieht, sich mögliche Situationen, Varianten zu bestehenden Bedingungen und sogar mögliche Konsequenzen einer bestimmten Handlung vorzustellen. In diesem Fall steht das Abstrahieren auf der anderen Seite des Spektrums - ein tiefer Fokus auf das Wesentliche. Lassen Sie uns das näher ausführen.
Die Abstraktion ist für Entwickler natürlich von entscheidender Bedeutung, und sie ist Teil der für diese Branche erforderlichen Mentalität. In der Entwicklung, genauer gesagt in der OOP (Object Oriented Programming), bedeutet dies, dass der Entwickler ausschließlich mit den wichtigsten Daten arbeitet und den Rest der Daten, der zu diesem Zeitpunkt nicht wichtig ist, "ausblendet".
Abstraktion ist einer der drei Aspekte von OOP, die beiden anderen sind "Kapselung" (eng kontrollierter Zugriff und Verbergen spezifischer Daten) und "Vererbung" (Übertragung von Daten von "Eltern" zu "Kindern").
Aber warum und wie ist Abstraktion eine wesentliche Problemlösungsfähigkeit? Das ist ganz einfach. Der Entwickler konzentriert sich intensiv auf den Kern der spezifischen Aufgabe, ohne sich von Informationen ablenken zu lassen, die er in diesem Moment nicht braucht. Das spart Zeit und reduziert die Komplexität insgesamt. Vielleicht geht dies Hand in Hand mit dem Motto "work smart, not (always) hard".
Natürlich ist es in den meisten Fällen praktisch, etwas zu kennen oder wiederzuverwenden, oder es ist sogar notwendig. Aber ohne die Neugier, die eine weitere Karriere vorantreibt, sind Entwickler manchmal nicht motiviert genug, diesen Gedanken in die Praxis umzusetzen. Dies gilt insbesondere für die Informatik und die Entwicklung, wo das Schreiben von sauberem Code oder sogar das Verständnis der zugrunde liegenden Struktur der Anwendungsentwicklung über den Erfolg oder Misserfolg eines Produkts vor der Markteinführung entscheiden kann.
Große Entwickler sind neugierig; sie wollen sich in die Tiefe vertiefen, genauso wie sie Tools erkunden und abschätzen wollen, wie nützlich sie für ihre Aufgaben sind. Dies könnte für eine andere Programmiersprache gelten als die, die sie bereits beherrschen, für das Ausprobieren einer neuen Technik im Entwicklungsprozess oder sogar für das Experimentieren mit verschiedenen Frameworks.
Idealerweise sollten großartige Entwickler alle Ins und Outs der Branche kennen - wenn ein Framework nicht funktioniert, probieren sie ein anderes aus; wenn eine Programmiersprache für das aktuelle Projekt nicht ideal ist, ist sie vielleicht die beste Lösung für ein anderes.
Eine Denkweise des Datenflusses einnehmen
Oder, um eine Lösung für ein Problem zu finden, das den Datenfluss betrifft. Das bedeutet, dass der ausgezeichnete "Problemlöser" sich den Datenfluss und die Systeme in verschiedenen Szenarien vorstellt. Genauer gesagt, die Vorstellung, wie Daten funktionieren, ist nicht die einfachste Aufgabe - es gibt Einbettungen, Manipulationen, Änderungen und Datentransformationen in mehreren Schritten des App-Entwicklungs- Prozesses.
Ein guter Entwickler konzentriert sich auf das Ergebnis, indem er das Hauptziel und die Unterziele visualisiert. Oftmals ist die Denkweise hier, dass man sich Diagramme vorstellt und in Form von Strukturen und Mengen denkt, die ineinander eingebettet sind oder in einer Art Hierarchie. Zusammengefasst geht es darum, darüber nachzudenken, wie sich Daten durch das System bewegen.
Arbeitsteilung und Vereinfachung
Entwickler wissen, dass "der Teufel im Detail steckt", oder dass die Konzentration auf kleinere Aufgaben zur Lösung des großen Problems führt, während man sich gleichzeitig auch auf das große Ganze konzentriert.
Zum Beispiel ist die Korrektur von Fehlern im Code eine Möglichkeit, dies zu erklären. Die Entwickler suchen nach dem Fehler, indem sie den gesamten Code von Anfang bis Ende durchgehen - das Problem kann etwas so winziges wie ein Komma oder ein Punkt an der falschen Stelle sein.
Damit ein guter Entwickler ein bestimmtes Problem lösen kann, muss er zunächst das Problem verstehen, und das tut er, indem er zum Beispiel den gesamten Code oder jede zuvor abgeschlossene kleine Aufgabe durchgeht. Durch die Aufteilung der Aufgaben wird die Komplexität der Arbeit verringert und der Entwickler kann sich besser auf mögliche kleinere Probleme konzentrieren, die auf dem Weg auftreten.
Auch in der Freizeit gibt es Herausforderungen
Nicht zuletzt beschäftigen sich fast alle großartigen Entwickler auch mit geistig anspruchsvollen Freizeitaktivitäten (und sind darin hervorragend). Aktivitäten wie Schach, Kartenspielen und strategische Brettspiele sind sehr nützlich, wenn man über den nächsten Zug nachdenkt und darüber, was die anderen Spieler/Gegner als nächstes tun könnten. Es ist kein Wunder, dass einige großartige Entwickler auch hervorragende Gamer sind.
Jeder kann davon profitieren, wenn er seine alltäglichen Freizeitaktivitäten um eine kleine Herausforderung bereichert, nicht nur große Softwareentwickler. Diese spielerischen Aktivitäten heben die Kommunikationsfähigkeiten auf eine ganz neue Ebene, da es hier um Konzentration, Disziplin, Berechnungen und logisches Denken geht. Was wir aus solchen Aktivitäten lernen, kann auch eine Lösung für ein alltägliches Problem sein, nicht nur für die Probleme, die bei der Entwicklung auftreten.
Interessanterweise wissen großartige Entwickler bereits, wie man taktvoll, logisch und mit Vorfreude auf das, was als Nächstes kommt, denkt, so dass sie diese Denkweise sogar bei der Wahl ihrer oben genannten Freizeitaktivitäten anwenden.
Die Quintessenz
Gute Problemlösungsfähigkeiten kombinieren verschiedene Fähigkeiten, Erfahrungen, Denkweisen, Persönlichkeitsmerkmale und Interessen.
Problemlösungskompetenz ist ein unersetzliches Gut, sowohl beruflich als auch persönlich. Und um ehrlich zu sein, haben alle großartigen Entwickler hervorragende Problemlösungsfähigkeiten. Aber eines ist sicher: Übung macht den Meister bei der Lösung von Problemen.