avl (avl) wrote,
avl
avl

Categories:

58. Послание в будущее

(В оригинале - A Message to the Future)

В течении многих лет я обучала программистов, и за эти годы у меня сложилось впечатление, что большинство из них мыслят примерно следующим образом: «Раз я решаю очень сложную проблему, то и ее решение должно быть столь же сложным для понимания для всех остальных, в том числе и для меня, если я вдруг решу взглянуть на него спустя пару месяцев»

Я помню один случай со своим студентом Джо, пришедшим однажды показать мне то, что он написал, со словами «Держу пари, вы не догадаетесь, что делает этот код!».

«Да, ты прав», - сказала я, не вдаваясь в подробности написанного, а вместо этого задумавшись, как бы лучше донести до него то, что я хочу сказать. «Я уверена, ты старался, делая этот код. Но я не уверена, что ты при этом не забыл об одной важной вещи. Джо, у тебя ведь есть младший брат?»

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

«Отлично!» - ответила я. «Я вот только не уверена, что он сможет разобраться в твоем коде».

«Ни шанса!» – ответил Джо. – «Это слишком сложно!».

«А попробуй представить, - сказала я, - что этот код – реальный, работающий, и спустя несколько лет твоего брата наймут слегка этот код дописать. Что ты сделал для него в этом случае?» Джо лишь смотрел на меня, моргая. «Мы оба знаем, что Фил весьма способный, не так ли?» Джо кивнул. «И хотя я и не люблю это говорить, я тоже достаточно способная». Джо улыбнулся. «Итак, если я не могу разобраться, что делает этот код, и твой брат скорее всего тоже будет озадачен этим, то что же в итоге ты написал?». Джо посмотрел на свой код слегка с другой стороны, как мне показалось. Я постаралась придать голосу максимальную доброжелательность: «Попробуй посмотреть на каждую строчку кода как на сообщение кому-то в будущем. Кому-то, кто может оказаться твоим младшим братом. Представь, что ты объясняешь этому способному преемнику то, как же решена эта сложная задача».

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

«Джо, как ты думаешь, мог бы ты написать код, который бы и задачу решал, и при этом был бы столь элегантным? Который бы звучал как красивая мелодия? Я думаю, что вы все, решающие разные задачи, могли бы написать столь же элегантный код, не так ли? Может, мне стоит начать оценивать код за красоту? Что ты думаешь, Джо?»

Джо посмотрел на меня, по его лицу гуляла улыбка. «Я понял, профессор, я постараюсь сделать этот мир лучше для Фила. Спасибо!».

Автор оригинала - Linda Rising

Перевод мой, при использовании ссылка на мой живой журнал обязательна!
Tags: 97_things_programmer_should_know
Subscribe

  • Авиапарк в аэропорту Будапешта

    Давно не писал и не постил сюда фоток. Но вот этим не могу не поделиться. Т.к. Виззаир закрыл рейсы Тревизо-Киев и Тревизо-Львов, мне пришлось…

  • Чуть-чуть про Вену

    Интересное совпадение - когда-то лет пять назад мы уже собирались в Вену. Даже апартмент был зарезервирован. Но буквально за пару дней до отъезда у…

  • Тревизо

    Отвозил пару дней назад гостившую у нас Дашину сестру Марину в аэропорт в Тревизо. Из-за вылета в 8 утра поехали на день раньше, вечером пошли…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 1 comment