Имея дело с разочарованием, когда вещи не работают [закрыто]


62

Вы когда-нибудь пытались реализовать что-то простое, но по какой-то странной причине это не работает.

Таким образом, вы пытаетесь найти возможное решение, но тогда что-то еще не работает. Вы продолжаете пробовать разные обходные пути, но каждый раз что-то другое не работает.

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

В вашей компании нет никого, кто мог бы вам помочь, и вы собираетесь пробить кулаком свой экран.


В этот момент вы настолько разочарованы, что больше не можете ясно думать о проблеме. Что вы должны сделать на этом этапе? Или что вы можете сделать, чтобы не достичь этой точки?


3
Я думаю, что у нас с тобой был один опыт.
AndrewKS

19
Положи его на ТАК и предложи награду.
JeffO

4
Если бы это было так просто. Некоторые из проблем такого рода относятся к числу многих вопросов, на которые никто не отвечает / не отвечает / не отвечает.
Адитья П

2
Этот вопрос, кажется, не по теме, потому что он принадлежит на workplace.stackexchange.com
Килиан Фот

Такая же проблема у меня и тот же вопрос.
Анвар

Ответы:


69

Хотя это реальная проблема, это не относится к программированию. Однако ИМХО настолько важно, что заслуживает места на этом форуме.

Мои предложения: сделать перерыв . Ходите гулять, медитируйте, спите, занимайтесь физическими упражнениями * - делайте что-то совершенно другое, чтобы позволить вашему мозгу расслабиться и выйти из психической колеи , позволяя вашему подсознанию спокойно работать над проблемой. Обычно он дает результаты на удивление быстро - ему просто нужно сообщить об этом. Но пока ваш сознательный ум отчаянно повторяет одни и те же циклы мыслей снова и снова, он не сможет слушать что-либо еще.

что вы можете сделать, чтобы не достичь этой точки?

Техники расслабления и осознанности являются ключом к преодолению стрессовых реакций и позволяют вашему разуму четко сосредоточиться. И практика этого действительно окупается. Когда кто-то испытывает это, он уже может заметить повышение уровня стресса до того, как разочарование может наступить . Затем можно прервать цикл мыслей, например, сделав несколько глубоких вдохов или пару минут расслабиться. Это может быть все, что нужно на данный момент.

* целуй свою партнершу, ласкай своего питомца - предложения от моей жены :-)


12
+1, наш разум ВСЕГДА пытается решить проблемы, просто потому, что мы сознательно не пытаемся решить его, наш ум все еще отрабатывает. Вот почему вы, кажется, запомнили имя внезапно, через час после того, как не смогли вспомнить его. И просыпаюсь с проблемой, решенной посреди ночи. Отличная книга, объясняющая это, - Прагматическое мышление и обучение: рефакторинг вашей
посуды

+1 Не мог бы сказать лучше сам. Я на самом деле выхожу из куба, выхожу из офиса, гуляю по городу, звоню жене и возвращаюсь в офис. Работает почти 100% времени.
Мистер Муравей

9
И не работайте более 8 часов в день. Чем больше вы устали, тем легче вам разочароваться.
HLGEM

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

1
@junxiong, эти методы можно использовать даже в условиях нехватки времени, но это требует опыта. Кто-то, кто, например, медитировал годами, может контролировать и успокаивать себя в считанные минуты или даже секунды. Но пытаться научиться чему-то новому - и особенно внимательности - под давлением времени очень сложно. Если ничего не помогает, примите это как важный урок, и после истечения крайнего срока начните готовиться к следующему кризису , проанализировав свое поведение и отработав некоторые методы, упомянутые здесь или в других ответах.
Петер Тёрёк,

35

теперь это было 3 часа, когда это должно было занять у вас 10 минут.

Волшебное слово должно . Вычеркните это из своего словарного запаса.

Кто сказал, что это займет 10 минут? Кто конкретно? Какова была фактическая основа для их требования?

Если вы делали это в 3 раза раньше, и каждый раз, когда вы были близки к 10 минутам, у вас есть рациональная основа для этого .

Если вы никогда не делали этого раньше, сказать « должен» - значит только настроить себя на неудачу. Вы должны прекратить использование следует сегодня.


2
Конечно, есть много вещей, которые вы сделали миллион раз, что однажды просто перестали работать. Поврежденный файл в некотором автоматически сгенерированном коде может быть чертовски разочаровывающим, а иногда чрезвычайно сложным для отладки. Я думаю о случаях, когда я случайно назвал две вещи одним и тем же именем, а затем использовал инструмент рефакторинга, чтобы изменить все экземпляры, в которых встречалось имя. Я несколько раз делал это с головокружительным движением с классами, которые конфликтовали с классами, сгенерированными в ORM. Сделайте что-нибудь подобное, и вам лучше надеяться, что вы хорошо справились о регистрации.
Морган Херлокер

1
@Prof Plum: «Я несколько раз двигался с костью». Отличный момент. Это означает, что ожидание должно включать время для этого движения с головой. Опять же, «должен» должен включать в себя все факты, а не факты «если все пошло правильно», и исключать факты «движения головы».
S.Lott

22

Найдите кого-нибудь, чтобы использовать его в качестве декорации

Даже если никто не знает, над чем именно вы работаете, неплохо было бы часто говорить об этих вещах. Одно лишь использование кого-то в качестве декорации может заставить ваш разум начать вращаться. Вы обнаружите, что думаете о новых вещах, чтобы попробовать. Это также поможет вам снять стресс и немного подружиться. В целом, команде также полезно чувствовать себя комфортно, делясь друг с другом и сочувствуя друг другу, создавая командную атмосферу для решения подобных проблем.


7
Даже если человек не имеет ни малейшего понятия о том, что вы ему говорите, просто сам факт обсуждения помогает прояснить ситуацию.
Майкл Браун

2
@ Майк, даже если этот «человек» - плюшевый мишка, он все еще работает в удивительно большом проценте случаев (в AFAIR Словаре Хакеров есть реальная история об этом)
Петер Тёрёк

3
@ Майк Браун - см. «
ocodo

1
Отладка резиновой утки? Пфф. Я держу Debugging Goomba на своем столе именно по этой причине, утки лучше для управления проектами.
Glasnt

Да, я собирался сослаться на это ... было просто лень подтягивать ссылку: P
Майкл Браун

9

Уйдите на время и сделайте что-нибудь еще. Хорошо выспитесь ночью и вернитесь к проблеме утром.

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


9

У меня есть несколько шагов, когда я достигну этой точки. Обычно я могу найти решение, если найду время отойти назад и подумать.

Шаг 1: Уйдите от проблемы и очистите голову. Возвращайтесь, когда вы не расстроены, и можете взглянуть на это со свежим умом.

Шаг 2: Вернитесь к коду и посмотрите, что вы пропустили. Пусть кто-нибудь придет и будет вторым взглядом, если вы просто не можете сделать из этого головы или хвосты.

Шаг 3: Удалить код из уравнения. Какую проблему вы пытаетесь решить? Запишите это на листе бумаги или доске. Обсудите проблему с кем-то, чтобы узнать его мнение о проблеме и ее решении.

Шаг 4: Обратитесь к сообществу, чтобы узнать, есть ли у них решение или кто-нибудь еще сталкивался с той же стеной.

По сути, их можно обозначить как «Прекратить взлом и отойти от кода».


Я использую доску все время. Очень полезно для визуализации при отладке.
Майкл К

Шаг 3 известен как изменение области проблемы, чтобы увидеть, можно ли повторно использовать параллельный успех. Это также называется использованием метафоры.
Куруку

2

Я хотел бы задать вопрос здесь, и сообщество поможет вам решить его. Менее стрессовые таким образом.


6
Иногда просто написание вопроса приведет к решению
JoelFan

1

У меня есть другое решение - спать !

Когда вы разочарованы проблемой, вы не можете легко выйти из нее. Так что лучше, если вы так устали, пытаясь решить проблему, а затем заснуть.

Когда вы просыпаетесь, у вас появляется свежее чувство, и вы снова можете ясно думать о проблеме. Я делаю это иногда.


Не быть придирчивым, но это «другое» решение было упомянуто как минимум в двух предыдущих ответах.
Петер Тёрёк

1
что я имел ввиду -> не просто отдохнуть, погулять или поспать, а устать, пытаясь решить проблему, а потом спать. потому что, когда у вас есть проблема, вы не можете легко ее
решить

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. Современные дискуссии. Люди до сих пор спорят о безобразии скобок Lisp, о достоинствах чистоты Pythons, или о том, как исчезают некоторые языки, такие как Cobol или Fortran, и т. Д., И т. Д. Действительно люди? Это то, о чем мы спорим? Давайте поговорим о параллелизме, или о лучших способах проектирования более безопасных систем, или о том, как логическое программирование может улучшить нашу жизнь. Давайте перестанем думать как программисты и начнем думать как дизайнеры завтрашнего мира.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.