Мы, программисты — самые оптимистичные люди, из всех, кого я только встречал. Спросите любого из нас, сколько времени займёт сделать ту или иную вещь — и вы получите супер-оптимистеческий ответ, очень далёкий от реальности. Это не потому, что мы специально стараемся вас дезинформировать и запутать, нет. И не потому, что мы глупы. Просто мы смотрим на всё с оптимизмом.
Вот есть проект, вот наши знания и возможности, вот ваши спецификации, вот Неведомые Загадочные Вещи… Последнее, конечно, самая большая проблема. Нельзя заранее предусмотреть всего и есть большие шансы встретить в тихом болоте таких громадных чертей, что вся Королевская Рать будет их бороть очень долго. Но всегда хочется верить, что их не будет. И вот мы даём оценку времени «1 час», начинаем работать, встречается одна странность, вторая, баг в чужом компоненте — и вот уже на задачу ушел целый день, а она еще не закончена.
Есть, к стати говоря, еще одна профессия, люди которой также дают оценки в условиях неопределенности. И тоже часто ошибаются. Это доктора. Давайте ка я расскажу вам две истории об оценках времени.
Медицинская история
В прошлую пятницу я повредил плечо. Катался на скейте, оступился — ну а дальше классическое «упал, очнулся, закрытый перелом». В результате я полностью потерял возможность пользоваться правой рукой. Пришлось учиться временно кушать и писать левой. В больнице мне сделали рентген, доктор сказал, что всё хорошо, кости срастаются нормально, но ближайшие 3 недели я не смогу пользоваться правой рукой и буду испытывать приличную боль. «Просто принимайте болеутоляющие, если будет совсем плохо» — вот, что он сказал.
Сегодня, спустя всего 6 дней, мне уже намного лучше. Я бы оценил прогресс выздоровления где-то на 90%. Сегодня утром я сделал 60 из моих обычных 150 отжиманий, попрыгал на скакалке и даже поднял правой рукой мой четырёхкилограммовый скейт. Я так думаю еще день-два и я напрочь забуду о моей травме. Получается, что доктор дал оценку прогресса моего выздоровления с троекратной погрешностью. На как же, чёрт побери, я рад, что он ошибся!
Программерская история
Я работаю над алгоритмом сегментации веб-страниц. Идея в том, чтобы взять произвольный веб-сайт и выделить в нём «шапку», «подвал», баннеры, колонки и т.д. Это не такая уж и простая задача, как кажется на первый взгляд. Алгоритм начал работать на этой неделе, осталось довести до ума пару мелочей. Меня спросили, как долго это займёт и я ответил «К пятнице сделаю!». Откуда я взял эту оценку? Ну, я подумал, что ничего сложного в этой задаче нет. Я знаю, как её сделать. И работы то там — тьфу, часа на 2 от силы. Но я в данный момент пишу на языке программирования, который ненавижу (ну вот так уж вышло в этой части проекта), по парадигме, которая мне совсем не нравится, но была навязана начальником сверху и плюс еще использую одну большую библиотеку, с которой познакомился всего неделю назад. Так что, пожалуй, растяну первоначальные «2 часа» на «до пятницы». Пускай будет. Я точно успею! Да, всяких граблей многовато, но я ведь работаю программистом уже целую вечность! Я справлюсь.
Я не справился.
Сначала оказалось, что я вообще не полностью понял задачу — многое пришлось изменить. Потом подлянку подкинула используемая библиотека — некоторые вещи она делала не так, как я думал. Плюс в последний момент пришлось поменять синхронный интерфейс на асинхронный. А кроме того…
Знакомо, а?
Программисты очень оптимистичны
Всякий раз, когда вы разговариваете с программистом, помните — это такое оптимистичное существо, что вам и не снилось. И даже если вы видите перед собой программиста с тремя десятками лет опыта за плечами, сединой в висках и без тени улыбки на лице — не поддавайтесь на искушение принять его за реалиста, он такой же оптимист, как и все.
Все программисты постоянно:
- Ныряют с головой в омут новых непонятных проектов с постоянно меняющимися спецификациями
- Берут новые неизвестные им инструменты, применяют их в непонятных целях и… получают желаемый результат
- Попадают в новую вселенную с каждым новым проектом
- Постоянно переходят на новые языки, птатформы, базы данных, устройства и т.д.
Любой, кто не является отъявленным оптимистом просто не выжил бы в профессии программиста.
Так что да, мы оптимисты, мы на всё смотрим с гордо поднятой головой и интересом. Мы всегда будем такими. Много ли других профессий могут похвастаться тем же?
Автор: tangro