Глава 1. Цели и задачи
В любой профессии есть мастера своего дела, которым можно поручить что-то и забыть об этом — ты знаешь, что они всё сделают как надо, а если будут проблемы, то либо сами их решат, либо своевременно поставят о них в известность. А есть посредственные работники, которых постоянно требуется проверять, чтобы они делали что надо и как надо.
В чём главное отличие мастера от посредственного работника? Я считаю, что главное отличие в том, что они делают:
посредственный работник — выполняет задачу
мастер — достигает цели
К сожалению многие не различают цели и задачи, часто используя эти слова как синонимы. А между тем разница между ними принципиальная.
Алан Купер в книге «Психбольница в руках пациентов»[1] пишет:
Цель любой деятельности всегда лежит за пределами самой деятельности. Цель — это конечное состояние, тогда как задача — переходный процесс, необходимый для достижения цели.
Пример. Вы хотите пригласить к себе в гости друзей, но в квартире у вас не прибрано, поэтому вам сперва надо навести порядок. Ваша цель — приятно провести вечер с друзьями. Задача — уборка в квартире.
Верное и качественное выполнение задачи не гарантирует к достижения поставленных целей.
У любого проекта по разработке ПО всегда есть цель, и это — не разработка ПО. Создаваемое ПО — лишь инструмент, с помощью которого планируется решить какие-то задачи, чтобы достигнуть поставленных целей.
Важно
Цель — единственное, что по-настоящему важно. Всё прочее важно лишь постольку, поскольку оно служит достижению цели.
К цели чаще всего можно прийти разными путями. И задачи — это преграды на пути к цели. Высший пилотаж в любой области — достичь цели, избежав решения задач. Применительно к программированию: самый лучший код — это код, который получилось НЕ писать.