Как программисту повысить навык решения проблем

How to become an expert problem solver

Определение.

Что такое проблема?

В словарях есть два определения:

Также бизнес определяет проблему как "идею, с которой приходит клиент".

Что такое "решение проблем"?

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

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

Ежедневные проблемы:

  • Проблемы с рабочим окружением.
  • Проблемы с задачей на трекере.
  • Проблема "Что-то не работает. Не знаю что именно!"
  • Проблема "А если я сделаю вот так..."
  • Проблема рабочего фокуса.
  • Проблема "Мозг не работает" :)

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

Шаги решения проблемы.

1. Осознай и определи проблему.

Проблема может быть явной и неявной:

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

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

Как лучше всего идентифицировать проблему:

  • Следовать лучшим практикам.
  • Знать шаблоны проектирования и методологию.
  • Задавать вопросы. Это определённо работает.
  • Развиваться каждый день.

2. Исследуй.

Тебе необходимо собрать всю информацию о проблеме. Поищи в log-файлах, куда каждая утилита пишет сообщения, пообщайся на эту тему с коллегами или почитай о похожих проблемах в интернете.

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

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

3. Мозговой штурм.

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

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

4. Расслабление и отдых.

Следует отстраниться от проблемы, встать и расслабиться, дать мозгу отдохнуть. Есть практика с временными интервалами - метод помидора.

Эта техника поможет сосредоточиться на 25 минут и затем сделать маленький перерыв. Независимо от стиля вашей работы, вы должны не думать о проблеме во время отдыха. Приступив к работе через некоторое время, вы можете получить новое видение ситуации. Возможно, вы воскликните: "О, это же просто! Вот решение, как же я не заметил?", - или что-то в этом роде. Я знаю это чувство, поверь мне.

5. Избегай подобных ошибок в дальнейшем:

  • Пиши тесты. После нахождения решения, определённо необходимо покрыть его тестами, чтобы проверить себя и избежать похожих будущих проблем;
  • Пойми решение. Если тебе кто-то помог с проблемой, ты всё равно должен понять решение. Тебе необходим опыт для решения подобных задач;
  • Автоматизируй решение, если возможно. Если проблема решена для одной ситуации, смоделируй, что будет, если проблема повторится завтра;
  • Знай свое окружение. Для избежания проблем, необходимо знать своё ежедневное окружение: ОС, редактор, терминал, язык программирования, проект. Если вы это знаете хорошо, ничто вам не помешает. Не боритесь со своим редактором или терминалом и делайте дело лучшим образом.

Заключение.

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

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

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

Связаться