Du stehst vor einem großen Problem und bist dir sicher, dass du die Fähigkeiten nicht besitzt, es zu lösen? Manchmal fokussieren wir uns zu sehr auf die großen Probleme und die vermeintlich großen Lösungen.
Du möchtest etwas programmieren, also lernst du eine Programmiersprache, oder?
Wenn man Programmieren lernt, taucht man nicht nur in eine Sprache ein und lernt, wie man damit Probleme löst. Man lernt zunächst eine Herangehensweise, einen bestimmten Umgang mit Problemen und eine strukturierte Art der Lösungsfindung. Diese Art der Abstraktion, Analyse und Lösungsfindung ist aber nicht nur beim Programmieren, sondern in ganz vielen anderen Bereichen hilfreich.
Einen Computer dazu zu bringen, das zu tun, was man möchte, ist sowas wie die Magie unserer Zeit. Aber selbst, wenn man nicht programmiert, braucht man für die Bedienung vieler Programme und Softwarelösungen ein Verständnis dafür, was im Hintergrund geschieht.
Steve Jobs hat mal gesagt, dass man durchs Programmierenlernen erst lernt, richtig zu denken. Ich denke, gerade im Umgang mit Herausforderungen oder praktischer Problemlösung kann uns diese Herangehensweise oder Denkweise von Programmierern nützen, denn sie hilft dabei, der Überforderung zu entkommen.
Aus diesem Grund schauen wir uns einmal an, wie Programmiererinnen und Programmierer vorgehen:
Definiere das Problem
Programmierer sind Problemlöser, klar. Und wenn wir ein Problem lösen wollen, müssen wir es erstmal richtig verstehen. Hier beginnt die Arbeit der Programmiererin oder des Programmierers: Das Problem definieren.
Und nicht nur das Problem selbst, auch alles um das Problem herum wollen wir verstehen. Woher kommt das Problem? Welche Themen sind damit verbunden? Warum muss eine Lösung her? All diese Fragen sorgen dafür, dass man sich einen konkreten Überblick verschafft und den Kontext versteht. Denn die Lösung muss am Ende in diesem Kontext bestehen.
Erst mal müssen wir also dem Problem unsere volle Aufmerksamkeit schenken, es ergründen und erkunden und es verstehen.
Das Problem herunterbrechen
Nachdem man sich darüber im Klaren ist, Was das Problem ist, überlegt man sich, wie groß es ist. Das Problem kann, nein muss, in den meisten Fällen in kleinere Probleme zerteilt werden, um es lösen zu können. Entwickler stürzen sich also auf die kleinen Probleme, ohne dabei das große Ganze aus dem Blick zu verlieren.
Sollten Programmierer nicht große Probleme lösen?
Große Probleme sind meistens nur groß, weil sie aus vielen kleinen Herausforderungen zusammengesetzt sind. Diese kleinen Problemchen gilt es zu lösen, um das große Problem Schritt für Schritt zu beseitigen. Das ist nicht nur eine Herangehensweise, die uns Druck und Überforderung nimmt. Es ist wahrscheinlich auch der einzige Weg, wirklich am Ziel anzukommen.
Erst analysieren, dann programmieren
Stell dir vor, unsere Programmiererin hat das Problem erkannt, schmeißt den Computer an und beginnt, an der Lösung zu schreiben.
An welcher Lösung eigentlich? Die ist ja noch gar nicht gefunden.
Der nächste Schritt ist: eine Lösung für das Problem zu entwickeln. Erst danach wird diese programmiert.
Klar, manchmal trifft man auf häufige Probleme, bei denen man die Lösung direkt im Kopf hat. Aber die ganzen Einzelheiten des Problems sind häufig so individuell, dass eine neue Lösung her muss. Und die muss man erstmal entwerfen, optimieren und dann erst programmieren.
Die harte Arbeit der Problemlösung passiert im Kopf: Analyse, Zergliederung, Ideenfindung. Die Finger bleiben – bis auf Notizen hier und da – erstmal still. Ein sehr kreativer Prozess, bei dem man am liebsten seine Ruhe hat.
Ein ganzer Pool möglicher Lösungen
Nachdem die Analysephase durchlaufen ist, haben Programmierer vielleicht eine Idee im Kopf, aus der jetzt aber noch eine passende Lösung gebaut werden muss. Wie so oft im Leben gibt es aber nicht nur die eine Lösung. Aber vielleicht gibt es eine, die besser ist, als die anderen? Diese zu finden oder auszuwählen – auch das ist der Job unseres Programmierers.
In die Auswahl fließen mehrere Faktoren ein. Wie lange dauert es, die Lösung zu implementieren? Wie langlebig ist die Lösung? Was sind mögliche Vor- oder Nachteile? All das muss mitbedacht werden, wenn man sich für eine der möglichen Lösungen entscheidet.
Ihr merkt also, wie viel persönliche Entscheidung, Erfahrung und Abwägung in den Lösungsprozess einfließt. Auch deshalb ist es super wichtig, die Schritte der Analyse und Lösungsfindung gewissenhaft umzusetzen, um das Risiko von falschen Entscheidungen zu minimieren.
Die Arbeit in kleinere Stücke teilen
An dieser Stelle wissen unsere Programmierer, was das Hauptproblem ist, welche kleineren Probleme dazugehören und was die Lösung ist. Ist das nicht genug Vorbereitung?
Nicht unbedingt. Selbst wenn wir uns für eine Lösung entschieden haben. Auch die Lösung muss wieder in viele kleine Lösungsschritte zergliedert werden. So wird aus dem riesigen, unlösbaren Problem eine Reihe kleinerer Herausforderungen. Und wenn man ein paar dieser Schritte noch nie gegangen ist oder nicht weiß, wie sie gehen – hier lässt sich viel leichter nach Hilfe suchen.
Dieses Vorgehen vereinfacht die Sache ungemein. Alles lässt sich vereinfachen und zerlegen. Selbst wenn wir eigentlich von komplexen Problemen und komplexen Lösungen sprechen. Am Ende sind es viele kleine, manchmal simple Schritte, die geplant, umgesetzt und getestet werden, und schließlich ein großes Problem lösen.
Die Lösung optimieren
Die Lösung ist gefunden, sie ist getestet, sie funktioniert. Ist sie schön? Nein. Noch nicht. Aber das ist gar kein Problem.
Hier können wir eine unglaublich sinnvolle Herangehensweise lernen, die sich besonders Perfektionisten immer wieder vor Augen führen sollten. Erstmal muss es funktionieren, schön machen kann man es dann immer noch.
Beim Programmieren gibt es das Konzept eines MVP (Minimum Viable Product), eine Art Startversion oder Rohfassung, die den festgelegten Zweck (zum Beispiel die Lösung eines Problems) erfüllt und im Anschluss verfeinert und weiterentwickelt wird.
Dieses Konzept auf andere Bereiche zu übertragen, hilft uns, die Prioritäten richtig zu setzen. Du musst eine E-Mail schreiben, aber findest nicht die richtigen Worte? Schreib sie erstmal so auf, dass alle Inhalte drin sind. Wenn das erledigt ist, fallen dir sicher bessere Worte ein.
Immer, wenn ich mich in den kleinen Details verfange, die irgendwie noch nicht ganz ideal sind, versuche ich an das MVP zu denken und das Ganze erstmal funktional fertig zu stellen. Und wenn ich Hilfe brauche, suche ich erstmal nur nach den Funktionen, die ich dafür tatsächlich brauche. Schöner und besser mache ich’s danach. Das ist zwar wichtig, aber nicht die oberste Priorität.
So hilft dir die Herangehensweise von Programmierern
Wie ein Programmierer zu denken, hilft uns:
uns Zeit zu nehmen, das Problem und den Kontext tiefgehend zu analysieren
Das Problem alleine zu kennen, heißt noch nicht, dass man auch die kleinen Herausforderungen, Fragestellungen und Lösungsschritte schon kennt. Diese werden in einem Analyseprozess herausgearbeitet.
statt einem riesigen Problem, viele kleine Herausforderungen und Lösungsschritte zu sehen
Riesige Probleme überfordern uns. Bei genauer Betrachtung sind sie aber gar nicht mehr so riesig. Programmierer lösen viele kleine Probleme, verbessern ihre Fähigkeiten darin und bauen damit Schritt für Schritt Lösungen für große Probleme.
Prioritäten richtig zu setzen, denn erst muss die Lösung funktionieren, dann wird sie optimiert
Für Unternehmerinnen und Selbständige ist es wichtig, sich immer wieder auf den Zweck oder das Ziel ihrer Tätigkeit zu fokussieren und das laute Drumherum auch mal auszublenden. Die Priorisierung von Programmierern hilft dabei: Erstmal muss es funktionieren, danach kann es verschönert und optimiert werden.
ein Problemlöser-Mindset zu entwickeln
Von Programmierern lernen wir einen produktiven Umgang mit Herausforderungen. Sie vereinfachen, zerlegen, planen und setzen schrittweise Lösungen um. Das ermöglicht ihnen, Probleme zu lösen, die von außen wahnsinnig komplex wirken.