Чому думка про помилку іноді не допомагає вирішити її? [зачинено]


12

Вчора я провів добру частину дня, намагаючись виправити помилку, яку я вважав тривіальною. Я ходив по колах, не маючи поняття, що було не так. Переписування великих частин коду. Перевірка SO. Ще немає радості.

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

Поки я був дома, я не активно думав над проблемою. І все ж вихід із ситуації, що дав мені змогу вирішити це.

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

Чому це працює?

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

Я думаю, я намагаюся розробити, як оптимізувати цю підсвідому обробку (або все, що відбувається)


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

1
Якби тільки бета- когнітивний науковий обмін був у бета-версії!
Метт Еллен

1
Тому що мислення - це загадковий процес.
davidk01


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

Відповіді:


22

Занадто зосереджений на проблемі заважає вам зробити крок назад. Коли ви налагоджуєте код, ви, як правило, повторюєте ті самі тести.

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

Ось чому досить часто колега може випадково зазирнути через ваше плече і вказати на проблему (і рішення) за кілька секунд.

Вони не в такому ж психічному стані, як ви.

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

Але найпотужніша техніка - це просто ... прохання про допомогу .


9
+1, коли ви звертаєтесь за допомогою, ви схильні визначати проблему з точки зору того, що інші можуть зрозуміти, отже, у цьому процесі ви отримаєте більше розуміння. наприклад, коли ви опублікуєте тему на веб-сайті Q&A або форумах негайно, ви отримуєте уявлення про те, як діяти далі ..
Aditya P

1
+1 і +1 для @AdityaGameProgrammer: опис проблеми є настільки корисним, що навіть опис його уявній людині - чи фігурі дії, рослині чи будь-якому іншому - часто викликає те саме нове мислення (як описано багатьма) .
Меттью Фредерік

6

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

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

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

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


1
Я читав про якогось професора, який би тримав плюшевого ведмедика на столі поза його кабінетом. Перш ніж студенти попросили його допомоги, вони повинні спочатку пояснити свою проблему ведмедику.
Майкл К

Виглядають досить схоже на те, що Джефф Етвуд написав у своєму блозі тут blog.codinghorror.com/rubber-duck-problem-solving . Я насправді думаю, що це може дуже допомогти. Скільки разів у вас було наполовину написане запитання для ТА, а потім реалізуйте відповідь? У мене це було зовсім небагато часу :)
Ремі

5

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

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

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


4

З мого особистого досвіду та того, що я був свідком молодших розробників, яких я навчаю, ми всі підходимо до проблеми з припущеннями та очікуваннями. Ми припускаємо, що функція x виконує завдання у, щоб отримати результат z. Це завжди є, так навіщо це міняти? Оскільки ми все більше і більше приділяємо увагу проблемі, ми вважаємо, що ми висвітлили основи, і ця проблема справді повинна бути набагато складнішою, ніж коли ми її вирішували спочатку. Додайте втому до зростаючого списку речей, які ми вважаємо правдивими, але насправді не підтверджені, і ви згодом налаштуєте себе на повний "WTF".

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

Тепер, коли молодший просить мене про допомогу, вони знають, що перше питання, на яке вони повинні відповісти, - це "які ваші припущення?". Навіть спроба відповісти на цю проблему може допомогти вам зняти ваші ментальні блоки.


3

Я здогадуюсь, ваш мозок, як і м'язи, втомлюється. Перерва дозволяє йому відпочити, поповнити киснем / паливом і т. Д. І почати працювати знову.

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


3

Мені подобається називати це часом інкубації ідей та проблем.

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

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

ознайомтеся з цими психічними посиланнями: поради щодо творчості та проблеми з дрімотою


2

"Всі ми іноді колються трояндою . На жаль, коли ми так сильно концентруємося на болі, ми забуваємо про красу троянди".


2

Я виправив кілька критичних помилок у своїй кар’єрі під час душу.

Я не психолог, але, мабуть, різниця:

  • сидячи перед комп’ютером, я бачу вихідні коди, точки перерви, printfвиходи ...

  • у ванній кімнаті в коді працюють коди.


1

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

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


1

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

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

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