Zuallererst ist dies nicht die generische Frage "mache mich zu einem besseren Programmierer", obwohl das Ergebnis der Fragestellung ähnlich zu sein scheint . Auf programmers.SE habe ich gelesen und gesehen, wie diese hier , hier , hier , hier und hier geschlossen wurden .
Wir alle wissen, dass es eine Vielzahl allgemeiner Vorschläge gibt, mit denen Sie Ihre Programmierkenntnisse verbessern können (z. B. SO lesen, empfohlene Bücher lesen, Blogs folgen, sich an Open-Source-Projekten beteiligen usw.). Das ist nicht was ich will.
Ich erkenne auch die aktive Leserschaft auf dieser Website an und hoffe, dass dies zu meinen Gunsten funktioniert, indem ich einige gute Antworten gebe. Aus der Lektüre der Korrespondenz geht hervor, dass es eine große Anzahl erfahrener Leute gibt, die in programmierbezogenen Bereichen arbeiten oder gearbeitet haben. Und die meisten von Ihnen können Ihre Gedanken auf beredte und prägnante Weise übermitteln.
Ich habe kürzlich den Unterschied zwischen jemandem, der programmieren kann, und einem Programmierer, der wirklich denken kann, bemerkt . Ich weigere mich zu glauben, dass wir uns einfach einem lebenslangen schwammartigen Verhalten unterziehen müssen, um als Programmierer großartig zu werden (dh alles, was mit unserem Fach zu tun hat, durch Lesen, Zuhören, Zuschauen usw. aufnehmen). Ich würde sogar sagen, dass Sie einfach jedes einzelne Programmierkonzept kennen, mit dem Sie Problem X schneller lösen können als jeder andere. Wenn Sie nicht denken können , schränken Sie sich enorm ein - Sie sind nur ein schneller Roboter.
Ich mag es zu glauben, dass es ein ganz anderes Gesicht gibt, ein großartiger Programmierer zu sein, das nichts damit zu tun hat, wie viel Sie über das Programmieren wissen, aber es ist, wie gut Sie neue Konzepte verflechten und auf Ihren Programmierberuf oder Ihr Hobby anwenden können. Ich habe niemanden gesehen, der sich mit dieser Facette des menschlichen Verstandes und der Programmierung befasst oder sie anspricht. (Ja, es ist auch möglich, dass ich nicht genau genug nachgesehen habe - tut mir leid, wenn das der Fall ist.)
Also, für alle, die sich Gedanken gemacht haben über das, was ich oben erwähnt habe - oder vielleicht sind es alle hier, weil ich in meiner persönlichen / beruflichen Entwicklung ein wenig zurückgeblieben bin - was sind Ihre Vorschläge zum Erlernen des Denkens ? Was haben Sie außer der üblichen Lektüre noch getan, um besser zu sein als die anderen Menschen in Ihrem / unserem Bereich?
Antworten:
Meine Vorschläge zum Erlernen des Denkens:
Und was noch wichtiger ist, die Sprache bestimmt, woran wir nicht denken können.
quelle
Aus meiner Erfahrung kommt es auf zwei Dinge an:
Darüber hinaus ist jeder ziemlich unterschiedlich darin, wie er über das Programmieren denkt oder neue Programmierfähigkeiten erlernt. Ich schlage vor, Sie probieren immer wieder neue Dinge aus und behalten, was für Sie gut ist.
quelle
Trainieren. Trainieren. Trainieren.
Im Ernst, geistige Aktivität (dh Denken) ist wie körperliche Aktivität. Je mehr Sie es tun, desto besser können Sie es tun. (Tatsächlich beinhaltet körperliche Aktivität auch eine Art geistige Aktivität. Spitzensportler haben nicht nur die Muskeln am richtigen Ort ...)
Wie würden Sie (effektiv) das Denken üben?
(Hier verallgemeinere ich etwas anderes ...)
Ich denke, Sie würden Denkprobleme identifizieren, die Sie als schwierig (aber nicht unmöglich) empfinden, und versuchen, sie zu lösen (durchzudenken) und ihnen ähnlicher.
quelle
Diese beiden Dinge könnten Sie interessieren:
Der Fluss
Mihály Csíkszentmihályi , ein ungarischer Psychologieprofessor, stellte das Konzept des Flusses vor .
Ich habe das Glück, jeden Tag mit einer alten Technik in den Ablauf eintreten zu können, die ich aus meiner Anwendung von GTD lerne. Dies ist die nächste Aktion .
Ich kann Ihnen sagen, dass es wirklich den Unterschied macht. Wenn ich im Fluss bin, produziere ich qualitativ hochwertiger und schneller als wenn ich nicht in diesem Zustand bin. Ich konzentriere mich voll und ganz auf das, was ich tue, und denke daher effektiver.
Achtsamkeit
Ich habe vor einiger Zeit eine Frage zu Meditation gestellt , weil mir die Tatsache Sorgen machte, dass Meditation meine Programmier- (und Kreativ-) Fähigkeiten beeinträchtigen könnte.
Ich habe gerade mit dem Jon Kabat-Zinn- Methodentraining begonnen, daher ist es für mich zu früh, um Ihnen umfangreiche Erfahrungen mitzuteilen, aber von den wenigen, die ich bisher gelernt habe, kann ich Ihnen sagen, dass Sie dies wahrscheinlich tun möchten.
quelle
Ich habe immer geglaubt, gute Ingenieure würden geboren, nicht gemacht.
Sie brauchen die Einstellung dafür, den logischen, analytischen, deduktiven Verstand, kombiniert mit der Hartnäckigkeit und Neugier, die erforderlich sind, um auf effiziente Weise einen Überblick und eine strukturelle Ansicht eines Problems zu erhalten und schnell von A nach B zu gelangen und Ihren Verstand durchzuleiten die Lösung.
Es gibt eine Menge Forschung, die darauf hindeutet, dass diese Fähigkeit durch eine gute frühe Auseinandersetzung mit solchen Dingen enorm gesteigert wird. Musik hilft auch. Nach einem bestimmten Zeitpunkt sind Ihre mentalen Karten ziemlich fest verdrahtet. Nicht was Sie denken, sondern wie Sie denken.
Kannst du lernen, wie man als Erwachsener denkt? Man kann Ihnen sicherlich Techniken beibringen, um Probleme zu lösen, aber dann müssen Sie Algorithmen befolgen. Sie können ein sehr "schneller Roboter" werden, wie Sie es eloquent formulieren. Das intuitive Verständnis ist wahrscheinlich angeboren.
Dies ist keineswegs auf unseren Beruf beschränkt, viele Fähigkeiten werden eher von angeborenen Fähigkeiten dominiert als von erlangten Reaktionen. Die Leute wollen vielleicht nicht, dass das wahr ist, aber es ist höchstwahrscheinlich.
quelle
Finden Sie ein Online-Forum zu etwas, das Ihnen am Herzen liegt. Etwas, das eine Art Gemeinschaft hat. Vorzugsweise nicht programmieren - Programmierforen sind in der Regel eher lösungsorientiert als diskussionsorientiert. Stellung nehmen. Verteidige es. Verwenden Sie Argumente. Sie können auch bloggen, aber einen Gegner zu haben ist besser. Es geht darum, eine aussagekräftige und schriftliche Kommunikation über etwas mit jemandem zu haben. Wo Sie etwas größere Textstücke austauschen.
Sie lernen, Ihre Ideen zu kommunizieren und zu argumentieren. Da Sie Ihre Ansichten verteidigen müssen, müssen Sie sie mit Fakten unterstützen. Sie müssen über etwas nachdenken, Ihre Position formulieren und es unterstützen. vielleicht sogar ändern.
Nutzen Sie anschließend diese Fähigkeit, um das Problem zu analysieren, die Meinung zusammenzufassen und auf alles anzuwenden. Auch die Programmierung.
quelle
Eine Sache, an die ich denke, ist, dass man Dinge als Systeme sehen muss, und alle Systeme sind miteinander verbunden. Jeder einzelne im Universum. Die Menschheit, die Planeten, die Galaxie, die Pflanzen, das Sonnenlicht, die Photosynthese, Insekten, Felsen, Ozeane, alle interagierenden Systeme. Ebenso im Laufe der Zeit Zyklen: Geburt, Wachstum, Verfall, Tod von Käfern, Menschen, Zivilisationen, Gebirgszügen, Sternensystemen. Der endlose Kampf um Energie. Alle Systeme.
Dies ist das Studium des Lebens und der Natur im großen Sinne des Studiums. Alle Dinge im Zusammenhang sehen, alle Dinge im Zusammenspiel sehen. Konzentrieren Sie sich darauf, wenn Sie den Sonnenuntergang beobachten und die Tiefe der Schwerkraft spüren, die uns um die Sonne herumwirbelt, uns zur Oberfläche des Planeten hinunterziehen und das nachlassende Sonnenlicht, das sich rötet, bevor Sie mit 300.000.000 Metern pro Sekunde in Ihre Netzhaut eindringen und Bilder machen in deinem Primatenhirn.
Wenn Sie anfangen, darüber nachzudenken, wie alles zusammenhängt, wie der Preis für Gold und Sklavenarbeit und die Stürme über dem Pazifik und die Industriekomplexe in Japan zusammenhängen, nehmen Sie sich Zeit, nehmen Sie sich Zeit zum Sitzen und Denken Sie an all dies, dann wird sich Ihr denkender "Muskel" wirklich beugen und wachsen.
Nun, vieles davon wird unter der Schwelle der Ausdruckskraft liegen, aber lassen Sie sich davon nicht aufhalten. Ihr Gehirn ist leistungsstärker als der leistungsstärkste Computer. Drück es. Ich glaube nicht, dass es möglich ist, es zu übertakten.
Ich erinnere mich an ein Schwarz-Weiß-Bild, auf dem Albert Einstein auf einem Liegestuhl am Strand mit Blick auf den Ozean saß. Die Bildunterschrift lautete: "Hier sitzt Albert Einstein. Mit seinem Hirn."
Die nächste Herausforderung besteht darin, die Komplexität und gegenseitige Abhängigkeit aller Dinge auf einfache Weise zu kommunizieren. Dies gibt Ihnen etwas zu tun, bis Sie sehr alt sind.
quelle
Ein Ansatz ist das absichtliche Üben .
Einfache Wiederholungen führen nicht zum Erwerb von Fähigkeiten - Sie müssen nachdenklich sein, Ihre Leistung bewerten und Wege finden, um die Dinge besser zu machen.
Ein Beispiel: Ein enger Verwandter von mir tritt im Sport des Pistolenschießens an. Während des Trainings wird viel Konzentration darauf verwendet, jeden Schuss zu überprüfen und sich auf die richtigen Schritte zu konzentrieren. Gegen intuitiv geht nicht viel Fokus in schlechte Schüsse, weil das Wiederholen (Einstudieren) des Fehlers es verstärkt.
Das einfache Abfeuern von 100 Schüssen auf die Reichweite bringt nichts. Das bewusste Abfeuern von 20 Schüssen stärkt die guten Gewohnheiten und führt zu einer besseren Leistung.
Gleiches gilt für die Programmierung - überlegen Sie, was Sie tun. Tun Sie es nicht monatlich, wöchentlich oder täglich - tun Sie es von Moment zu Moment, von Aktion zu Aktion.
Und so weiter ...
quelle
Stochere in etwas, das du liebst, bis du eine Kante findest.
Tiefer Atemzug,
Schritt über...
...
... Erzählen Sie anderen, was Sie gefunden haben.
quelle
Also willst du nachdenken
Viele großartige Vorschläge von anderen Postern, wie man denkt oder lernt zu denken: der Fluss, die Achtsamkeit, die Mathematik, die Leidenschaft, das Üben ... also werde ich nicht dorthin gehen, ganz ohne Boden.
Aber keine darüber warum. Was ist der Zweck?
Persönlich habe ich verstanden, dass Sie, bevor Sie denken können, wissen müssen, warum.
Das Beste, was Sie tun können, ist zuzuhören und zu schauen. (Ich nehme beide als eine Einheit, man kann sie nicht trennen)
Die einzige Möglichkeit, besser zu programmieren, ob Sie nun Anforderungen erfassen, diese Anforderungen in detaillierte Systemspezifikationen umwandeln, diese mit Konstruktionsdokumenten abgleichen, den Code implementieren, das Debuggen für Ihr geliebtes Leben durchführen, ob Sie eine oder alle dieser Phasen überspringen, Egal, ob Sie fünf Minuten Zeit haben, um eine Lösung zu finden, oder 20 Jahre, Sie müssen zuhören und nachsehen.
Hören Sie zu, was der Benutzer möchte, hören Sie zu, was der Benutzer Ihnen mitteilt, was passiert ist, und hören Sie zu, wie die Support-Person Ihnen mitteilt, dass sie es gesehen hat. Hör mal zu. Hören Sie zu, auch wenn es keinen Sinn ergibt. Hör zu, auch wenn du überzeugt bist, dass sie so falsch liegen. Hören Sie zu und urteilen Sie nicht.
Suche nach Hinweisen, nicht indem du suchst, sondern indem du die Augen öffnest. Schau dir die Realität an. Sie können nicht nach Antworten suchen, bevor Sie sich den Tatort angesehen haben. Sie können keine Lösung finden, bis Sie den Fehler bewiesen haben.
Ein einziges Beispiel aus meiner Erfahrung(Auf Fehlerbehebung, aber es könnte wirklich an alles angepasst werden). Aus offensichtlichen (legalen und sonstigen) Gründen werde ich saftige Details heraushalten. Bei einem sicherheitskritischen System hat ein Bediener einen schwerwiegenden Fehler gemeldet. Einige geografische Ortungsgeräte haben tatsächlich die Ortung verloren, wenn dies nicht der Fall sein sollte, was sich möglicherweise auf das Leben auswirkt (dies sollte der eigentliche Fehler sein und unsere Untersuchungen viel zu lange verzögern). Glücklicherweise, obwohl dies Wochen später fast zufällig gefunden wurde, da an einem entfernten Standort ein anderes System in Betrieb war, für das ein anderer Bediener den Nachweis erbrachte, dass die Verfolgung auf diesem System nicht verloren gegangen war. Das hat uns wieder zum Nachdenken gebracht. Unser Hauptsoftwarelieferant glaubte uns keine Sekunde, also mussten wir die Sache beweisen. Der einzige Weg war durch Transplantation: Erstellen einer Simulation, um die genaue Betriebssituation nachzubilden. Wir mussten tatsächlich den Beweis für den Lieferanten auf Video festhalten, um uns zu glauben. Schließlich lieferte die Simulation Informationen, die unsere Hoffnungen sprengten, und führte uns dazu, das gesamte Problem zu verstehen. Danach dauerte es nicht lange, bis das Problem behoben war.
Der einzige Weg, den wir bis zum Ende durchgingen, bestand darin, ein Remote-System logisch mit einem anderen zu verbinden, das eine ähnliche, aber nicht die gleiche Aufgabe ausführte. Das ist die Suche nach Hinweisen (Look). Dies war nur möglich, indem man dem einmaligen Bericht vertraute und ihn nicht als zufälligen Fehler im System abtat (Listen) und dann den zweiten Bericht erneut hörte, der dem ersten widersprach (Listen).
Wenn Sie also die richtigen Anhaltspunkte haben (zugehört und nachgesehen haben), den Problembereich definiert, die Grundursache oder die wichtigsten Prinzipien verstanden haben, können Sie zuerst Lösungen für ein besseres Verständnis finden (Versuch und Irrtum, Simulationen, Demonstration, Proof of Concept, Mock-up, Alpha, Beta-Versionen) und bieten schließlich eine solide Lösung (die manchmal nach einem realen Betrieb weiter verbessert werden kann).
Zuhören und schauen zu können, erfordert Offenheit, Vertrauen und absoluten Einsatz für Ihre Ziele. Dies ist der Treibstoff, an den Sie denken müssen, oder mehr, um Ihr Denken auf das richtige Ziel auszurichten (häufig liegt das Problem nicht in der Unfähigkeit zu denken, sondern im Fehlen eines genau definierten Ziels, auf das Sie sich konzentrieren können).
quelle
Ich denke, Sie müssen zwischen verschiedenen Arten des Denkens unterscheiden.
Kreatives Denken - wie man neue Ideen, innovative Lösungen und unerwartete Ergebnisse findet. Dahinter steckt eine ganze Wissenschaft, suchen Sie nach Edward de Bono, Kreativitätstechniken usw. Nicht viele Programmierer beschäftigen sich mit diesem Bereich.
Analytisches Denken - damit meine ich den wissenschaftlichen Prozess. Schauen Sie sich Inputs und Outputs an, messen Sie, was wichtig ist, und kommen Sie zu logischen Schlussfolgerungen. Die meisten Entwickler sind mit wissenschaftlichen Techniken vertraut, verwenden sie jedoch nie wirklich. Tun Sie dies!
Kritisches Denken - ich denke, das ist mehr Philosophie. Treten Sie zurück und sehen Sie sich das Gesamtbild an, überprüfen Sie Ihre Annahmen, tun Sie wirklich das, was Sie für Ihre Werte halten? Studienphilosophie Es gibt eine Menge großartiger Autoren und Ideen.
quelle
Die Mathematik lehrt das Denken. Bewerbung erfordert Kreativität und Erfahrung.
Gute Einsicht. Grob gesagt, hängen die Anforderungen an "Größe" von Ihrer persönlichen Definition von "Größe" ab ... und haben sich im Laufe der Zeit geändert. Heute geht es beim Projekterfolg darum, Konzepte schnell und ohne tiefgreifende Details zusammenzusetzen. Persönlicher Erfolg könnte definiert werden als das Meistern von C # wie Jon Skeet.
Lesen Sie die Coder bei der Arbeit . Viel mehr erfahrene Programmierer, als ich ausführlich bespreche.
quelle
Arbeiten Sie daran, Ideen und Konzepte aus scheinbar unabhängigen Bereichen anzuwenden. Für mich war die Brillanz des iPod nicht die Technik, die hinter der Herstellung eines großartigen MP3-Players steckt, sondern die Lösung eines riesigen Problems, das die Musikunterhaltungsindustrie mit Raubkopien und dem CD / Album-Modell des Musikverkaufs hatte. Jobs hat wahrscheinlich mehr von dem angewendet, was er bei Pixar im Umgang mit der Filmindustrie gelernt hat. Er wusste, was das wahre Problem war.
quelle