Справа з розчаруванням, коли все не працює [закрито]


62

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

Тож ви спробуйте можливе рішення, але тоді щось інше не працює. Ви продовжуєте пробувати різні способи вирішення, але щоразу щось інше не працює.

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

У вашій компанії немає нікого, хто може допомогти, і ви збираєтесь провести кулак через екран.


У цей момент ви так засмучені, що вже не можете чітко думати про проблему. Що робити в цей момент? Або що ви можете зробити, щоб не досягти цієї точки?


3
Я думаю, що ми з вами просто / мали однаковий досвід.
AndrewKS

19
Поставте його на SO та запропонуйте щедроту.
JeffO

4
Якби це було так просто. Деякі подібні проблеми є серед багатьох безлічі загиблих / без відповіді / невдач.
Aditya P

2
Це питання видається поза темою, оскільки воно належить на workplace.stackexchange.com
Kilian Foth

Та сама проблема мого і те саме питання.
Анвар

Відповіді:


69

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

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

що ви можете зробити, щоб не досягти цієї точки?

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

* поцілуйте свого партнера, погладьте свого вихованця - пропозиції моєї дружини :-)


12
+1, наш розум ВСІМО намагається вирішити проблеми, просто тому, що ми не свідомо намагаємося вирішити цю проблему, наш розум все ще тужить. Ось чому ви, здавалося б, запам'ятаєте ім’я незвично, через годину після того, як не зможете його згадати. І прокидайтеся з проблемою, вирішеною посеред ночі. Чудова книга, що пояснює це: Прагматичне мислення та навчання: Refactor Your Wetware
CaffGeek

+1 Я не міг би сказати краще і сам. Я фактично виходжу з кубика, виходжу з кабінету і гуляю по місту, телефоную дружині, а потім повертаюся до офісу. Працює майже 100% часу.
Містер Ент

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

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

1
@junxiong, можна використовувати ці методи навіть під тиском часу, але для цього потрібен досвід. Хтось, наприклад, медитуючи протягом багатьох років, може контролювати і заспокоювати себе за лічені хвилини чи навіть секунди. Але намагатися навчитися чомусь новому - і особливо уважності - під тиском часу дуже важко. Якщо все інше не вдається, сприйміть це як важливий урок, і як тільки закінчиться термін, починайте готуватися до наступного кризу , аналізуючи свою поведінку та практикуючи деякі прийоми, згадані тут, або в інших відповідях.
Péter Török

35

зараз минуло 3 години, коли це повинно було зайняти у вас 10 хвилин.

Чарівне слово має бути . Закресліть це своїм словником.

Хто сказав, що це має зайняти 10 хвилин? Хто конкретно? Що було фактичним підґрунтям їх вимоги?

Якщо ви робили 3 рази раніше, і кожен раз, коли ви були близько 10 хвилин, у вас є раціональна основа для необхідності .

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


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

1
@Prof Plum: "Я кілька разів зробив цей рух з кісткою". Відмінний момент. Це означає, що очікування повинно включати час для цього кроку на голові кісток. Знову ж таки, "слід" містити всі факти, а не факти, "якщо все пішло б правильно", і виключаючи факти "ходової кістки".
S.Lott

22

Знайдіть когось використовувати для звучання дошки

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


7
Навіть якщо людина не має поняття про те, що ви йому говорите, саме акт його розмови допомагає з’ясувати речі.
Майкл Браун

2
@Mike, навіть якщо ця людина є плюшевим ведмедиком, вона все ще працює в дивно великому відсотку випадків (про це є реальна історія у словнику Хакерського словника AFAIR)
Péter Török


1
Налагодження гумової качки? pfft. Я тримаю на настрій Goomba на своєму столі саме з цієї причини, качки краще для управління проектами.
glasnt

Так, я хотів сказати, що ... було занадто ліниво, щоб підняти посилання: P
Майкл Браун

9

Ходіть на деякий час і робіть щось інше. Добре заснути і вранці поверніться до проблеми.

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


9

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

Крок 1: Відійдіть від проблеми і очистіть голову. Повертайтеся, коли ви не засмучені, і можете поглянути на це свіжим розумом.

Крок 2: Поверніться до коду і подивіться, чи щось ви пропустили. Нехай хтось прийде і буде другим набором очей, якщо ви просто не можете зробити голови або хвости.

Крок 3: Видаліть код з рівняння. Яку проблему ви намагаєтеся вирішити? Випишіть це на аркуші паперу чи дошці. Поговоріть проблему з кимось, щоб отримати їх думку щодо проблеми та рішення.

Крок 4: Зверніться до громади, щоб побачити, чи є у них рішення чи хтось хтось колись потрапив у ту саму стіну.

В основному, вони можуть бути зведені як "Зупинка злому та відійти від коду".


Я весь час використовую дошку. Дуже корисно для візуалізації під час налагодження.
Майкл К

Крок 3 відомий як зміна області проблеми, щоб побачити, чи можна повторно використовувати паралельний успіх. Це також називається використанням метафори.
Куруку

2

Я б тут поставив запитання, і громада допоможе вам вирішити його. Менш напружений таким чином.


6
Іноді саме написання питання призведе до вирішення проблеми
JoelFan

1

У мене є інший вид рішення - СЛІПИНГ !!

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

Коли ви прокинетесь, у вас з’явиться свіже відчуття, і ви знову зможете чітко подумати над проблемою. Я роблю це іноді.


Щоб не бути прискіпливим, але це "інше" рішення було згадано принаймні у двох попередніх відповідях.
Péter Török

1
що я мав на увазі -> не просто зробити перерву, гуляти чи спати, а втомитися, намагаючись вирішити проблему, а потім спати. тому що, коли у вас є проблема, ви не зможете легко вийти з неї
ruben

1

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

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


1

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

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

Отож є моє рішення: менталізувати це як бій та випробування на мужність та витривалість . Якщо я не можу вирішити проблему, то я " живу, щоб битися ще один день ".

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


0

Ну ... я думаю, вам потрібна нова кар'єра або зовсім новий набір очікувань. Хоча це, звичайно, не часто, зайняття 3, 4, 8, 10 або 40 годин для виконання того, що ви спочатку вважали, буде 10-хвилинною роботою, звичайно, не рідкість у бізнесі з програмним забезпеченням. Я впевнений, що у більшості розробників, які працюють над чим-небудь навіть середньої складності, 2-денні завдання перетворилися на завдання на 1 місяць, як тільки вони заглибилися в нього і зрозуміли проблему.

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


0

Дві пропозиції:

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

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

    Перестаньте думати про це.

    Подрімати. (піти на прогулянку чи щось таке)

    Відповідь буде там, коли ти прокинешся.

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


0

Коли я коли-небудь стикаюся з чимось, що не працює, я завжди пам'ятаю цю цитату:

Коли ви в пеклі, продовжуйте ходити, оскільки це найкраще, що можна зробити в цей момент.

Відпочиньте, спробуйте освіжити себе і зосередитись на проблемі з новим рівнем енергії.


0

відгуки інших рекомендацій:

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

і додавання:

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

0

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

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


0

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

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

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

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

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

  5. Сучасні дискусії. Сьогодні люди все ще дискутують про потворність дужок Ліспа, чи про заслугу чистоти пітонів, або про те, як деякі мови, такі як Кобол чи Фортран, вимерли, і т. Д. І справді люди? Про це ми дискутуємо? Поговоримо про паралелізм, або про кращі способи проектування більш безпечних систем, або про те, як логічне програмування може покращити наше життя. Давайте перестанемо думати, як кодери, і почнемо думати, як дизайнери світу завтрашнього дня.

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

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