Wie wirkt sich die räumliche Eignung auf die Programmierung aus? [geschlossen]

19

Hintergrund

Je länger ich an einem Projekt arbeite, desto unklarer wird es. Es ist, als ob ich verschiedene Klassen / Objekte nicht mehr in meinem Kopf trennen kann. Alles beginnt sich zu vermischen und es ist extrem schwierig, alles wieder auseinander zu nehmen. Ich beginne, Funktionen in Klassen zu platzieren, in die sie wirklich nicht gehören, und mache dumme Fehler, wie das Schreiben von Code, den ich später als 100% veraltet empfinde. die dinge sind in meinem kopf nicht mehr eindeutig abbildbar. Erst wenn ich einige Stunden (oder manchmal auch Tage) zurücktrete, kann ich tatsächlich sehen, was wieder vor sich geht, und produktiv sein.

Normalerweise versuche ich, mich durchzukämpfen. Ich bin so leidenschaftlich im Codieren, dass ich für mein ganzes Leben nicht weiß, was ich sonst noch tun könnte. Dies ist der Moment, in dem Dinge wirklich seltsam werden können. Ich stehe so in meinem Kopf, dass ich den Kontakt mit der Realität (in gewissem Maße) verliere, weil verschiedene Aktionen, wie das Eingießen eines Glases Wasser, nicht mehr auf bewusster Ebene stattfinden. Es passiert beim Autopiloten, bei dem meine ganze bewusste Konzentration (ist das überhaupt eine Sache?) Darauf gerichtet ist, grenzenlose, sinnlose Probleme zu lösen (indem ich versuche, Elemente des Codes zu trennen). Es fühlt sich an wie ein Kampf zu verlieren.

Also habe ich vor einiger Zeit einen IQ-Test gemacht (Wechsler Adult Intelligence Scale, glaube ich) und es stellte sich heraus, dass meine räumliche Eignung ziemlich niedrig war. Ich habe immer noch eine anständige Gesamt Punktzahl, nur über den Durchschnitt, so dass ich die Dinge nicht für ein Leben mit einem Stock stoßen werde, aber ich bin ein wenig besorgt , dass dies ein solche Behinderung ist , wenn Schreib- / Engineering Computerprogramme , dass ich gewonnen‘ Ich werde es niemals ernsthaft oder professionell tun können.

Frage

Ich bin sehr daran interessiert, was andere Leute darüber denken ...

Könnte eine geringe räumliche Eignung die Ursache für die oben beschriebenen Probleme sein?

Wie wirkt sich die räumliche Eignung auf die Programmierung aus?

Vielleicht sollte ich mehr nach ADS oder etwas Ähnlichem Ausschau halten, weil bei mir im Alter von 17 Jahren (vor 5 Jahren) ADS diagnostiziert wurde, aber das Medikament, das ich erhielt, schien mich nicht so sehr zu beeinträchtigen, weshalb ich es nie einnahm es ist alles so ernst.

Soweit ich weiß, sind Menschen mit geringer / mittlerer / hoher räumlicher Befähigung geboren, und ich finde es interessant, herauszufinden, ob die Glücklicheren von Geburt an bessere Programmierer sind.

Natli
quelle
5
it turned out my Spatial Aptitude was quite low. I still got a decent score, just above average,Ich bin kein Psychologe, aber wenn ich Englisch richtig lese und die Definition eines Durchschnitts verstehe, verstehe ich nicht wirklich, wie sich das übersetzt quite low... Vielleicht überdenken Sie das ... :)
Haylem
1
Ah, auch IQ-Tests sind Mist, um die Forschung über sie unverblümt zusammenzufassen. Lebst du in den usa (
Ich frage
1
@psr: Ich wäre eigentlich nicht überrascht. Es hört sich vielleicht nicht so an, als hätte es viel damit zu tun, aber Menschen, die Probleme mit räumlichen Darstellungen und chronischer Reisekrankheit haben, haben es normalerweise etwas schwerer, mit einer ganzen Reihe von Dingen umzugehen. Ich würde nicht denken, dass es ein bisschen anders ist (aber ich bin kein Psychologe oder Neurologe) und dass Ihre tatsächlichen Programmierfähigkeiten und Ihre Leidenschaft Sie vom Rest des Pakets abheben werden.
Haylem
2
@ Haylem Ich weiß nicht im Allgemeinen, aber die meisten Online-IQ-Tests werden entlang mehrerer Achsen bewertet. Räumliche Fähigkeiten, logische Fähigkeiten usw. Ich denke, was Natli sagt, ist, dass der Durchschnitt aller von ihnen nur überdurchschnittlich war, aber die räumliche Eignungsbewertung war ziemlich niedrig.
Izkata,
1
Ich sehne mich nach einem Job, bei dem ich Dinge mit einem Stock stecke.
Dan Ray,

Antworten:

27

Es gibt tatsächlich harte Forschungsdaten dazu, die größtenteils in den letzten 35 Jahren gesammelt wurden, und ich habe auch einige ähnliche Phänomene erlebt, wenn auch nicht regelmäßig. Weiter unten erfahren Sie mehr.

Forschungsdaten

Es scheint zu sein , einige aber kleinere basierend auf Forschung in den folgenden Arbeiten durchgeführt und zusammengefasst Korrelation. Wie so oft in der Forschung, unterscheiden sich die Studienmodelle zwischen den Studien und sie sollten genau überprüft werden, um zu verstehen, warum die Ergebnisse unterschiedliche Schlussfolgerungen enthalten.

Nehmen Sie es mit einer Prise Salz: Einige sind relativ alt, IQ-Tests könnten sich seitdem geändert haben. Ich habe nicht gründlich nach Zitaten für jeden Artikel gesucht, um zu sehen, ob sie später bestätigt oder entlarvt wurden.

Einige Links (insbesondere [PDF]) funktionieren möglicherweise nicht für Sie, wenn Sie keiner Bibliothek zugeordnet sind, die Zugriff auf diese Online-Inhalte bietet.


Persönliche Meinung

Warnung und Offenlegung: Ich bin WEDER ein Psychologe NOR ein Neurologe, aber ich habe studiert und unterrichtet Programmierung beiden kleinen Kinder (ab 6) und Studenten (bis zu 60!).

Nachdem ich selbst als Hochschullehrer bei AND unterrichtet habe, darunter einige von räumlichen Problemen betroffene Studenten (und andere mit stärkeren Behinderungen), muss ich sagen, dass dies möglich gewesen wäre (ich habe meine behinderten Studenten nicht im Auge behalten). offensichtlich), dass einige in einem niedrigeren Teil der allgemeinen Kurve registriert hätten, erinnere ich mich noch deutlich an einige hohe Punkte (und sogar an einen, der insbesondere mindestens 2 Jahre lang das Hauptfach der Klasse war).

Mein Punkt ist, dass es zwar einen Effekt haben mag und wie einige der obigen Untersuchungen zeigen, nicht den größten Teil Ihrer Fähigkeit ausmacht, zu lernen, wie ein Programmierer zu programmieren und zu denken. Dies ist insofern unerheblich, als Sie nicht davon abgehalten werden, zu lernen, wenn Sie es wirklich wollen, und Sie nicht daran gehindert werden, im allgemeinen Fall zu arbeiten, obwohl dies (wie es in Ihrem Fall der Fall sein könnte) es Ihnen etwas schwerer machen könnte .

Was und wie schnell Sie lernen können, ist praktisch unbegrenzt .

Schließlich mag kein Programmierer eine gute Herausforderung nicht, oder? (Ich sehe dich an, RSI)


Persönliche (möglicherweise nicht verwandte) Erfahrung

Es könnte sein, dass Sie zu leidenschaftlich sind. Wie viele Stunden arbeiten Sie pro Tag und pro Woche? Machen Sie regelmäßig Pausen?

Ein ähnlicher Fall?

In einem bestimmten Zeitraum meines Lebens arbeitete ich an jedem Wochentag mindestens 14 Stunden, das ganze Jahr über, bis es zu einer Aufzeichnung von 120 Stunden Arbeitswochen vor einem Computerbildschirm kam . Ja, das sind nur noch 48 Stunden pro Woche für Essen, Schlafen, Reisen zur und von der Arbeit ( Tipp: Fahren vermeiden !! ), Duschen und andere wichtige Funktionen. Zu diesem bestimmten Zeitpunkt konnte ich ziemlich schnell einschlafen (obwohl ich normalerweise Schlafprobleme hatte), aberIch würde fast immer von Code träumen und ich würde auch plötzlich in der Dusche oder sogar beim Gehen oder Laufen oder bei kleinen Aufgaben feststellen, dass meine Gedanken im Autopiloten darauf zurückgingen, wie du es selbst gesagt hast. Leider würde ich Probleme im Schlaf nicht auf magische Weise lösen. es wäre näher an dem, was Sie zu beschreiben und zu erleben scheinen: ein riesiger Wirrwarr verwirrter Gedanken, der auf einer größeren Skala irgendwie Sinn ergeben würde, aber keine eindeutige Lösung ausdrückt und ohne großen Erfolg Wenn Sie einen dieser Gedanken aufgreifen, um sich darauf zu konzentrieren, zerlegen Sie ihn klar und verwandeln Sie ihn in etwas Nützliches. Und das war normalerweise ziemlich ermüdend und quälend.

Entspannung könnte helfen

Vielleicht müssen Sie sich etwas beruhigen, sich entspannen und weniger arbeiten. Versuchen Sie, etwas zu finden, das Sie ablenken kann. Damals habe ich oft auf einige kostbare Stunden Schlaf verzichtet, um stattdessen etwas zu tun, das diesen verrückten Gedankengang wirklich aufhält. Es scheint kontraproduktiv, aber ich zog es tatsächlich vor, ein paar Dinge zu tun, bei denen ich mich wirklich entspannen würde, als mehr zu schlafen und nicht ausgeruht zu sein. In gewisser Weise die Ablenkung für die nervösen Batterien und der Schlaf für die physischen Batterien.

Trigger identifizieren

Wenn dies nicht der Fall ist, ist möglicherweise noch etwas anderes erforderlich, um diesen Status für Sie auszulösen. Versuchen Sie, Elemente zu isolieren, die in diesen Situationen vorhanden sind, und prüfen Sie, ob Sie diesen Zustand in anderen Umgebungen reproduzieren können, um festzustellen, ob Sie diese Elemente ebenfalls finden. Passiert es mehr bei der Arbeit oder zu Hause, etc ...

Isolierung

Sie haben das vielleicht schon gehört und probiert, aber ich habe einen Freund mit einer geringen räumlichen Behinderung, und normalerweise hilft es ihm, wenn er an Computern arbeitet, in einem dunkleren Raum zu sein und zu viele komplexe Ansichten und Fenster zu vermeiden offen (um Ablenkung zu vermeiden) und im Allgemeinen eher minimalistisch (sowohl in Bezug auf Design und Farben als auch in Bezug auf Inhalt und Darstellung).

Machen Sie auch regelmäßig Pausen und lassen Sie Ihren Geist alle 1 oder 2 Stunden für kurze Zeit frei, je nachdem, was für Sie am besten funktioniert. Nehmen Sie vielleicht die Pomodoro-Technik oder ähnliches an (ich habe keine Forschungen zu einem Zusammenhang, aber es könnte hilfreich sein, wenn Sie gezwungen werden, Pausen einzulegen).

Haylem
quelle
Eine sehr interessante Frage, sobald Sie anfangen zu graben, und zunächst hatte ich nicht an meine eigenen Erfahrungen gedacht. Ich hoffe es hilft. Für weitere Forschungsarbeiten liefert eine schnelle Suche in Google Scholar nach "Raumfähiger Programmierung" eine Tonne mehr Ergebnisse. Die Verwendung des Zitierwerkzeugs kann dabei helfen, die am häufigsten zitierten Werke zu identifizieren.
Haylem
1
Vielen Dank, dass Sie sich so viel Mühe gegeben haben, und einige wirklich gute Informationen. Ich schreibe definitiv ungefähr 10 Stunden am Tag Code, manchmal mehr. Entspannung mag hier der Schlüssel sein, aber das wird schwer zu realisieren sein. Wie Sie sagten, ich bin wahrscheinlich zu leidenschaftlich über meine eigenen Projekte; Ich will nichts anderes machen. Also, während ich physisch etwas anderes als Programmieren mache, wird mein Verstand immer noch daran arbeiten ... Ich glaube nicht, dass es möglich ist, deinen Verstand daran zu hindern, das zu tun, was verdammt gut gefällt.
Natli
@natli: Es ist ein bisschen der gleiche Ansatz, wie eine Hold-Angewohnheit abzulegen. Wenn Sie mit dem Rauchen aufhören möchten, müssen Sie die Zigarette durch etwas ersetzen. Gibt es ein besonderes Hobby, das du neben dem Programmieren wirklich magst? Dann benutze das. Für manche Menschen sind intensive Aktivitäten möglich (zum Beispiel Squash), während für andere das Gegenteil der Fall ist: Sie brauchen etwas extrem Passives. Vielleicht könntest du es mit Meditation versuchen. Es ist wichtig zu lernen, wie man den Verstand klärt. Das hat zum Beispiel bei meinen Schlafproblemen sehr geholfen.
Haylem
@natli: Mir hat die "Anstrengung" nichts ausgemacht. Ich fand es eine interessante Frage und die meisten Artikel waren gut gelesen. Diese Art von Forschung kann manchmal, genauso oft, wenn versucht wird, psychologische und neurologische Treiber zu identifizieren, etwas vage sein, da es schwierig ist, ein gutes Studienmodell zu spezifizieren. Es ist auch potenziell beängstigend, wenn die Forschung dazu tendiert, den Menschen "Türen zu schließen". Das ist offensichtlich nicht die Absicht: Sie orientieren sich nicht an der Forschung; aber es könnte trotzdem das Ergebnis sein. Trotzdem war ich froh herauszufinden, dass es sich um ein aktives Forschungsgebiet handelt . Danke dafür und ich bin froh, dass es geholfen hat.
Haylem
+1 für die Pomodoro-Technik. Ich habe das benutzt, um für meine Prüfungen zu lernen, als ich noch an der Universität war. Es muss geklappt haben, weil ich alles bestanden habe - der ganze Satz basiert auf zweifelhafter Wissenschaft, nicht ernst zu nehmen.
Jamie Taylor
4

Ech ... das verdient mehr als einen Kommentar.

"Normalerweise versuche ich, mich durchzukämpfen"

Aufhören zu kämpfen. Du kriegst es hin und her und machst Fehler, oder? Möglicherweise haben Sie einige einzigartige Probleme, aber die Art und Weise, in der Ihr Gehirn rebelliert, ist normal für alle, die sich zu lange mit einem Problem befasst haben. Als ich jünger war, wurde viel zu viel Zeit meines Tages damit verbracht, auf dieser höchst bewussten Ebene zu denken, und ich tat mir keinen Gefallen. Ihr Problem ist nicht, dass Sie sich nicht genug anstrengen, sondern dass Sie nicht wissen, wann Sie aufhören sollen.

Als ich herausfand, dass der einzige Weg, zu einer vernünftigen Stunde einzuschlafen, darin bestand, an absolut nichts zu denken, lernte ich schließlich, den Wert des Zurückwerfens von Dingen zu schätzen Ich würde einschlafen, während ich normalerweise mindestens ein paar Stunden lang denken-denken-denken würde, bevor ich vor geistiger Erschöpfung zusammenbrach.

Von da an fiel es mir leichter zu lernen, zu erkennen, wann ich zu viel bewusstes Denken in ein Problem gesteckt hatte, und es einfach für eine Weile loszulassen. Ich war überrascht, wie sehr dies tatsächlich dazu beiträgt, dass Sie ein Problem lösen.

Ich empfehle folgendes:

  • Wenn etwas in Ihrem Kopf verdreht wird und Sie nicht den Luxus haben, eine Pause einzulegen und spazieren zu gehen oder so, versuchen Sie, den Gang zu wechseln und sich für eine Weile auf ein ganz anderes Problem zu konzentrieren.

  • Überspringen Sie niemals das Mittagessen und verlassen Sie immer das Büro. Geben Sie sich hin, bis Sie an der Tür angelangt sind, um einen Haltepunkt zu erreichen, oder lassen Sie sie einfach fallen. Alles, was es wert ist, im Kopf zu bleiben, wird da sein, wenn Sie zurückkommen, und alles, was Sie nicht brauchten, wird weg sein. Je mehr Sie dies entdecken, desto einfacher wird es.

  • Werde dir den ganzen Tag über regelmäßig Gedanken machen. Auch wenn es nur eine Minute ist, während Sie sich das Glas Wasser holen.

  • Versuchen Sie, OOP oder einen problemdomänenzentrierten Architekturansatz zu nutzen, um über weniger nachzudenken. Wer sind die Akteure in Ihrem Code auf höchster Ebene? Sie sollten keine komplexen Beziehungen zueinander haben. Auf diese Weise können Sie sich immer nur auf ein Problem konzentrieren.

Einige Codierungsprinzipien, die hilfreich sein könnten

  • DRY entspricht der allgemeinen Codierungspraxis, da "Stehlen ist falsch" auf fast alle Ethik / Moral angewendet werden kann. Es gibt sehr seltene Ausnahmen. Behalte sie sehr selten.

  • Wenn Sie die Angewohnheit haben, Probleme zu lösen, mit denen Sie möglicherweise in Zukunft konfrontiert werden, sollten Sie aufhören. Nichts ist zukunftssicherer oder "skalierbarer" als Code, der nicht komplexer ist, als er sein muss. "Enterprise" ist Lüge.

  • Komplexe Muster versprechen oft lange Aufzählungspunkte von Belohnungen. Es gibt nur 3 Dinge, die die meiste Zeit wichtig sein sollten. Es ist leicht zu lesen. Es ist einfach wiederzuverwenden. Es ist leicht zu ändern. Denken Sie in Form eines Minimums an Gewalt, das ein Kampfkünstler anwenden könnte, und wenden Sie dieses Prinzip auf Komplexität an. Genau genug, um das Problem zu lösen, ist ideal.

  • Schreiben Sie zuerst Ihre Schnittstelle. Und nein, ich meine nicht die C # / Java-Konstrukte, die nur bei Bedarf verwendet werden sollten, sondern die API Ihrer Objekte. Was muss die Klasse / das Objekt tun? Schreiben Sie diese leeren Methoden und geben Sie ihnen Argumentnamen. Füllen Sie die Lücken nicht aus, bis Sie vollständig fertig sind. Es ist in Ordnung, Änderungen später vorzunehmen, aber sobald Sie festgelegt haben, was es tun muss, können Sie sich darauf konzentrieren, wie die einzelnen Schritte nacheinander ausgeführt werden müssen. Der Grund, warum Sie möglicherweise versuchen, so viel im Kopf zu behalten, wie Sie es oft tun, kann sein, dass bei Problemen, die lange vor dem Erreichen einer bestimmten Phase eines Prozesses hätten gelöst werden müssen, Implementierungsprobleme auftreten. Haben Sie viele Methoden? Davon spreche ich.

Diagnose?

Ich denke, das Problem des räumlichen Bewusstseins wurde gut abgedeckt. Was auch immer Sie an dieser Front entscheiden, ich würde das ADD-Ding noch einmal überdenken, besonders wenn Sie es beim ersten Mal nicht ernst meinen. Das klingt definitiv sehr nach extremem Hyperfokus. Lassen Sie sich letztendlich von dieser Liebe zum Codieren dazu bringen, Wege zu finden, um diese Probleme zu lösen, und ich gehe davon aus, dass Ihre Karriere gut verlaufen wird.

Erik Reppen
quelle
3

Wie viele Stunden arbeiten Sie, bevor Sie anfangen, diese Unschärfe zu sehen? Viele durchschnittliche bis gute Programmierer, die ich von Arbeit 4 kenne, können 5 Stunden vor einem Kaffee oder Mittagessen oder so etwas sein. Der längste Sprint, von dem ich je gelesen habe, war, als Guy L Steele und Richard M Stallman beim Schreiben von Emacs einen Sprint von etwa 10 Stunden absolvierten. Steele sagt weiter, dass er einen so langen Sprint nicht mehr machen möchte.

Wenn Sie mit dem Programmieren noch nicht so weit sind (weniger als beispielsweise 5000 Stunden (diese Zahl stammt aus Peter Norvigs Beitrag zum Programmierunterricht in zehn Jahren, indem er die 10.000 Stunden halbiert, die er als Expertenprogrammierer empfiehlt)), hört sich das sehr gut an normal mit Ausnahme des Teils, in dem Sie sagen, dass Sie Tage Pause brauchen. Vielleicht brennen Sie sich aus, um sich eine so lange Pause zu gönnen?

vpit3833
quelle
Ich glaube nicht, dass ich mehr als 2000 Stunden Erfahrung habe, obwohl es nicht wirklich so ist, als hätte ich den Überblick behalten. Außerdem ist es ziemlich selten, dass ein Paar (zwei) Tage zur Erholung benötigt werden. Die ersten paar Tage brauche ich nur eine gute Nachtruhe, um Probleme am nächsten Tag anzugehen, aber ich arbeite wahrscheinlich zu lange und versuche, die Verwirrung zu überwinden. Wenn ich das lange genug durchhalte, brauche ich definitiv ein paar Tage Zeit, um meinen Code mit neuen Augen zu betrachten und die dummen Fehler, die ich gemacht habe, sofort zu erkennen. Dinge, die Stunden in Anspruch nahmen, dauerten buchstäblich nur 15 Minuten nach der Pause.
Natli
1

Nach Ihrer Beschreibung kann Ihr Problem verschiedene Ursachen haben:

  • Unerfahrenheit

  • Fokusverlust / Müdigkeit

  • Geringe räumliche Fähigkeiten

Unerfahrenheit kann gelöst werden, indem ... im Grunde genommen mehr Erfahrung gesammelt wird. So offensichtlich es auch klingen mag, wenn Sie mehr üben, befinden Sie sich häufiger in komplexen Programmiersituationen und lernen nach und nach, mit diesen umzugehen. Im Moment fehlen Ihnen möglicherweise die mentalen Schemata und Reflexe, um die richtigen Verbindungen herzustellen, die richtigen Schlussfolgerungen zu ziehen und diese Situationen zu lösen. Dadurch können Sie das Gefühl haben, langsam zu sein und "veralteten Code" zu schreiben, aber diese Problemlösungsmuster werden sich nach und nach ändern Nehmen Sie Platz in Ihrem Kopf, während Sie erfahrener werden (Sie sind, wie ich verstehe, erst 22 Jahre alt, was noch sehr jung ist).

Es gibt verschiedene Techniken, um Ihren Fokus zu verbessern. Pomodoro und Getting Things Done sind zwei Beispiele. Im Programmierbereich ist Test Driven Development ebenfalls etwas, das ich wirklich empfehlen würde, da es Sie zwingt, sich auf jeweils ein kleines erreichbares Ziel zu konzentrieren (kleine Schritte). Bei einem TDD-Ansatz ist es viel weniger wahrscheinlich, dass Sie Funktionen in Klassen einfügen, in denen sie wirklich nicht vorhanden sind, da Sie gezwungen sind, die Verantwortung Ihrer Klasse mit einem Test klar zu definieren und sich dann beim Codieren ausschließlich auf die Implementierung zu konzentrieren im gegensatz zu springen zwischen mehreren klassen und füllen sie nach und nach zufällig.

Müdigkeit und Aufmerksamkeitsstörungen können durch einen nachhaltigen Rhythmus mit häufigen Pausen vermieden werden. Sie könnten Interesse an dieser Präsentation von Linda Rising finden, wenn es darum geht, produktiver zu sein, indem wir unser Gehirn respektieren: Born to Cycle .

Was die geringen räumlichen Fähigkeiten angeht, kann man leider nicht viel dagegen unternehmen. Harte Arbeit kann es jedoch abschwächen, und es ist weit davon entfernt, die einzige Fähigkeit zu sein, die für das Programmieren erforderlich ist. Dinge wie Kreativität, Leidenschaft, Enthusiasmus, Strenge, analytische Fähigkeiten, Schärfe, gutes Verständnis für geschäftliche Probleme und Fähigkeiten zur Zusammenarbeit können eine überdurchschnittlich schwache mentale Visualisierung der Codebasis mehr als ausgleichen.

Kurz gesagt, was Sie brauchen, ist IMO:

  • Disziplin

  • Trainieren

  • Ein nachhaltiges Tempo

guillaume31
quelle