Как зайти в Даркнет?!
25th January, 01:11
5
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
893
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
912
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Можете ли вы поделиться своими секретами или лучшими практиками для решения проблем?
Я слышал, что Кент Бек, который руководит XP , использовал так много цветных карандашей, чтобы стимулировать свой мозг, когда ему нужно было решить эту проблему. Я попробовал метод Кента, и он действительно сработал для меня. Я не знаю почему.
Есть ли у вас специальный метод, чтобы атаковать сложные проблемы? Я действительно хочу узнать о твоем Великом секрете.
Резюме: Люди рекомендуют следующие вещи:
- Сделай что-нибудь еще: сходите на рыбалку, прогуляйтесь,
- Поговорите с другими людьми: Разбейте проблему на части Проверка кода
- TDD
- Опыт
- Повторите & Повторить
- Сосредоточьтесь на понимании того, в чем заключается проблема
Часто лучше всего просто описать кому-то проблему. В половине случаев, когда я спрашиваю эксперта, ответ приходит ко мне в середине вопроса. Если есть что-то, что я понимаю только наполовину, и я пытаюсь объяснить это кому-то другому, я в конечном итоге понимаю это полностью.
Просто идите и говорите об этом.
Для меня ваш вопрос может быть воспринят двояко. Один из них-как я создаю решение проблемы программирования, а другой-как я решаю проблему, которая существует (т. е. отладка).
Программирование:
- Пока не думайте о реализации.
- Убедитесь, что у вас есть вся необходимая информация.
- Начните разбивать проблему на части. Я использую для этого очерк. В настоящее время использование моей жизни организовано .
- Не беспокойтесь о решении всей проблемы. Начните с того, что вы знаете, и держите его простым для начала. Я использую PDL для описания решения.
- После того, как вы завершили проход, продолжайте возвращаться к 2 и повторите. Используя контур, я могу продолжать увеличивать уровень детализации и легко перемещать эти детали по мере того, как решение становится более ясным.
- Если есть кусочки головоломки, на которые у вас нет ответа, добавьте их в свой план и опишите, каким будет следующий шаг, чтобы решить эту часть. Это может быть больше исследований, разговор с кем-то или получение более подробной информации от пользователей.
- Вернитесь к Шагу 2 и повторяйте его, пока не получите описание вашего решения.
- Реализуйте свое решение на выбранном вами языке. Вероятно, вы можете использовать контур в качестве комментариев.
Отладка:
- Вам нужно сделать все возможное, чтобы понять, что происходит на самом деле.
- Составьте список того, что вы знаете, чтобы быть правдой (факты).
- Сделайте все возможное, чтобы сделать его повторяемым как можно легче.
- Придумайте свой лучший подход к решению проблемы (проконсультируйтесь с другими, google и т. д.)
- Попробуйте свой подход, чтобы решить эту проблему.
- Если он исправит это, то посмотрите, сможете ли вы снова сломать его, а затем исправьте его по-настоящему. Помогает вам доказать, что вы действительно поняли и исправили проблему.
- Если это не исправит ситуацию, отмените изменения, вернитесь к шагу 1 и повторите его
После нескольких итераций вы должны полностью понять проблему и знать лучшее решение для вашей ситуации. Бывают моменты, когда вы просто не можете получить его. Хорошо отойти в сторону, поспать на нем и быть готовым атаковать его свежим. Определенно говоря об этом и показывая свои проблемы другим, вы можете лучше понять проблему и получить свежие идеи.
- Написать модульный тест
- Смотрите, как он терпит неудачу, а затем заставьте его пройти
- Повторяйте до тех пор, пока проблема не будет решена
А если серьезно, то просто продолжайте добавлять слои абстракции до тех пор, пока все не станет 'just work'. Если я не в своей тарелке, я просто спрашиваю кого-то умнее меня, как они решат эту проблему.
Опыт.
Серьезно, какого ответа вы ожидаете на свой вопрос?
Нет такого алгоритма, который позволил бы вам решать все виды задач.
Будьте исчерпывающими, исследуйте каждый вариант, помните, что вы узнали, повторно используйте то, что вы знаете, рассматривайте другие варианты, спрашивайте людей, которых вы знаете, google для этого, помните, что вы узнали, повторно используйте то, что вы знаете, будьте творческими, будьте хаотичными, помните, что вы узнали, повторно используйте то, что вы знаете, думайте нестандартно, подталкивайте проблему в странном направлении, помните, что вы узнали, повторно используйте то, что вы знаете.
Обязательные ссылки:
Концептуальный блокбастер, Джеймс Л. Адамс
Как ее решить, автор Г. поля
и может быть даже
Хаки производительности ума, Рон Хейл-Эванс
Я переосмысливаю его снова и снова. И еще раз. Затем я разбиваю его на самые маленькие кусочки, какие только могу.
При написании кода я использую много переменных и не делаю больше одного шага по строке. Если мне нужно сложить пять чисел и умножить их, то получится процент, который я буду делать каждый шаг на своей собственной линии.
Позже, когда я буду знать, что он у меня есть, я буду объединять линии вместе, но не раньше, чем я буду SURE, что проблема решена.
Это также помогает при отладке, поскольку я могу проверить каждый шаг, чтобы узнать, что он сделал то, что я хотел.
Для решения проблем у меня в голове укоренились следующие шаги.
Вопрос - выясните, что же такое настоящее проблема/вопрос есть. Много раз она довольно расплывчата или запутана.
Факты-получите все, что вы знаете, чтобы будьте фактом прямолинейным и разберитесь какими будут неизвестные.
Picture-рисовать картинки, которые я использую мой все время белая доска.
Стратегия-выяснить различные способы, которыми вы можете решить ее и определиться лучший выбор.
Ответ - получите реальное решение через выбранная стратегия.
Проверка-убедитесь, что ваше решение является решение задачи с заданными параметрами факты.
Обычно я не начинаю кодировать сразу. Я разбираю проблему и делаю заметки по ней, пока не доберусь до места, где я знаю, что мне нужно сделать с точки зрения кода. Я использую файлы emacs org-mode и иногда pen-and-paper в зависимости от типа проблемы.
Потратив немного времени на обдумывание проблемы, прежде чем я положу какой-либо реальный код вниз, как правило, приводит меня к написанию гораздо более элегантного решения, чем я сделал бы в противном случае.
Мой лучший трюк-перестать работать за компьютером. Заварите себе чашку чая, прогуляйтесь немного, может быть, прогуляетесь. Если это сложная проблема, то объяснить ее кому-то еще и обсудить этот вопрос мне очень помогает. Если это действительно трудно: прекратите работать над этим и сосредоточьтесь на чем-то другом на некоторое время.
Я думаю, что самое важное - это заставить свой мозг расслабиться и позволить себе быть творческим. Эти цветные карандаши-способ стимулировать ваше творчество (стоит попробовать самому, звучит здорово!); чашка чая (или рыбалка @Martin:) - это способ расслабиться. Некоторые из лучших идей в истории были обнаружены во время принятия душа, кстати :)
Так много ответов...
Попробуйте поискать мета-познание! Существует множество методов, помогающих решать проблемы.
Самое простое, что я нашел, называется "problem solving wheel". Посмотрите это в поисковике Google.
Есть также вещи, основанные на психологии. Попробуйте гештальтпсихологию; главная популярная из них-это понимание момента, когда проблема становится решением.
Я попробовал метод Кента, и он действительно сработал для меня.
Я попробовал метод Кента, и он действительно сработал для меня.
Я предполагаю, что это происходит потому, что вы можете видеть проблему с двух разных точек зрения одновременно, по крайней мере подсознательно.
В качестве общего подхода я склонен думать о том, что должно было бы сделать окончательное решение.
До:
- Прочитайте все, что вы можете найти о проблемном домене.
- Не пропускайте темы, которые вы считаете неуместными.
- Повторите шаги 1 и 2.
В течение:
- Разделите большие проблемы на более мелкие задачи.
- Определите свои критерии пригодности (напишите тесты).
Атер:
- Сделайте посмертное вскрытие solution/project.
- Пробуйте новые языки, изучайте новые техники.
- Тренируйся, тренируйся, тренируйся.
Для меня это зависит от того, в чем заключается проблема - если я работаю над попыткой решить новую проблему, то первое, что я собираюсь сделать, это либо найти белую доску и начать набрасывать некоторые концепции, либо найти блокнот и начать набрасывать некоторые концепции. Обычно, чтобы решить проблему, я сначала должен понять, что это за проблема и почему она является проблемой, как только это выходит из-под контроля, переходя к кодированию и обычным процессам, связанным с кодированием.
С другой стороны, отладка-это совершенно другая проблема. При отладке я обычно пытаюсь выяснить, что происходит в коде (т. е. пройти через него и посмотреть переменные), выяснить, что он должен делать, и попытаться исправить это. Обычно между каждым из этих шагов также существует "step out of the room and get something to drink". Один трюк, который я нашел с отладкой, заключается в том, чтобы попытаться оставаться спокойным, и если это не сработает, игнорировать проблему на некоторое время и работать над чем-то другим. В большинстве случаев для решения этой проблемы требуется больше времени, хотя самоотверженная - напряженная - работа, чем она делает, делая перерыв.