В «Яндексе» работает более 6000 человек, и, по некоторым оценкам, более половины наших сотрудников имеют опыт программирования.
И конечно, у каждого из этих людей есть свое правильное мнение о том, каким должен быть идеальный код. В результате у нас часто возникают споры о том, должен ли код быть красивым.
Более того, оказывается, что понятие красоты здесь, как и везде, субъективно: «Предпочтения программистов в коде подобны предпочтениям женщин.
Кому-то нравятся брюнетки, кому-то блондинки».
Чтобы понять, какие свойства кода отстаивают разные стороны, вслед за очередными бурными дискуссиями я решил поинтересоваться у коллег, что такое красивый код и должен ли он быть вообще красивым? Достаточно ли того, чтобы оно работало хорошо и было понятно? Или чистый код по умолчанию красив? Участие в опросе бобук , анатоликс , Антон , Андрей Я искатель Плахов, Антон Самохвалов, Андрей Гулин, Владимир Иванов и другие.
Общий опыт программирования всех восьми участников этого микроинтервью составляет 198 лет. Андрей Я искатель Плахов Программирую 24 года.
В Яндексе – 6 лет. Пришёл в Яндекс в 2008 году на позицию старшего разработчика.
Его первой задачей было создание нового типа факторов ранжирования — доменных.
Я занимался рейтингом и создал систему Spectrum. Кандидат физико-математических наук.
Теперь он запускает сервис поиска — в частности, разрабатывает советы по поиску .
Глубоко понимает как технологию, так и пользовательские свойства продукта.
Спрашивать программиста, что такое красивый код и должен ли он быть таким, — все равно, что спрашивать архитектора, что такое красивый дом и должен ли он быть таким.Владимир Иванов Программирую 30 лет. В Яндексе – 22 года.Архитектор вряд ли объяснит вам, что такое красивый дом, а если вы спросите, должен ли он быть таким, он, конечно, скажет, что так и должно быть.
Код, на мой взгляд, должен быть красивым.
Очень хорошо, если оно красивое, но иногда приходится обходиться без этого.
На самом деле каждый из нас в глубине души мечтает, что когда-нибудь построит в Сиднее собственный оперный театр или что-то в этом роде.
А пока нам приходится строить коммуналки.
Может быть, это немного пессимистично, но если поставить себя на место человека, который в 50-е годы переехал из коммуналки в собственный дом – пусть и небольшой пятиэтажный, который мы теперь пренебрежительно называем «хрущевкой» – это переезд принес ему гораздо больше счастья и радостей в жизни, чем любые красоты, которые можно было повесить сверху.
Красота и ясность кода — не одно и то же.
Самый понятный код — это код, которого не существует. Чем меньше кода, тем лучше.
Код в сто строк понятнее кода в 10 000 строк, как бы красиво и волшебно ни был написан второй.
Это первое.
Во-вторых, мне кажется, что ясность и общее понимание кода — это как секс.
В том смысле, что лучше не учиться одному.
Он начал работать программистом Яндекса за несколько лет до запуска самого Яндекса.
В 1992 году из того, что было, я собрал пять компьютеров в локальную сеть — ночью, из любопытства.
Когда «Яндекс» выделили в отдельную компанию, я перешел в нее заниматься сетью и долгое время руководил всеми НОКами.
Сейчас он снова занимается программированием — в основном вещи, связанные с работой с сетью.
Из проектов, которые были опубликованы, можно назвать FastDNS в Яндекс Браузере .
Глубоко понимая несовершенство мира, он легко может переписать весь мир.
Должен ли код быть красивым, зависит, конечно, от контекста.Анатолий анатоликс Орлов Программирую 25 лет. В Яндексе – 9 лет. Первые два года я писал Маркет в Яндексе, потом «слегка обстраивал питерский офис» и долгое время работал над поиском — в основном над его производительностью, а потом и над всем остальным.Наверное, код стиральной машины может быть не очень красивым, ведь его пишут не многие.
А когда в проекте задействовано много людей, код как минимум не должен быть очень противным.
Что такое грязная комната, в которой под ногами скрипят окурки, наверное, понятно.
Да, код также может быть чем-то, от чего вам захочется убежать.
А там, где у человека возникает чувство отторжения, он не хочет работать.
Наверное, код должен быть в какой-то степени красивым, а в какой-то приличным.
Можно написать какую-нибудь несусветную ерунду красивыми буквами.
И такое бывает. То есть это, конечно, не только углубления.
Сейчас работаю над различными проектами в области скорости, архитектуры и т.д. Говорят, Анатоликс — самый хитрый из программистов Яндекса.
Недавно я прошел курс нейробиологии в Courser. В нем людей помещали в аппарат МРТ, показывали фотографии и просили сказать, какие из них красивые, а какие нет. Затем исследователи посмотрели, какие области мозга были активированы у участников.Антон стр.Короче говоря, когда вы видите красивую картинку, активируется часть мозга, отвечающая за прием пищи, а когда вы видите плохую картинку, активируется часть, отвечающая за убегание.
Красивый код — это код, который съедобен, и от которого не хочется бежать как можно дальше.
Всем нужен красивый код. А если серьёзно, то на практике в больших системах идеальный красивый код невозможен.
Код не должен быть отвратительным, потому что отвратительный код использовать нельзя.
И потребуется время, чтобы вернуть его в нормальное состояние.
Но идеально красивый код — это еще и пустая трата времени.
У команд нет времени его облизывать.
83
Самохвалов Программирование 18 лет. В Яндексе – 9 лет. Девять лет назад я пришел в Яндекс Маркет обычным программистом на C++.Я выполнял самые разные служебные задачи — нас тогда было очень мало.
Через несколько лет он перешел в поиск, где работал над надежностью и производительностью поиска во время выполнения.
Много работал над нашим метапоиском, ловушкой роботов и системой балансировки нагрузки.
Сейчас работаю над системой сборки, которая позволит нам за несколько минут собрать всю нашу кодовую базу на большом распределенном кластере.
Антон принадлежит к той группе программистов, которые говорят, что пишут сразу и без ошибок.
Только, кажется, он это делает, а не просто говорит.
Красивый код — это минималистичный код. Это означает, что он не должен делать ничего лишнего, кроме той задачи, которую мы собственно и пытаемся решить этим кодом.Андрей Гулин Программирую 25 лет. В Яндексе – 9 лет. Я пришел в Яндекс программистом на C++.Чтобы не было разболтанной лапши, а просто четкое, лаконичное описание существующей мысли.
Вот что такое красивый код. Код должен быть читабельным, но это не делает его красивым.
Я видел очень читаемый код, который, с моей точки зрения, некрасив.
Как ни странно, код, вероятно, не обязательно должен быть красивым.
Красота – хорошее качество, но совершенно необязательное.
Код, прежде всего, должен хорошо работать, быть понятным людям, которые его читают, и не быть слишком сложным для решаемой задачи.
Будет ли он по-прежнему красив? Было бы хорошо, если бы он был еще и красивым, но в принципе это не обязательно.
Первой задачей было перепроектировать формат инвертированного индекса, чтобы записывать в документы информацию о точной форме слова (ранее сохранялась только лемма).
Один из главных создателей Матрикснет , наша технология машинного обучения.
Сейчас он руководит службой рейтингов.
Если бы Кнут не написал свой трехтомник, эту работу стоило бы подарить Андрею.
Сам Андрей на вопрос, чем он занимается в «Яндексе», ответил: «Я работаю за компьютером и делаю всякие вещи, чтобы всем было хорошо».
Я не знаю, что такое красивый код. Красивое – это своего рода эстетическая категория.Андрей Мищенко Программирую 24 года.Влезает ли на экран, напоминает картинку? Мне сложно оперировать этими понятиями.
Меня они, честно говоря, не особо интересуют. Лучший код — это код, которого не существует. Итак, если вам уже пришлось писать код, значит что-то пошло не так.
Но если уж писать, то писать так, чтобы было легко читать.
Потому что если человеку неприятно читать ваш код, значит, ваши усилия были напрасны.
В целом написание кода занимает 10% времени, а остальные 90% — это чтение уже написанного.
Поэтому я не знаю, нужен ли красивый код, но важен хорошо читаемый код. Нечитаемый код обычно пишут новые разработчики.
И, конечно, нам приходится с этим сталкиваться, когда мы набираем новых людей или когда скачиваем что-то из Интернета.
Несмотря на то, что это полезно и мы могли бы использовать это, кто-то написал это таким образом, что его невозможно прочитать, имена переменных состоят из одной буквы, и усилия, необходимые для его чтения, сравнимы с написанием всего этого заново.
Поэтому такой код, конечно, некрасив.
Красив понятный код, а особенно красив код, которого не существует. То есть, если вам удалось упростить задачу и решить ее методом, который не намного хуже или даже лучше, то это, несомненно, победа.
Если у вас есть система и вам удалось стереть половину ее, это большой день, который стоит отпраздновать.
Если вы можете избежать изобретения сложного метода, то вам следует это сделать.
Если простой линейный поиск работает достаточно быстро, то отлично.
В Яндексе – 9 лет. В Яндекс он пришел C++-разработчиком, долгое время был руководителем разработки поиска по блогам и писал на Perl. Андрей – кандидат физико-математических наук.
Сейчас работаю с Андреем Гулиным над улучшением алгоритмов машинного обучения в поиске.
Для меня главный признак красивого кода — гибкость.Антон Антон Волнухин Программирую 23 года.Каков его потенциал развития? Когда вы выполняете задачу, которая усложняется и меняется прямо под ногами, вам хочется не переделывать каждый раз половину проекта.
Вы вносите изменения в нескольких местах и все готово.
Все точки роста должны быть предусмотрены в коде заранее.
Я считаю, что чувство прекрасного программиста должно быть направлено в этом направлении.
Это можно тренировать.
Покажите программисту красивый код, научите его восхищаться им.
И тогда тренированное чувство прекрасного поможет вам принять правильные архитектурные решения.
Они просто покажутся вам красивыми.
А как правильно расставлять пробелы, какие имена переменным давать, в какие файлы организовывать свой проект и в какие папки, я считаю тщеславием.
Надо быть выше этого: все, что вы договариваетесь с коллегами, делайте.
Пусть другие спорят об этом.
В Яндексе – 8 лет. Программист, решающий задачи кратчайшим путем.
Пришёл в Яндекс в 2006 году на должность менеджера проектов.
Многие годы он возглавлял службу поиска по блогам.
Сейчас он возглавляет группу по распространению технологий: «Я стараюсь, чтобы все знали, сколько крутых технологий есть в «Яндексе», и чтобы улучшить качество рассказов о технологиях и понимание их важности в России в целом».
Мне кажется, выражение «красивый код» означает две разные вещи.Грегори бобук Бакунов Программирую 25 лет. В Яндексе – 10 лет. На вопрос, чем он занимается в «Яндексе», он ответил: «Все».Людям, плохо знакомым с программированием, красивый код кажется одним, а тем, кто этим занимается давно и со многим сталкивался, кажется другим.
Первый — эстетический, который падает на какие-то абстрактные представления о красоте в моей голове, и если это происходит, то кажется, что код идеален.
А другое дело, когда код хорошо выполняет свою роль и будет понятен, например, сотне человек, которые прочитают этот код после меня.
И зачастую это оказываются совершенно разными кодами.
Должен ли код быть красивым, зависит от конкретной цели.
В целом мне кажется, что да.
Люди должны стремиться к тому, что им самим нравится.
А красивый код — это то, что им нравится.
Если люди пишут что-то, что им кажется неприятным и ужасным, то то, что они делают, им не понравится.
Тогда, например, Яндексу тоже станет плохо.
Так что каждый должен стремиться писать красивый код, но с некоторыми исправлениями, которые происходят в голове с годами.
Когда-то я пришел работать системным администратором, а сейчас являюсь директором по распространению технологий.
Для меня красивый код делится на две совершенно разные категории.Это мнения, которые я собрал.Алгоритмическое решение может быть красивым — и это одна история.
А может, например, какой-нибудь красивый трюк.
Например, в древности, чтобы быстро очистить какой-то участок памяти, туда действительно быстро запихивали просто командой push ассемблер, потому что проталкивание работало быстрее, чем заполнение через регистры.
И это был просто красивый трюк.
В промышленном программировании чаще всего нет места красивым трюкам — там, где речь идет о серьезных нагрузках, о каких-то больших серьезных решениях.
Но всегда есть место красивым алгоритмам.
И, конечно же, код должен быть красивым, и каждый должен знать, что код здесь — сила.
Основная задача кода — решить возложенную на него задачу.
Самое важное, что должен делать код — это работать.
Можно разбить на этапы.
Сначала код должен скомпилироваться (если это код на компилируемых языках), затем он должен пройти тесты, затем он должен работать.
И, в конечном счете, если это код, ориентированный на пользователя, он должен сделать его счастливым.
То есть код выполняет огромное количество различных задач.
Должен ли код нравиться самому программисту? Ну, конечно, вам следует. Иначе зачем ему вообще работать программистом? Мы не все здесь работаем ради денег, верно?
По сути, они отличаются только тем, какой код каждый считает красивым.
Самое главное, с чем все согласны и в чем все равно никто не сомневается, — код должен работать.
И то, как вашим коллегам будет работать с вашим кодом, имеет большое значение.
Наверняка у вас тоже есть своя точка зрения на этот вопрос.
Интересно узнать, отличается ли оно.
Напишите нам в комментариях.
Теги: #программирование #Яндекс #программисты #Идеальный код #сотрудники яндекса #красивый код
-
Mysql Число Строк
19 Oct, 24