Когда ты пытаешься разбить большую задачу на множество небольших, ты можешь обнаружить, что у тебя для этого недостаточно информации. Ты просто не знаешь, как это делать. Помнишь, я сказал, что большие задачи кажутся непонятными? Важный шаг в дроблении больших задач на маленькие – определение того, какой информации тебе не хватает. Как только ты заполнишь эти пробелы, ты сможешь разбить задачу на более мелкие.
Но это к лучшему. Намного лучше узнать об этом на раннем этапе проекта, пока ты не углубился в работу и не зашел слишком далеко. Когда ты разбиваешь крупную задачу на составляющие, убедись, что у каждой из небольших задач есть четкая цель. Когда ты определяешь цели, ты можешь обнаружить ценную информацию, которую мог бы упустить.
Когда я работаю с командами, использующими методологию Agile, я всегда стараюсь использовать этот метод – так я получаю от клиента всю нужную информацию. Очень часто клиенты не могут сформулировать, чего они хотят, так что они просто просят тебя выполнить большую задачу, например добавить корзину для покупок на их сайт. Но если ты сможешь разбить большую задачу на составляющие, то им будет проще объяснить, что им нужно.
Такой подход можно применить непосредственно к работе с кодом и решению проблем. Многие начинающие разработчики предпринимают множество безуспешных попыток разобраться со сложным участком кода или решить нетривиальную проблему, не понимая, почему у них ничего не получается. Все из-за того, что они не знают, как разбить большую задачу на несколько мелких. Должен признать, даже я время от времени грешу этим.
Конечно, мы разбиваем некоторые задачи на части, когда пытаемся справиться со сложностью кода. Именно поэтому у нас нет одного большого метода, в котором будет весь код. Мы разбиваем наш код на методы, функции, переменные и другие составляющие, упрощая его. Какой бы сложной ни была программа программирования, ее всегда можно разбить на составляющие. Если ты пытаешься написать сложный алгоритм, то разбей задачу на мелкие части, которые можно решать независимо друг от друга.
Неважно, насколько сложным и большим будет приложение, ты всегда можешь разбить его на строки кода. Строку кода может понять или написать любой программист; если ты разделишь задачу на составляющие, то сможешь написать любое приложение.
• Каких крупных задач ты избегаешь, потому что тебя пугает их размер? Может, ты откладываешь уборку гаража, написание поста в блоге или решение сложного алгоритма?
• Выбери крупную задачу, с которой ты столкнулся, и посмотри, можешь ли ты разбить ее на несколько мелких.
Эта глава близка моему сердцу. Я чувствую, что в моей жизни и карьере случился огромный поворотный момент, когда я принял идею, что усердную работу не стоит избегать, ведь она так необходима для успеха.
Все всегда пытаются найти кратчайший способ к успеху – способ избежать усердной работы, необходимой для достижения успеха. Не буду лгать, я тоже был таким. Все мы хотим наслаждаться плодами усердной работы, не совершая ее на самом деле. Хотел бы я закончить эту книгу, не прилагая особых усилий для ее написания, но…
Реальность такова, что успеха можно добиться только путем усердной работы. В жизни, и особенно в карьере разработчика ПО, ты должен научиться сидеть и делать работу, которая не всегда будет тебе нравиться. Должен научиться делать эту работу постоянно, если ты действительно хочешь увидеть результаты.
В этой главе мы развеем некоторые мифы о шарлатанах, обещающих награду за то, что ты будешь работать умнее, а не усерднее. А еще мы рассмотрим некоторые проблемы мотивации, связанные с усердной работой.
Для меня всегда было загадкой, почему одни вещи делать гораздо труднее, чем другие. Почему я могу часами играть в видеоигры, но не могу заставить себя написать пост для блога? Неужели для моего мозга действительно важно, что я делаю? Я знаю, что мой мозг – это машина, которая всем управляет. Какая разница, нажимаю я кнопки на контроллере или клавиши на клавиатуре? Но лично для меня игра – это одно занятие, а работа – другое, и одно из них веселое, а другое – трудное.
Я никогда не встречал человека, которому действительно нравилась усердная, тяжелая работа. Многие люди скажут, что им нравится тяжелая работа, и многие из нас правда получают удовольствие, когда мы начинаем или заканчиваем трудиться, но вряд ли кто-нибудь добровольно примется за выполнение тяжелой работы.
Не думаю, что смогу объяснить тебе, почему все происходит именно так. Я не могу объяснить, почему заставить себя писать код для исправления ошибки намного сложнее, чем заставить себя написать комментарий в соцсетях. Но реальность заключается в том, что одна работа тяжелая, а другая – легкая.