Послание потомкам Линда Райзинг

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

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

— Держу пари, вы не догадаетесь, что делает этот код! — радостно воскликнул он.

— Ты прав, — согласилась я, не слишком вглядываясь в его текст и думая, как донести до него важную мысль. — Уверена, ты хорошо потрудился над этим примером. Боюсь, правда, ты упустил нечто важное. Скажи, Джо, у тебя есть младший брат?

— Да, конечно! Его зовут Фил, и он слушает ваш вводный курс. Он тоже учится программировать! — гордо объявил Джо.

— Это замечательно, — отвечала я. — Интересно, сможет ли он понять этот код?

— Ни за что, — сказал Джо, — это сложная штука!

— Давай предположим, — продолжила я, — что это реальный рабочий код и что через несколько лет Филу предложат работу по внесению изменений в этот код. Что ты сделал для Фила?

Джо моргал, глядя на меня.

— Мы знаем, что Фил — толковый парень, верно?

Джо кивнул.

— И не хочу хвастаться, но я тоже довольно толковая!

Джо ухмыльнулся.

— Итак, мне нелегко понять, что ты тут сделал, и твоему очень способному младшему брату тоже. Скорее всего, придется поломать над этим голову. В таком случае, что можно сказать о написанном тобой коде?

Как мне показалось, Джо увидел свой код в новом свете.

— Представим себе дело так, — сказала я, стараясь как можно лучше играть роль доброго наставника. — Каждая строка твоего кода — это послание человеку будущего, которым может оказаться твой младший брат. Попробуй объяснить этому умному человеку, как решить эту трудную задачу. Так ли ты видишь это будущее? Что этот умный программист увидит твой код и воскликнет: «Ничего себе! Как здорово! Мне совершенно понятно, что здесь происходит, и я поражен элегантностью — нет, красотой — этого кода. Надо немедленно показать его коллегам по команде. Это же шедевр!»

— Джо, можешь ли ты написать код, который решает эту задачу, но притом прекрасен, как песня? Да, как запавшая в память мелодия. Я думаю, что тот, кто сумел найти такое сложное решение, как предложенное тобой сегодня, может также написать что-нибудь красивое. Гм-м… Не начать ли мне выставлять оценки за красоту? Как ты считаешь, Джо?

Джо забрал свою работу и посмотрел на меня. Легкая улыбка пробежала по его лицу.

— Я все понял, профессор. Пойду улучшать мир для Фила. Спасибо.

Загрузка...