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

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

1. ЧУВСТВУЮЩИЕ ГОЛОВУ «ОТЛАДКИ КОДА»

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

Простое решение — снова заняться тем же явлением. Ставьте везде брейкпоинты и консоль, чтобы видеть, что за ней происходит. Когда ваш разум вынужден сосредоточиться на проблеме таким образом, чтобы сделать ее объяснимой, вам приходится разбиваться на ее основные компоненты, и часто именно отсюда приходит момент успеха. Возможно, на базовом уровне вам чего-то не хватало. Это может быть глупо, и ваши коллеги по работе могут смотреть на вас смешно, но попробуйте! Вы удивитесь, насколько это может быть эффективно.

2. СПРОСИТЕ СЕБЯ «СТОИТ ЛИ ЭТА ФУНКЦИЯ ТРАТИТЬ ВРЕМЯ»?

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

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

3. ПЕРЕКЛЮЧИТЕСЬ НА ПЛАН Б.

Как и в предыдущем совете, полезно спросить, почему я делаю это — именно так? Или, если вам нравятся метафоры, почему вы забиваете этот гвоздь кокосовой стружкой, а не молотком?

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

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

4. ВОЗВРАЩАЙТЕСЬ СНОВА, отдохните от этого.

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

5. ДОКУМЕНТЫ, единственный источник достоверной информации

Иногда правду трудно принять, но, очевидно, важно читать документацию по любому языку, библиотеке, фреймворку или инструменту, который вы используете. Также легко найти и выбрать точный фрагмент кода, который вы искали, чтобы решить вашу проблему. В 90% случаев я сразу перехожу к функции или строке, которую ищу в документации, и, честно говоря, в 90% случаев это работает.

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