Первая часть этого — как мыслить как решатель проблем.

Если у вас возникла проблема с автомобилем, вы можете решить ее с помощью:

  • знание автомобилей,
  • диагностика,
  • сменное оборудование,
  • и обычные инструменты магазина.

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

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

Примечание: первые 3 правила являются золотыми, они дадут вам мышление решателя проблем.

Золотое правило 1: знайте, есть ли у васталант общегорешения проблем, и развивайте его

Здесь у нас есть 2 ситуации:

  • Если вы умеете решать проблемы, это означает, что вы обладаете:
    1. талантом и зоркостью, чтобы обнаруживать критические детали общих жизненных проблем.
    2. вы уже помогали и продолжаете помогать своей семье или друзей с решением их проблем.
    3. Вы видите детали, которые никто не ищет или никто не замечает.
    Здесь, если они у вас уже есть, вы должны знать, что это ваш путь - программирование решает больше и многое другое, здесь знайте, что вы ближе всего к победе в соревнованиях по решению задач, поэтому уделяйте этому пути как можно больше времени и старайтесь развивать его.
  • Если вы думаете, что у вас его нет, возможно, вы правы или у вас есть талант, но вы никогда не проверялись, поэтому я бы рекомендовал вам иметь мышление начинающего ученого, это образ мышления означает:
    1. Требуя все больше и больше, настоящие решатели проблем ищут много ответов на множество вопросов
    2. Даже если у них нет вопросов, а они просто есть слово или ключевое слово для поиска, которое было бы полезно для них, чтобы найти и глубоко погрузиться в эту тему и узнать то, о чем они понятия не имеют.

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

Золотое правило 2: Имейте лист бумаги, когда думаете

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

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

Золотое правило 3. Абстрактируйте проблему

После этого вы должны переформулировать проблему, например «Абстрактировать ее», или выделить ее, чтобы увидеть только ту часть, в которой есть проблема, которая у вас есть на бумаге, как я сказал, чтобы определить и увидеть ограничения (об этом поговорим ниже).

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

Правило 1. Понимание проблемы и ее типа

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

  1. решение с прямыми шагами
    как решение задачи о Лисе, Гусе и Кукурузе, это прямые шаги без какой-либо вероятности, здесь легко понять, какое решение самое эффективное.
  2. решение шагов вероятности
    как скользящая головоломка или шахматные движения, которые настолько велики, что трудно или невозможно спланировать алгоритмы полного решения, которые будут наиболее эффективными во всех ситуациях

Правило 2. Знайте типы данных:

Я помню, когда я был только что выпускником (знание навыков решения проблем является большим плюсом для меня в это время), и меня спросили на онлайн-собеседовании о проблеме, я помню интервьюера после того, как он объяснил проблему о поиске в список, ему понравилось, что первый вопрос, который у меня был, был

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

Второй вопрос, который я задал интервьюеру, был Правило 3.

Правило 3. С каким объемом данных должен работать алгоритм (решение)?

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

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

Правило 4. См. ограничения.

с программированием очень много ограничений типа:
- стоимость решения,
- производительность,
- графика для игр,
- бизнес-приложение может иметь максимальное время ответ на ввод пользователя),
- объем памяти.

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

Опытные решатели проблем быстро распознают аналогию, полезное сходство между решенной проблемой и нерешенной проблемой.

Правило 5. Ищите наиболее ограниченную часть проблемы

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

Правило 6: всегда имейте план

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

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

Правило 7. Разделите проблему

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

Правило 8: начните с того, что знаете

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

Правило 9. Уменьшите масштаб проблемы

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

Правило 10. Ищите сходство

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

Правило 11. Иногда лучше поэкспериментировать

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

Правило 12. Наконец, отправьте свой код на GitHub

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

Увидимся во второй части этой серии.