Як на програмування впливає просторова придатність? [зачинено]


19

Фон

Чим довше я працюю над проектом, тим менш зрозумілим стає. Наче я не можу більше розділяти різні класи / предмети в голові. Все починає змішуватися, і це вкрай важко знову розібрати. Я починаю розміщувати функції в класах, де вони насправді не належать, і роблю дурні помилки, такі як написання коду, який я згодом знаходжу, був на 100% застарілим; речі вже не чітко відображаються в моїй голові. Лише коли я не відскочу на кілька годин назад (а іноді й днів!), Я дійсно зможу знову побачити, що відбувається, і бути продуктивною.

Я, як правило, намагаюся боротися з цим, я так захоплююсь кодуванням, що я за все життя не знаю, що ще можу робити. Це коли речі можуть ставати справді дивними, я настільки нападаю в голові, що я якось втрачаю зв’язок з реальністю (певною мірою) в тому, що різні дії, такі як наливання склянки води, вже не трапляються на лайливому рівні. Це відбувається на автопілоті, під час якого майже вся моя чітка концентрація (чи це навіть річ?) Присвячена безмежному безглуздому вирішенню проблем (намаганням відокремити елементи коду). Це відчувається як програш.

Тому я здав тест на IQ деякий час тому назад (я вважаю, що це шкала інтелекту Велслера для дорослих), і виявилося, що моя просторова здатність була досить низькою. У мене все-таки пристойний загальний бал, трохи вище середнього, тому мені не доведеться кидати речі палицею на життя, але я трохи переживаю, що це така неприємність при написанні / розробці комп’ютерних програм, які я виграв ' я ніколи не зможу це зробити серйозно чи професійно.

Питання

Мене дуже цікавить, що про це думають інші люди ...

Чи може низька просторова здатність бути причиною вищеописаних проблем?

Як на програмування впливає просторова придатність?

Можливо, я повинен дивитись більше за доповненням АДД чи чогось подібного, тому що мені поставили діагноз «АДД» у віці 17 років (5 років тому), але ліки, які я отримав, схоже, не вплинули на мене так сильно, тому я ніколи не приймав все це серйозно.

Наскільки я знаю, люди народжуються з низькою / середньою / високою просторовою здатністю, тому я думаю, що цікаво дізнатися, чи є щасливіші, які краще програмісти за рівнем народження.


5
it turned out my Spatial Aptitude was quite low. I still got a decent score, just above average,Я не психолог, але якщо я правильно читаю англійську мову і розумію визначення середнього рівня, я не дуже розумію, як це означає quite low... Можливо, ви переосмислите це ... :)
haylem

1
Так само, IQ тести - це лайно, щоб підбити підсумки досліджень про них. Ви живете в США? (Просто запитую, тому що, здається, є більш широке використання тестів на IQ - і в значній мірі переоцінений страх ADD - в США, ніж де-небудь ще)
haylem

1
@psr: Я насправді не здивувався б. Це може не здатися, що це має багато спільного з цим, але люди, які мають проблеми з просторовими уявленнями та хронічною хворобою руху, зазвичай мають дещо важчий час, займаючись досить багато речей. Я б не вважав, що це трохи диференціатор (але я не психолог чи невролог), і що ваші фактичні навички програмування та пристрасть - це те, що буде відрізняти вас від решти пакету.
haylem

2
@haylem я взагалі не знаю, але більшість тестів на IQ в Інтернеті пройдуть по декількох осях. Просторова придатність, логічна майстерність тощо, і т. Д. Я думаю, що натлі говорять, середнє серед них було трохи вище середнього, але оцінка просторової здатності була досить низькою.
Ізката

1
Я сумую по роботі , де я пхати речі з палицею.
Ден Рей

Відповіді:


27

Насправді є деякі важкі дані про це, в основному, зібрані за останні 35 років, і я також зазнав декілька подібних явищ, хоча і не регулярно. Детальніше дивіться нижче.

Дані досліджень

Здається, існує деяка, але незначна кореляція на основі досліджень, проведених та узагальнених у наступних роботах. Як часто це стосується досліджень, моделі дослідження відрізняються між дослідженнями, і їх слід ретельно переглянути, щоб зрозуміти, чому результати представляють відмінності у висновках.

Візьміть його з дрібкою солі: деякі відносно датуються, тести на IQ з тих пір можуть змінитися. Я не проводив поглибленого пошуку, щоб знайти цитати кожної статті, щоб побачити, чи були вони підтверджені чи скасовані згодом.

Деякі посилання (особливо [PDF]) можуть не працювати для вас, якщо ви не маєте приналежності до бібліотеки, яка надає доступ до цього онлайн-вмісту.


Особиста думка

Попередження та розкриття інформації: Я НІКОЛИ не психолог НОР, невролог, але я вивчав і викладаю програмування як маленьким дітям (починаючи з 6), так і студентам університету (до 60!).

Навчаючись разом з ІН, викладаючи студентів як викладача університету, включаючи деяких студентів, які постраждали від просторових проблем (та інших з більш сильними вадами), я мушу сказати, що, хоча це могло бути (я не відслідковував своїх студентів на основі інвалідності, очевидно), що деякі зареєструвались би в нижній частині загальної кривої, я все ще чітко пам’ятаю деякі високі показники (і навіть один, зокрема, був майором класу принаймні 2 роки).

Моя думка, хоча це може мати ефект, і як показали деякі дослідження вище, це не пояснює найбільшу частину вашої здатності вчитися програмувати та мислити, як програміст. Це несуттєво, оскільки це не зупинить вас, щоб дізнатися, чи дійсно ви цього хочете, і не завадить вам працювати в загальному випадку, хоча це може (як це може бути у вашому випадку) зробити вам трохи складніше.

Практично немає меж того, що і як швидко ви можете навчитися .

Зрештою, жоден програміст не любить гарного виклику, правда? (Я дивлюся на тебе, RSI)


Особистий (можливо, не пов’язаний) досвід

Можливо, ти занадто пристрасний. Скільки годин ви працюєте в день і на тиждень? Ти регулярно робиш перерви?

Подібний випадок?

У період свого життя я працював днями щонайменше 14 годин кожного дня тижня, цілий рік, до того, коли це завершилося записом тижнів у 120 годин роботи перед екраном комп’ютера . Так, на тиждень залишається лише 48 годин, щоб їсти, спати, їхати на роботу та з роботи ( порада: уникайте водіння !! ), душа та інших життєво важливих функцій. У цьому конкретному моменті я міг би спати спати в серцебитті (хоча, як правило, маю проблеми зі сном), алеЯ майже завжди продовжував мріяти про код, і я раптом зрозумів би під душем або навіть під час ходьби чи бігу чи виконання завдань, що мій розум повернувся до нього в автопілоті, як ви це самі сказали. На жаль, я б не магічно вирішив проблеми уві сні; це було б ближче до того, що ти, здається, описуєш і переживаєш: гігантський вір заплутаних думок, що обертаються в моїй голові, який би (здавалося б) мав сенс на масштабніших масштабах, але не чітко виражав би будь-яке рішення і без особливого успіху захоплюючи одну з цих думок, щоб зосередитись на ній, чітко розчленувати її та перетворити на щось корисне. І це, як правило, було досить втомлюючим і неприємним.

Релаксація може допомогти

Можливо, вам потрібно трохи заспокоїтись і менше розслабитися та працювати. Спробуйте знайти щось, щоб зняти свій розум. Тоді я в кінцевому підсумку часто відмовлявся від дорогоцінних годин сну, щоб замість цього зробити щось, що насправді зупинить цей шалений потяг думок. Це здається контрпродуктивним, але я насправді вважав за краще зробити щось, де я б справді розслабився, ніж більше спав і не відпочивав. У певному сенсі відволікання на нервові батареї та сон для фізичних батарей.

Ідентифікація тригерів

Якщо це не ваш випадок, то, можливо, є ще щось, що займається спрацюванням цього стану для вас. Спробуйте виділити елементи, які є в цих ситуаціях, і подивіться, чи зможете ви відтворити цю умову в інших середовищах, щоб побачити, чи знаходите ви також ці елементи. Чи трапляється більше на роботі чи вдома тощо?

Ізоляція

Крім того, ви, можливо, вже чули і пробували це, але у мене є друг з незначною просторовою вадою, і зазвичай це допомагає йому, якщо він працює на комп’ютерах, перебувати в темнішому приміщенні, щоб не мати занадто багато складних поглядів і вікон відкриті (щоб уникнути відволікання) і взагалі, щоб тримати речі досить мінімалістично (і з точки зору дизайну та кольорів, і з точки зору змісту та репрезентації).

Спробуйте також робити регулярні перерви та дозволяти розуму вивільнятися на короткий проміжок часу кожні 1 або 2 години, виходячи з того, що для вас найкраще. Можливо, застосувати техніку Помодоро чи щось подібне (я не маю досліджень щодо кореляції з цим, але це може бути корисним для того, щоб змусити вас робити перерви).


Дуже цікаве запитання, як тільки ви починаєте копатися, і спочатку я не замислювався над власним досвідом. Сподіваюся, це допомагає. Для отримання додаткових наукових робіт швидкий пошук в Google Scholar для "просторового придатного програмування" дає тону більше результатів. Використання інструменту цитування може допомогти визначити найбільш цитовані роботи.
haylem

1
Дякуємо, що доклали стільки зусиль до вашої відповіді, якась справді хороша інформація. Я обов'язково пишу код близько 10 годин на день, іноді більше. Тут може бути ключове розслаблення, але це буде важко усвідомити. Як ви сказали, я, мабуть, занадто захоплений власними проектами; Я не хочу робити щось інше. Тому, хоча я фізично можу займатися чимось іншим, ніж програмування, мій розум все одно буде робити це ... Я не думаю, що це може завадити твоїй думці робити так, як це чорт воліє.
natli

@natli: це трохи такий самий підхід, як і звичка стримувати. Якщо ви хочете кинути палити, вам потрібно щось замінити сигаретою. Якесь хобі, яке вам дуже подобається, крім програмування? Потім використовуйте це. Для деяких людей можна зробити інтенсивні заняття (займатися сквош, наприклад ...), а для інших - навпаки: їм потрібно щось надзвичайно пасивне. Можливо, ви могли б спробувати медитацію. Навчитися очищати свій розум - важлива навичка, яку потрібно навчитися. Наприклад, це дуже допомогло при моїх проблемах зі сном.
haylem

@natli: Я не проти "зусиль". Я вважав це цікавим питанням, і більшість статей були добре прочитаними. Таке дослідження іноді, як часто, намагаючись визначити психологічних та неврологічних водіїв, може бути дещо невиразним, оскільки їм складно вказати хорошу модель дослідження. Також потенційно страшно, коли дослідження мають тенденцію йти в напрямку "закривання дверей" для людей. Очевидно, це не є наміром: ви не орієнтуєтесь на дослідження; але все-таки це може бути результат. І все-таки я радий дізнатися, що це активний напрямок досліджень . Дякую за це, і радий, що це допомогло.
haylem

+1 за техніку Помодоро. Я використовував це для вивчення іспитів, коли я ще був в університеті. Це, мабуть, спрацювало, бо я пройшов усе <- ціле речення засноване на химерній науці, не сприймати його серйозно.
Джеймі Тейлор

4

Ех ... це заслуговує більше, ніж коментар.

"Я зазвичай намагаюся боротися через це"

Перестань битися. Ви все вивертаєте і помиляєтесь? Можливо, у вас є деякі унікальні проблеми, але спосіб, коли ваш мозок бунтує, є нормальним для тих, хто занадто довго проводив гіперфокусованість на проблемі. Коли я був молодший, занадто багато свого дня провів на роздумах на такому високосвідомому рівні, і я не робив собі ніяких прихильностей. Ваша проблема не в тому, що ви не дуже стараєтесь, це те, що ви не знаєте, коли потрібно вийти.

Нарешті я навчився цінувати цінність надягання речей на задній конфорку, коли зрозумів, що єдиний спосіб заснути в розумну годину - це я сам думати про абсолютно нічого і був шокований, коли виявив це протягом 10 хвилин або близько того Я засинав, тоді як, як правило, думав-думав-думав принаймні пару годин, перш ніж зірватися з розумового виснаження.

Звідти мені було легше навчитися розпізнавати, коли я вкладав занадто багато свідомої думки в проблему, і просто відпустити її на деякий час. Я був здивований, коли дізнався, наскільки це насправді сприяє вирішенню проблеми.

Я рекомендую наступне:

  • Коли щось закручується в голові, і у вас немає розкоші бути в змозі зробити перерву і піти на прогулянку чи щось подібне, спробуйте переключити передачі і зосередитись на деякому часі проблеми на деякий час.

  • Ніколи не пропускайте обід і завжди залишайте офіс. Подавайте себе, поки не доїдете до дверей, щоб підійти до місця зупинки або просто відкинути його. Все, що варто тримати в голові, буде там, коли ви повернетесь до нього, і все те, що вам не потрібно було, буде зникло. Чим більше ви це виявите, тим легше стане.

  • Регулярно ви самі будете думати ні про що протягом дня. Навіть якщо це лише хвилина, поки ви отримаєте собі той стакан води.

  • Спробуйте скористатися OOP або будь-яким іншим архітектурним підходом, орієнтованим на проблемний домен, щоб менше думати. Хто з акторів у вашому коді на найвищому рівні? Вони не повинні мати складних відносин між собою. Це дозволяє одночасно зосередитись на одній частині проблеми.

Деякі принципи кодування, які можуть допомогти

  • DRY - це загальна практика кодування, оскільки "Красти неправильно" можна застосувати майже до всієї етики / моралі. Є дуже рідкісні винятки. Зберігають їх дуже рідко.

  • Якщо у вас є звичка надмірно вирішувати проблеми, з якими ви зможете зіткнутися з часом у майбутньому, зніміть це. Ніщо не є більш надійним або «масштабованим», ніж код, який не є складнішим, ніж це має бути. "Підприємство" - брехня.

  • Складні зразки часто обіцяють довгі списки нагород від кульових точок. Є лише 3 речі, які мають мати значення більшу частину часу. Це легко читати. Її легко використовувати повторно. Це легко змінити. Подумайте з точки зору мінімального використання сили, яку може би артист бойових дій, і застосуйте цей принцип до складності. Саме для вирішення проблеми ідеально.

  • Напишіть свій інтерфейс спочатку. І ні, я не маю на увазі конструкції C # / Java, які слід використовувати лише за потреби, я маю на увазі API ваших об'єктів. Що потрібно робити класу / об’єкту? Напишіть ці порожні методи та дайте їм назви аргументів. Не заповнюйте заготовки до повного завершення. Добре робити пізніші налаштування пізніше, але як тільки ви встановите, що потрібно робити, ви можете зосередитись на тому, як потрібно робити кожну річ по одній. Причина, по якій ви можете намагатися утримати стільки, скільки у вас часто, може бути через те, що у вас відбувається реалізація проблем, які повинні були бути вирішені задовго до того, як ви потрапили на певний етап процесу. У вас багато і є методи? Це саме те, про що я кажу.

Діагноз?

Я думаю, що питання щодо просторової обізнаності добре висвітлено. Що б ви не вирішили на цьому фронті, я б повернув додати річ ADD, особливо якщо ви з цього не бачилися вперше. Це, безумовно, звучить дуже схоже на гіперфокус, що перейшов до крайності. Зрештою, нехай ця любов до кодування змусить вас знайти способи пом'якшити ці проблеми, і я думаю, що ваша кар'єра вийде просто чудово.


3

Скільки годин ви працюєте, перш ніж почати бачити це розмиття? Багато середніх до хороших програмістів, яких я знаю з роботи 4, може бути за 5 годин до прийняття кави чи обіду чи чогось іншого. Найдовший з таких спринтів, про які я читав, це коли Гай Л Стіл та Річард М Сталлман здійснили 10-годинний спринт під час написання Emacs. Стіл продовжує говорити, що не хотів би знову робити такий довгий спринт.

Якщо ви досить новачок (менше, ніж, скажімо, 5000 годин (це число надійшло від посади Пітера Норвіга про навчання програмуванню за десять років, зменшивши вдвічі 10000 годин, які він рекомендує стати експертом-програмістом)) програмування, це звучить дуже нормально, за винятком тієї частини, де ти кажеш, що потрібні дні перерви. Можливо, ви вигораєте себе, щоб змусити себе потребувати такої тривалої перерви?


Я не думаю, що я маю понад 2000 годин досвіду, хоча це не зовсім так, що я слідкував. Крім того, потрібна пара (читати; два) дні одужання досить рідко. Перші пару днів мені потрібен лише добрий нічний сон, щоб вирішити проблеми на наступний день, але я, мабуть, працюю занадто довго, намагаючись боротися через розгубленість. Якщо я продовжую це досить довго, я, безумовно, закінчую необхідність взяти на себе кілька днів кодування, щоб мати змогу подивитися на мій код свіжими очима і миттєво побачити дурні помилки, які я робив. До речі, на що пішло кілька годин, буквально знадобиться лише 15 хвилин після перерви.
natli

1

З того, що ви описуєте, у вашої проблеми можуть бути різні причини:

  • Недосвідченість

  • Втрата фокусу / втома

  • Низькі просторові здібності

Недосвідченість можна вирішити… ну, набувши більше досвіду, в основному. Як би очевидно це не звучало, практикуючи більше, ви частіше опиняєтесь у складних ситуаціях програмування і поступово навчитеся поводитися з ними. Зараз вам можуть не вистачати розумових схем і рефлексів, щоб зробити правильні зв’язки, зробити правильні висновки та розблокувати ці ситуації, що може зробити так, що ви повільні і пишете "застарілий код", але ці схеми вирішення проблем будуть прогресивно відбудеться в голові, коли ти станеш більш досвідченим (тобі лише 22 роки, як я розумію, який ще дуже молодий).

Існують різні методики для покращення фокусу. Помодоро та " Виконання справ" - два приклади. У галузі програмування тестова розробка - це те, що я дуже рекомендую, оскільки вона змушує вас зосередитися на одній невеликій, досяжній цілі за раз (кроки дитини). При TDD-підході ви набагато менше шансів "помістити функції в класи, до яких вони дійсно не належать", оскільки ви змушені чітко визначити відповідальність свого класу за допомогою тесту, а потім зосередитися виключно на його реалізації, коли кодуєте , на відміну від стрибків між кількома класами та заповнення їх випадковим чином помаленьку.

Краплі втоми та уваги можна уникнути, приймаючи стійкий ритм із частими перервами. Ви можете зацікавити цією презентацією Лінди Райзінг щодо того, щоб бути більш продуктивним, поважаючи наш мозок: Народжений у циклі .

Що стосується низьких просторових здібностей, я боюся, що ви не можете багато з цим зробити. Однак наполеглива робота може її послабити, і це далеко не лише вміння, необхідне для програмування. Такі речі, як творчість, пристрасть, ентузіазм, строгість, аналітичні навички, гострота, добре розуміння ділових питань, навички співпраці, можуть більше ніж компенсувати слабку, ніж середню розумову візуалізацію кодової бази.

Якщо коротко, то, що вам потрібно IMO, це:

  • Дисципліна

  • Практика

  • Сталий темп

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.