Можете ли вы поделиться своими секретами или передовыми методами решения проблем?

Я слышал, что Кент Бек, который возглавляет XP, использовал так много цветных карандашей, чтобы стимулировать его мозг, когда ему нужно было решить проблему. Я попробовал метод Кента, и это действительно сработало для меня. Я не знаю почему. Есть ли у вас какой-либо специальный метод для решения сложных задач? Я действительно хочу узнать о твоей великой тайне.


Резюме: Люди рекомендуют следующие вещи:

  • Сделайте что-нибудь еще: пойти на рыбалку, прогуляться,
  • Поговорите с другими людьми: Разбить проблему на куски Обзор кода
  • TDD
  • Опыт
  • Повторить и повторить
  • Сосредоточьтесь на понимании проблемы.

Спасибо большое

Ответ 1

Часто лучше всего описать проблему кому-то. В половине случаев, когда я спрашиваю эксперта, ответ приходит ко мне в середине вопроса. Если есть что-то, что я только полупонимаю, и я пытаюсь объяснить это кому-то другому, я полностью понимаю его.

Просто поговорите об этом.

Ответ 2

Для меня ваш вопрос можно сделать двумя способами. Один из них - как мне создать решение проблемы программирования, а другое - как решить проблему, которая существует (т.е. отладка).

Программирование:

  • Пока не думайте о реализации.
  • Убедитесь, что у вас есть вся необходимая информация.
  • Начните разбивать проблему на куски. Для этого я использую план. В настоящее время используется My Life Organized.
  • Не беспокойтесь о решении всей проблемы. Начните с того, что вы знаете, и сохраните его просто. Я использую PDL для описания решения.
  • После того, как вы завершили проход, продолжайте возвращаться к 2 и повторите. Используя outliner, я могу продолжать увеличивать уровень детализации и легко перемещать эти детали, поскольку решение становится более ясным.
  • Если есть части головоломки, на которые у вас нет ответа, добавьте это в свой план и опишите, каким будет следующий шаг для решения этой части. Это может быть больше исследований, бесед с кем-то или получения более подробной информации от пользователей.
  • Вернитесь к шагу 2 и повторите, пока не найдете свое решение.
  • Внедрите свое решение на выбранном вами языке. Вероятно, вы можете использовать контур в качестве комментариев.

Debugging:

  • Вам нужно сделать все возможное, чтобы понять, что на самом деле происходит.
  • Составьте список того, что вы знаете, чтобы быть правдой (факты).
  • Сделайте все возможное, чтобы сделать его повторяемым как можно проще.
  • Придумайте свой лучший подход к атаке проблемы (проконсультируйтесь с другими, google и т.д.).
  • Попробуйте свой подход к устранению проблемы.
  • Если он исправляет это, то посмотрите, можете ли вы его снова сломать, а затем исправить его по-настоящему. Помогает вам доказать, что вы действительно поняли и устранили проблему.
  • Если это не исправить, отмените изменения и вернитесь к шагу 1 и повторите

После нескольких итераций вы должны полностью понять проблему и узнать лучшее решение для своей ситуации. Бывают моменты, когда вы просто не можете это получить. Хорошо отходить, спать на нем и быть готовым атаковать его свежим. Определенно говоря об этом и показывая свои проблемы другим, вы можете лучше понять проблему и получить свежие идеи.

Ответ 3

Ну, я могу сказать вам, что делать не:

Выполнение решений с вашим ИТ-менеджером в зале заседаний через 5 секунд после распознавания проблемы во время разговора с клиентом в конференц-связи:)

Ответ 4

  • Напишите unit test
  • Наблюдайте за ошибкой, затем пройдите
  • Повторяйте, пока проблема не будет решена.

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

Ответ 5

Опыт.


Серьезно, какой ответ вы ожидаете от своего вопроса?

Нет никакого алгоритма, который позволит вам решать всевозможные проблемы.

Будьте исчерпывающими, изучайте каждый вариант, помните, что вы узнали, повторно используйте то, что знаете, рассмотрите другие варианты, спросите людей, которых вы знаете, зайдите в Google, помните, что вы узнали, повторите использование того, что вы знаете, креатив, быть хаотичным, помнить, что вы узнали, повторно использовать то, что вы знаете, думать нестандартно, подталкивать проблему в странном направлении, помнить, что вы узнали, повторно использовать то, что знаете.

Ответ 7

Основываясь исключительно на опыте, и когда я получаю свои лучшие откровения/моменты эврики:

  • Возьмите душ
  • Ложись в постель, пытаясь засыпать

Ответ 8

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

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

Позже, после того, как я знаю, что у меня это, я объединю строки вместе, но только до тех пор, пока я НЕ УВЕРЕН, что проблема решена.

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

Ответ 9

Возможно, это тоже нужно учитывать:

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

Ответ 10

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

Ответ 11

Я вообще не начинаю кодирование сразу. Я нарушаю проблему и делаю заметки на ней, пока не доберусь до места, где я знаю, что мне нужно делать с точки зрения кода. Я использую файлы org-mode emacs, а иногда и ручку в зависимости от типа проблемы.

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

Ответ 12

Я выключаю компьютер, вытаскиваю стержни и провожу несколько часов рыбалки.

Это потрясающая деятельность по расчистке ума и заботе об этих проблемах. Лучше всего, чем меньше рыбы вы поймете, тем больше проблем вы сможете решить!

Ответ 13

Мой лучший трюк - перестать работать за компьютером. Сделайте чашку чая, немного погуляйте, возможно, прогуляйтесь. Если это сложная проблема, объяснение ее кому-то еще и обсуждение проблемы очень помогает мне. Если это действительно сложно: перестаньте работать над ним и немного сосредоточьтесь на чем-то другом.

Я думаю, что самое главное - заставить ваш мозг расслабиться и позволить себе быть творческим. Эти цветные карандаши - это способ стимулировать ваше творчество (нужно попробовать это, звучит здорово!); чашка чая (или @Martin: рыбалка) - это способ расслабиться. Некоторые из лучших идей в истории были обнаружены при принятии душа, кстати:)

Ответ 14

Для решения проблемы у меня есть следующие шаги, укоренившиеся в моей голове.

  • Вопрос. Узнайте, что проблема/вопрос есть. Много раз это довольно расплывчато или запутано.

  • Факты - получите все, что вы знаете, чтобы быть фактом прямо и выяснить какие неизвестные будут.

  • Картинка - Рисуем рисунки, которые я использую белая доска все время.

    Стратегия
  • способы его решения и лучший выбор.

  • Ответ. Получите фактическое решение через выбранной стратегии.

  • Проверить - убедитесь, что ваше решение решение проблемы с данным факты.

Ответ 15

До:

  • Прочитайте все, что вы можете найти о проблемной области.
  • Не пропустите темы, которые, по вашему мнению, не будут иметь значения.
  • Повторите шаги 1 и 2.

Во:

  • Разделить большие проблемы на меньшие задачи.
  • Определите критерии пригодности (напишите тесты).

Ater:

  • Сделайте посмертное решение/проект.
  • Попробуйте новые языки, изучите новые методы.
  • Практика, практика, практика.

Ответ 16

Три слова: разработка, управляемая тестированием

Ответ 17

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

Отладка, с другой стороны, является совершенно другой проблемой. При отладке я обычно пытаюсь выяснить, что происходит в коде (т.е. Пройти через него и просмотреть переменные), выяснить, что он предназначен, и попытаться его исправить. Как правило, между каждым из этих шагов есть "выход из комнаты и выпить что-нибудь". Один трюк, который я нашел с помощью отладки, - это попытаться сохранять спокойствие, и если это не сработает, игнорируйте проблему на некоторое время и работайте над чем-то другим. Большую часть времени для решения проблемы требуется больше времени, хотя посвященный - стресс - работает тогда, делая перерыв.

Ответ 18

так много ответов....

попробуйте найти мета-познание! Для решения проблем есть множество технологий.

Самый простой, который я нашел, называется "решающим колесом проблемы", посмотрите на google.

есть также психологические основы, чтобы попробовать гештальт-психологию, основная популярная из них - это понимание момента "ах-ха", когда проблема становится решением

Ответ 19

Я попробовал метод Кента, и это действительно сработало для меня.

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

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