プログラミングは空間適性の影響をどのように受けますか?[閉まっている]


19

バックグラウンド

プロジェクトに長く携わるほど、明確さは低下します。頭の中でさまざまなクラス/オブジェクトを分離できなくなったようです。すべてが混同し始め、すべてを再び分解することは非常に困難です。本当に属していないクラスに関数を配置し始め、後で100%廃止されたコードを書くなどの愚かな間違いを犯します。頭の中で物事がはっきりと写像できなくなりました。数時間(または数日も!)戻って初めて、何が起こっているのかを実際に確認し、生産性を高めることができます。

私は通常これを戦おうとしますが、コーディングに非常に情熱を傾けているので、自分の人生のために他に何ができるかを知りません。これは、ものが本当に奇妙になることがあるとき、私は自分の頭の中で起きて、コップ一杯の水を注ぐなどのさまざまな行動がもはや意識的なレベルで起こらないという点で現実との接触をある程度失います。それは自動パイロットで発生し、その間、私の意識の集中のほとんどすべて(それも何か?)は、境界線の無意味な問題解決(コードの要素の分離を試みる)に専念します。負け戦のように感じます。

それで、私はしばらく前にIQテストを行った(Wechsler Adult Intelligence Scaleであったと思う)が、私の空間的適性はかなり低いことが判明した。私はまだ平均以上のまともな合計スコアを獲得しているので、生計のために棒で物を突く必要はありませんが、これはコンピュータープログラムを書いたりエンジニアリングするときにこれが非常にハンディキャップになることを少し心配しています真剣にまたは専門的にそれを行うことはできません。

質問

私は他の人がこれについてどう思うか非常に興味があります...

空間適性が低いことが、上記の問題の原因になる可能性がありますか?

プログラミングは空間適性の影響をどのように受けますか?

17歳(5年前)にADDと診断されたので、ADDやそれに類似したものに沿ってもっと見る必要があるかもしれませんが、受け取った薬はそれほど影響を与えていないようで、服用したことはありませんそれはすべて深刻です。

私が知っている限りでは、人々は低/中/高の空間的適性を持って生まれているので、幸運な人が生まれながらに優れたプログラマーであるかどうかを知ることは興味深いと思います。


5
it turned out my Spatial Aptitude was quite low. I still got a decent score, just above average,私は心理学者ではありませんが、英語を正しく読み、平均の定義を理解していると、それがどのように翻訳されるか本当にわかりませんquite low...多分あなたはこれを
考え過ぎ

1
ああ、また、IQテストはくだらないです、それらについての研究を率直に要約するために。あなたはアメリカに住んでいますか?(米国では、他のどこよりもIQテストの使用率が高く、ADDに対する恐怖が非常に過大評価されているように思われるためです)
ヘイレム

1
@psr:実際には驚かないでしょう。それはそれとはあまり関係がないように聞こえるかもしれませんが、空間表現や慢性的な乗り物酔いに問題がある人は通常、かなり多くのものを扱うのに少し苦労します。私はそれが少し差別化されているとは思わないでしょう(しかし、私は心理学者でも神経学者でもありません)、そしてあなたの実際のプログラミングスキルと情熱はあなたを他のパックから際立たせるものだと思います。
ヘイレム

2
@haylem一般的には知りませんが、ほとんどのオンラインIQテストはいくつかの軸に沿って評価します。空間属性、ロジックスキルなど。natliが言っていることは、それらすべての平均は平均をわずかに上回っていたと思いますが、空間適性スコアはかなり低かったです。
イズカタ

1
私は棒で物を突く仕事に憧れています。
ダン・レイ

回答:


27

実際にはこれに関するいくつかのハードな研究データがあり、そのほとんどは過去35年間に収集されたものです。また、定期的ではありませんが、同様の現象もいくつか経験しました。詳細は以下をご覧ください。

研究データ

あるように見えるいくつかが、マイナーの次の作品に行い、まとめた調査に基づいて相関。しかし、多くの場合研究と同様に、研究モデルは研究間で異なるため、結果が結論に違いを示す理由を理解するために綿密にレビューする必要があります。

少々塩味にしてください:比較的古いものもありますが、IQテストはその後変更された可能性があります。私は、各記事の引用を見つけて、それらが後で確認されるか、明らかにされるかどうかを確認するための詳細な検索を行っていません。

これらのオンラインコンテンツへのアクセスを許可しているライブラリに所属していない場合、一部のリンク(特に[PDF]の種類)は機能しない場合があります。


個人的な意見

警告および開示:私はNEITHER心理学者NOR神経科医が、私は勉強していると教えて両方小さな子供(6以降)や大学の学生にプログラミングを(最大60!)。

空間問題の影響を受けた学生(およびより強い障害を持つ他の学生)を含む、大学の教師として学生にANDで学んだ後、私はそれがあったかもしれないと言わなければなりません(私は障害に基づいて私の学生を追跡しませんでした、明らかに)いくつかは一般的な曲線の低い部分に記録されたであろうが、私はまだいくつかの高得点を明確に覚えている(特に少なくとも2年間はクラスの専攻でさえ)。

私のポイントは、効果があるかもしれませんが、上記の研究のいくつかが示すように、プログラミングを学び、プログラマーのように考える能力の大部分を占めていません。それは重要ではありません。本当にしたいのかどうかを学ぶのを止めず、一般的なケースで働くことを妨げることはありませんが、それはあなたのために少し難しくなる可能性があります。

学習できる内容と速度に実質的に制限はありません

結局のところ、良いチャレンジを好まないプログラマーはいないでしょうか?(私はあなたを見ています、RSI)


個人的な(おそらく無関係な)経験

情熱的すぎるかもしれません。1日あたり、1週間あたり何時間働いていますか?定期的に休憩しますか?

同様のケース?

私の人生のある時期に、私は毎日、毎日、少なくとも14 時間の仕事をして、コンピューター画面の前で120時間の仕事の週を記録するまでになりました。はい、週に48時間しか食べず、眠り、仕事に出かけたり(ヒント:運転を避けてください!!)、シャワーやその他の重要な機能を果たします。この特定の時点で、私はかなり(通常は問題が寝たのに)ハートビートにスリープ状態に入ることができ、しかし、私はほとんど常にコードを夢見続けます。また、シャワーを浴びたり、ウォーキングやランニングをしたり、自動操縦で私の心がそれに戻ったという些細な仕事をしているときでも、あなたは自分で言ったように突然気づきます。残念ながら、睡眠中の問題を魔法のように解決することはできません。それはあなたが説明し、経験しているように見えるものに近いでしょう:私の頭の中で回っている混乱した思考の巨大な渦巻きは、より大規模に理にかなっているように見えますが、解決策を明確に表現せず、多くの成功なしにこれらの考えの1つをつかんでそれに焦点を合わせ、明確に分析し、有用なものに変えます。そして、これは通常かなり面倒で苦痛でした。

リラクゼーションが役立つ

たぶん、あなたは少し落ち着いて、リラックスして仕事を減らす必要があります。あなたの心を離すために何かを見つけるようにしてください。当時、私はしばしば、この狂った思考の流れを本当に止める何かをするために、貴重な数時間の睡眠時間を放棄することになりました。それは逆効果のように思えますが、私は実際に、もっと眠り、休まないよりも、本当にリラックスできるいくつかのことをすることを好みました。ある意味で、神経質なバッテリーの気晴らしと、物理的なバッテリーの睡眠。

トリガーの特定

そうでない場合は、この状態をトリガーするために何か他のものが関係している可能性があります。これらの状況に存在する要素を分離し、他の環境でこの状態を再現できるかどうかを確認して、これらの要素も見つかるかどうかを確認してください。職場や家庭などでもっと起こりますか...

分離

また、あなたはすでにこれを聞いて試したことがあるかもしれませんが、私には軽度の空間障害を持つ友人がいます。通常、コンピュータで作業している場合、彼は暗い部屋にいて、あまりにも多くの複雑なビューや窓を持たないようにするのに役立ちます開いて(注意散漫を避けるため)、そして一般的に物事をむしろ最小限に保つために(デザインと色の両方、そして内容と表現の両方の面で)。

また、定期的に休憩を取り、自分に最適な方法に基づいて、1〜2時間ごとに短時間だけ心を自由に動かしてみてください。Pomodoroテクニックなどを採用するかもしれません(これとの相関関係については調査していませんが、休憩を強要するのに役立つかもしれません)。


非常に興味深い質問です。一度掘り始めたら、最初は自分の経験を思い出しませんでした。それが役に立てば幸い。より多くの研究論文については、Google Scholarで「空間的プログラミング」すばやく検索すると、さらに多くの結果が得られます。引用ツールを使用すると、最も引用された作品を特定するのに役立ちます。
ヘイレム

1
あなたの答えに多大な努力をしてくれてありがとう、そこには本当に良い情報があります。私は間違いなく1日約10時間、時にはそれ以上の時間でコードを書きます。ここではリラクゼーションが重要かもしれませんが、それを実現するのは難しいでしょう。あなたが言ったように、私はおそらく自分のプロジェクトに情熱を傾けすぎています。私は何か他のことをしたくありません。ですから、物理的にプログラミング以外のことをしているかもしれませんが、私の心はまだそれを続けています...私はあなたの心がそれを喜ばせるので止めることは不可能だとは思いません。
natli

@natli:ホールド習慣をキックするのと同じアプローチです。あなたが喫煙をやめたい場合は、タバコの代わりに何かをする必要があります。プログラミング以外に、本当に好きな趣味はありますか?次にそれを使用します。一部の人々にとっては、激しい活動が可能です(たとえば、スカッシュを取ります)が、他の人々にとっては反対です。非常に受動的なものが必要です。たぶんあなたは瞑想を試すことができます。あなたの心をきれいにすることを学ぶことは学ぶべき重要なスキルです。たとえば、睡眠の問題に大いに役立ちました。
ヘイレム

@natli:「努力」は気にしませんでした。私はそれを興味深い質問であり、ほとんどの記事は良い読み物でした。この種の研究は、心理的および神経学的なドライバーを特定しようとする場合によくあることですが、良い研究モデルを特定するのが難しいため、少し曖昧になることがあります。また、研究が人々への「ドアを閉める」方向に進む傾向があるとき、それは潜在的に怖いです。それは明らかに意図ではありません。あなたは研究の方向性を決めません。しかし、それでも結果になるかもしれません。それでも、私はそれが活発な研究分野であることを知ってうれしかったです。そのおかげで、助けてくれて嬉しいです。
ヘイレム

ポモドーロテクニックの場合は+1。私はまだ大学にいたとき、これを使って試験のために勉強しました。私はすべてに合格したので、うまくいったに違いありません。
ジェイミーテイラー

4

Ech ...これはコメント以上のものです。

「私は通常これを通して戦おうとします」

戦いを停止します。あなたは物事をねじ曲げて間違いを犯していますか?いくつかのユニークな問題を抱えているかもしれませんが、問題に過度に集中しすぎている人にとっては、脳が反抗する方法は普通です。私が若かったとき、その日の非常に意識的なレベルで考えることに費やされた私の日はあまりにも多く、私は自分自身に恩恵をしていませんでした。あなたの問題は、あなたが十分に一生懸命に努力していないということではなく、いつ終了するかわからないということです。

理にかなった時間に眠りにつくための唯一の方法は絶対に何も考えないことであり、10分ほどでそれを発見することにショックを受けたときに、バックバーナーに物を置くことの価値を認識するようになりました私は眠りに落ちるだろうが、通常、精神的疲労からcrash落する前に少なくとも数時間考え、考え、考えているだろう。

そこから私は、問題にあまりにも多くの意識的な考えを入れていたときを認識し、しばらくそれを放すことを学ぶのが簡単であることがわかりました。これが実際にあなたが問題を解決するのにどれほど貢献しているかを発見して驚いた。

以下をお勧めします。

  • 頭に何かがねじれてきて、休憩して散歩などに行く余裕がない場合は、ギアを切り替えて、しばらくの間、問題の非常に異なる部分に集中してみてください。

  • 昼食をスキップせず、常にオフィスを離れる。ドアに着いて停止地点に到達するか、ただそれを落とすまで自分を与えてください。頭に入れておく価値のあるものは、戻ってきたときにそこにあり、必要のないものはすべてなくなります。これを発見すればするほど、簡単になります。

  • 定期的に自分自身で1日中何も考えないようにします。あなたが自分自身にその水のコップを手に入れている間、それがほんの一分間であっても。

  • OOPまたはより問題の多いドメイン中心のアーキテクチャアプローチを活用して、考えないようにしてください。コードの最高レベルのアクターは誰ですか?それらは互いに複雑な関係を持つべきではありません。これにより、一度に1つの問題に集中できます。

役立つ可能性のあるコーディング原則

  • 「盗むことは間違っています」はほとんどすべての倫理/道徳に適用できるので、DRYは一般的なコーディング慣行です。非常にまれな例外があります。それらを非常にまれに保ちます。

  • 将来的に将来直面する可能性のある問題を過剰に解決する習慣がある場合は、それをやめます。必要以上に複雑ではないコードほど、将来性や「スケーラブル」なものはありません。「エンタープライズ」は嘘です。

  • 複雑なパターンは、報酬の長い箇条書きリストをしばしば約束します。ほとんどの場合、重要なことは3つだけです。読みやすいです。再利用は簡単です。変更は簡単です。武道家が最小限の力の使用に関して考え、その原則を複雑さに適用します。問題を解決するのに十分なことが理想的です。

  • 最初にインターフェースを作成します。いいえ、必要な場合にのみ使用されるC#/ Javaコンストラクトを意味するのではなく、オブジェクトのAPIを意味します。クラス/オブジェクトは何をする必要がありますか?それらの空のメソッドを記述し、引数名を付けます。完全に完了するまで、空白を埋めないでください。後で微調整しても構いませんが、できることを確立したら、一度に1つずつ行う必要があることに集中できます。あなたが自分の頭の中でいつものように多くのことを保持しようとしていることに気付くのは、プロセスの特定の段階に到達するずっと前に解決すべき問題の実装が行われているためかもしれません。メソッドがたくさんありますか?それは私が話しているものです。

診断?

空間認識の懸念は十分にカバーされていると思います。あなたがその面で決定するものは何でも、特にあなたが最初にそれについて気が進まなかったら、私はADDの事を再訪します。これは間違いなく、極端になったハイパーフォーカスによく似ています。最終的には、コーディングへの情熱があなたをこれらの問題を軽減する方法を見つけるように駆り立てます。あなたのキャリアがうまくいくと期待しています。


3

このぼけが見え始めるまで何時間働いていますか?私が仕事4で知っている平均的な優秀なプログラマーの多くは、コーヒーや昼食などをとる5時間前かもしれません。私が読んだこのようなスプリントの中で最も長いのは、Emacsを書いているときにGuy L SteeleとRichard M Stallmanが10時間かそこらのスプリントをしたときです。スティールは、彼が再びそのような長いスプリントをやりたくないと言い続けます。

プログラミングにかなり慣れていない場合(たとえば、5000時間未満(この数字は、10年でプログラミングを学ぶというピーターノーヴィグの投稿から来ました。専門プログラマーになることをお勧めする10000時間を半分にすることによって))、これは非常に聞こえます休憩の日が必要だと言う部分を除いて、正常です。おそらく、あなたは自分自身をそんなに長い休憩を必要とするために燃え尽きているのでしょうか?


2000時間以上の経験があるとは思わないが、実際に追跡したわけではない。また、2〜3日間の回復が必要になることはほとんどありません。最初の数日間は、翌日の問題に取り組むために十分な睡眠をとる必要がありますが、おそらく私は混乱を乗り越えようとして長すぎて働いています。それを十分に長く続けると、コードを新鮮な目で見て、私が犯した愚かな間違いをすぐに見ることができるように、コーディングから数日休む必要があります。何時間もかかったことが、言われた休憩から文字通りたった15分で完了しました。
natli

1

説明から、問題にはさまざまな原因が考えられます。

  • 未経験

  • 集中力の低下/疲労

  • 低空間能力

経験不足は、基本的に...より多くの経験を積むことで解決できます。どのように聞こえるかもしれませんが、もっと練習すれば、より頻繁に複雑なプログラミングの状況に自分自身を見出し、それらを処理することを徐々に学びます。現時点では、適切な接続を確立し、適切な結論を導き、これらの状況を解き放つ精神的なスキーマと反射神経が不足している可能性があります。あなたが経験を積むにつれてあなたの頭の中で起こります(私が理解するようにあなたはまだ22歳ですが、それはまだ非常に若いです)。

あなたの焦点を改善するためのさまざまなテクニックがあります。PomodoroGetting Things Doneは2つの例です。プログラミングの分野では、テスト駆動開発も、一度に1つの小さな達成可能な目標(赤ちゃんのステップ)に集中することを余儀なくされるため、本当にお勧めします。TDDアプローチでは、テストでクラスの責任を明確に定義し、コーディング時に実装のみに集中することを余儀なくされるため、「実際には属していないクラスに関数を置く」可能性ははるかに低くなります。 、いくつかのクラス間をジャンプして少しずつランダムに埋めるのとは対照的です。

疲労と注意力の低下は、頻繁に休憩する持続可能なリズムを採用することで回避できます。私たちの脳を尊重することで生産性を高めることについて、Linda Risingによるそのプレゼンテーションに興味があるかもしれません。Bornto Cycle

低空間能力については、あなたがそれについてできることは多くないのではないかと思います。しかし、ハードワークはそれを弱める可能性があり、プログラミングに必要な唯一のスキルではありません。創造性、情熱、熱意、厳しさ、分析スキル、鋭さ、ビジネス問題の十分な把握、コラボレーションスキルなどは、コードベースの精神的な視覚化よりも弱いものを補う以上のものです。

要するに、IMOが必要なのは:

  • しつけ

  • 練習

  • 持続可能なペース

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.