Однако прокрастинация – это не единственная причина, по которой мы не справляемся с большими задачами. Чем больше задача, тем она менее определенна, менее понятна. Если я попрошу тебя сходить в магазин и купить яиц, молока и хлеба, то ты точно знаешь, что делать. Задача понятна. Задачу выполнить легко, и не думаю, что она вызовет у тебя какие-то трудности.
Но если я попрошу тебя создать для меня сайт, то это будет сложная и менее определенная задача. Возможно, ты не будешь понимать, с чего начинать. У тебя возникнет много вопросов. Не думаю, что ты понимаешь, что нужно сделать, чтобы успешно выполнить это задание. Я мог бы написать тебе, что именно значит для меня создание сайта и чего я ожидаю, но на создание настолько подробного описания уйдет много времени, появляется вероятность того, что ты уже успеешь допустить где-то ошибку.
Большим задачам очень трудно дать адекватную оценку. Если я спрошу тебя, сколько времени понадобится для создания алгоритма для поиска самого большого элемента в списке, то ты дашь мне довольно точный ответ. Но если я спрошу тебя, сколько времени понадобится для внедрения функции корзины для покупок на сайте, то твоя оценка будет больше похожа на догадку.
Большие задачи очень сложны, и работа над ними с большей вероятностью приведет к прокрастинации. Как правило, такие задачи непонятны, при их выполнении можно совершить много ошибок, их очень сложно оценить.
Не теряй надежды. У меня есть решение. Оказывается, большинство больших задач можно разбить на несколько маленьких. По правде говоря, почти все большие задачи можно поделить на бесконечное количество маленьких задач.
Дробление задач на составляющие – это прием, который я постоянно использую в своей работе. Так я могу точно оценить время, которое потребуется для выполнения задачи.
По правде говоря, структура этой книги неслучайна. Возможно, тебе было интересно, почему в ней так много маленьких глав. Приступая к написанию этой книги, я намеренно решил написать много маленьких частей вместо нескольких больших. На это было две причины.
Во-первых, тебе как читателю будет легче воспринимать материал. Я знаю, что если я начну читать книгу с длинными главами, то я не захочу возвращаться к ней снова. К тому же если у меня не будет достаточно времени, то я тоже не смогу почитать эту книгу, так как не успею дойти до конца главы за отведенный на чтение срок. Надеюсь, ты уже заметил, что главу, состоящую из тысячи или двух тысяч слов, читать намного легче, чем длинные главы.
Во-вторых, мне намного легче писать маленькие главы. Я знаю, что написание книги – занятие не из легких. Это вызов. Многие начинают книгу, но никогда ее не заканчивают. Я сам множество раз начинал писать, но бросал это занятие на полпути. Небольшие главы, размер которых можно сравнить с большим постом в блоге, упрощают задачу: вместо одной большой задачи «написать книгу» у меня есть около 80 небольших задач «написать главы».
Когда ты разбиваешь задачу на множество мелких, тебе становится легче справляться с работой, и ты можешь точно оценивать время, которое на нее понадобится. Даже если ты выполнишь задачу неправильно, у тебя будет много возможностей исправить ошибку, прежде чем ты зайдешь слишком далеко. Очень часто полезно дробить большую задачу на составляющие.
Оказывается, разбивать задачи не так уж и сложно. Цитата про то, как съесть слона, правдива. Единственный способ, которым ты можешь съесть слона, – это откусывать по кусочку за раз. То же самое касается больших задач. Даже если сознательно ты не разбиваешь ее на части, ты все равно постепенно выполняешь ее.
Если ты хочешь взяться за выполнение большой задачи и сделать ее не такой пугающей, то тебе нужно определиться с шагами для ее выполнения. Если на работе мне поручают большую задачу, то первое, что я делаю, – это проверяю, могу ли я разбить задачу на составляющие.
Недавно я работал над одним проектом для моего клиента. Задача заключалась в том, чтобы в его коде работала система непрерывной интеграции. Вот это была задачка. Сначала это показалось мне сложным, пугающим, но я взял себя в руки и разбил задачу на несколько небольших.
Сначала я попытался заставить код клиента запускаться и компилировать из командной строки, так как это необходимо для создания автоматизированной сборки. Далее мне надо было сделать так, чтобы сервер сборки мог проверить код. Затем следовала задача, объединяющая обе предыдущие: мне надо было заставить сервер сборки проверить код, а также использовать сценарий командной строки для компиляции кода.
Таким образом, я разбил весь проект на маленькие задачи, и внезапно все стало казаться таким простым и нестрашным… Каждая маленькая задача оказалась простой, хотя изначально проект казался очень сложным.