Послание в будущее
(В оригинале - A Message to the Future)
В течении многих лет я обучала программистов, и за эти годы у меня сложилось впечатление, что большинство из них мыслят примерно следующим образом: «Раз я решаю очень сложную проблему, то и ее решение должно быть столь же сложным для понимания для всех остальных, в том числе и для меня, если я вдруг решу взглянуть на него спустя пару месяцев»
Я помню один случай со своим студентом Джо, пришедшим однажды показать мне то, что он написал, со словами «Держу пари, вы не догадаетесь, что делает этот код!».
«Да, ты прав», - сказала я, не вдаваясь в подробности написанного, а вместо этого задумавшись, как бы лучше донести до него то, что я хочу сказать. «Я уверена, ты старался, делая этот код. Но я не уверена, что ты при этом не забыл об одной важной вещи. Джо, у тебя ведь есть младший брат?»
«Да, конечно есть! Его зовут Фил, и он как раз пошел на ваш вводный курс. Он тоже изучает программирование!» - гордо ответил Джо.
«Отлично!» - ответила я. «Я вот только не уверена, что он сможет разобраться в твоем коде».
«Ни шанса!» – ответил Джо. – «Это слишком сложно!».
«А попробуй представить, - сказала я, - что этот код – реальный, работающий, и спустя несколько лет твоего брата наймут слегка этот код дописать. Что ты сделал для него в этом случае?» Джо лишь смотрел на меня, моргая. «Мы оба знаем, что Фил весьма способный, не так ли?» Джо кивнул. «И хотя я и не люблю это говорить, я тоже достаточно способная». Джо улыбнулся. «Итак, если я не могу разобраться, что делает этот код, и твой брат скорее всего тоже будет озадачен этим, то что же в итоге ты написал?». Джо посмотрел на свой код слегка с другой стороны, как мне показалось. Я постаралась придать голосу максимальную доброжелательность: «Попробуй посмотреть на каждую строчку кода как на сообщение кому-то в будущем. Кому-то, кто может оказаться твоим младшим братом. Представь, что ты объясняешь этому способному преемнику то, как же решена эта сложная задача».
«Можешь это представить? Чтобы этот способный программист из будущего увидел твой код и сказал: «Вау! Великолепно! Я понимаю все, что здесь написано и я впечатлен тем, насколько это сделано элегантно. Я должен показать это всем в команде! Это писал настоящий мастер!»».
«Джо, как ты думаешь, мог бы ты написать код, который бы и задачу решал, и при этом был бы столь элегантным? Который бы звучал как красивая мелодия? Я думаю, что вы все, решающие разные задачи, могли бы написать столь же элегантный код, не так ли? Может, мне стоит начать оценивать код за красоту? Что ты думаешь, Джо?»
Джо посмотрел на меня, по его лицу гуляла улыбка. «Я понял, профессор, я постараюсь сделать этот мир лучше для Фила. Спасибо!».
Автор оригинала - Linda Rising