интервью с Анатолием Орловым, руководителем отдела инфраструктуры веб-поиска компании «Яндекс»
Какие отношения ты выстраиваешь с подчинёнными?
У нас очень демократичная компания, у меня хорошие отношения с сотрудниками, со многими из них мы дружим. Всё определяется понятием «корпоративная культура», в которую не все верят, но она, наверное, есть. У нас настолько демократичная атмосфера, что начальник не может зайти к сотруднику и заставить его делать что-то определённым образом, потому что он должен его убедить. Иногда я жалею, что у нас не тоталитаризм, потому что очень сложно собрать 30 человек и заставить их договориться: они все думают по-разному, и эту задачу приходится решать окольными путями. Я думаю, что большинство талантливых людей, которые здесь есть, в других условиях работать бы просто не стали.
Что представляет из себя твоя команда?
На первый взгляд всё это выглядит, как кавардак, но, как ни странно, мы очень неплохо работаем. В такой среде очень важное значение имеют такое явление, как opinion-лидеры, которых слушают. Это необязательно руководители, это могут быть хорошие программисты. Правильные слова: наш коллектив – это нечто среднее между Академией наук и детским садом.
Особый критерий оценки программиста в «Яндексе».
Простейший пример – у нас есть шутка про карму, что у разработчика есть карма. Откуда взялось это слово? У нас есть система контроля версий, а когда в ней нет прав куда-то закоммититься, она говорит: «Not enough karma». И вот у нас есть такая полушутка, что есть разработчики с большой кармой. Если программист сделал что-то хорошее, например, запустил что-то серьёзное, у него растёт карма, если он сделал что-то плохое, то у него падает карма. Чем больше у разработчика карма, тем больше у него возможности влиять на окружающую действительность. С одной стороны мы это рассматриваем, как полушутку, а с другой стороны – в обсуждении можно услышать аргумент вроде «вот эту задачу будет делать вот этот разработчик, так как у него карма больше».
Какие требования ты предъявляешь к программистам?
Человек, который ко мне пришёл, во-первых, должен уметь программировать на своем основном языке программирования – это значит, что за час он должен уметь написать программу размером в сто строк, и чтобы эта программа не упала на старте. Как ни странно, уже этот критерий отсекает большое количество людей. Во-вторых, мы хотим от наших программистов некоторой базовой алгоритмической подготовки – чтобы, например, алгоритм сортировки или сложная структура типа B-дерева не вызывала у программиста шок. Также я обычно спрашиваю, чем программист до этого занимался. И если человек не может внятно объяснить сущность его работы, это тоже вызывает некоторые подозрения.
Fatal_error пишет: > >
Жуть.
Особенно повесилило про карму и 100 строк за час.
Кстати теперь становится понятно, почему последнее время мне даже для
поиска в рунете гуглом все чаще приходиться пользоваться.
Почему?
V>Особенно повесилило про карму и 100 строк за час.
Чем именно если не секрет тебя это повеселило?
V>Кстати теперь становится понятно, почему последнее время мне даже для V>поиска в рунете гуглом все чаще приходиться пользоваться.
И какая связь?
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте, Sanik, Вы писали:
A>>Чем именно если не секрет тебя это повеселило?
S>Видимо, именно то, что 100 строк за час — это круто. S>Уважаемый Anatolix, а Ваша продуктивеность в yandex — 800 стабильных NCLOC в день?
Вообще кусочек вырван из контекста. Имелось ввиду собеседование и достаточно простой код. Да я безусловно могу за час написать и отладить например алгоритм сортировки размером в 100 строк по его описанию(даже сейчас не программировав серьезно уже год).
Что 800 LOC в день в большой production системе это нереально, это конечно правда(мне кажется это даже для недели очень хороший результате), но в основном это нереальным делает не то, что физически нельзя думать и давить на кнопки с такой скоростью, а все-таки необходимость тестирования и большой codebase вокруг них. Новую программу с нуля в 800 строк за день написать вполне можно.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте, Uzumaki Naruto, Вы писали:
UN>Всегда считал подсчет строк в коде бредом... а особенно мерить эффективность работы человека этим параметром.
эффективность != продуктивность (см. мой пост на который вы ответили)
Anatolix пишет: > > V>Жуть. > > Почему?
Ну потому что меня подобное поразило по многим причинам, объяснять, что
мне не нравиться, смысл? мое восприятие исключительно субъективное.
Возможно 90% программистов от подобного наоборот тащатся.
> > V>Особенно повесилило про карму и 100 строк за час. > > Чем именно если не секрет тебя это повеселило?
Вот именно это и про карму плохую и хорошую (это больше индусам
свойственно, а не европейцам) и про 100 строк кода за час (по моему
опыту програмерскому обычно подобный код даже не рефакторить
приходиться, а просто выкидывать, ну нельзя из Г. конфету сделать, все
одно Г. будет.)
> > И какая связь?
Прямая, как бы мы не ругали руководство, но по сути единственный
человек, который может написать программу хорошо или плохо — это
программист. А руководство виновато лишь тем, какого программиста оно
нашло и насколько оно позволяет/не позволяет эффективно/не эффективно
работать.
> Любая проблема дизайна может быть решена введением дополнительного > абстрактного слоя, за исключением проблемы слишком большого количества > дополнительных абстрактных слоев
Ага.
Anatolix пишет: > > Новую > программу с нуля в 800 строк за день написать вполне можно.
И выкинуть ее. Сколько видел, гораздо эффективнее и качественнее код
выходит, если человек сначала думает а потом пишет 3 строчки, чем
сначала пишет 100 строчек, а потом думает.
По моему опыту, чем человек меньше кода пишет, тем код качественнее.
Здравствуйте, Anatolix, Вы писали: V>>Особенно повесилило про карму и 100 строк за час.
A>Чем именно если не секрет тебя это повеселило?
ИМХО тут ты перегнул. Одно дело написать программу 100 строк, которая не упадет при первом запуске, на C# в студии с установленным решарпером, а совсем другое — на С в нотепаде. Во втором случае я гарантирую что хрен она скомпилится с первой попытки
Здравствуйте, Sanik, Вы писали:
S>Видимо, именно то, что 100 строк за час — это круто. S>Уважаемый Anatolix, а Ваша продуктивеность в yandex — 800 стабильных NCLOC в день?
У меня за последний примерно месяц продуктивность — около -48500 строк (переписал 50 000 строк кода на PHP полутора тысячами на Python).
Здравствуйте, Anatolix, Вы писали:
A>Что 800 LOC в день в большой production системе это нереально, это конечно правда(мне кажется это даже для недели очень хороший результате), но в основном это нереальным делает не то, что физически нельзя думать и давить на кнопки с такой скоростью, а все-таки необходимость тестирования и большой codebase вокруг них. Новую программу с нуля в 800 строк за день написать вполне можно.
И ещё не надо забывать, что в одном проекте участвует большое количество народу. И имхо производительность большого проекта (а таких в Яндексе большинство) в значительной степени определяется налаженным взаимодействием между отделами/разработчиками.
Что до меня, то если судить по количеству строк кода, то я — явный диверсант, и часто так было, что стирал большое количество старого кода — много больше, чем писал нового. И что самое интересное, от этого была какая-то польза.
Курица — это инструмент, с помощью которого одно яйцо производит другие.
[]
>> >> V>Особенно повесилило про карму и 100 строк за час. >> >> Чем именно если не секрет тебя это повеселило? V>Вот именно это и про карму плохую и хорошую (это больше индусам V>свойственно, а не европейцам) и про 100 строк кода за час (по моему V>опыту програмерскому обычно подобный код даже не рефакторить V>приходиться, а просто выкидывать, ну нельзя из Г. конфету сделать, все V>одно Г. будет.)
не надо путать 100 строк _В_ час на каком либо большом проекте, и написание 100 строк за час, решая какую-то локальную, отвязанную задачу. нету в этом ничего особенного
Здравствуйте, SP_, Вы писали:
V>>>Особенно повесилило про карму и 100 строк за час.
A>>Чем именно если не секрет тебя это повеселило?
SP_>ИМХО тут ты перегнул. Одно дело написать программу 100 строк, которая не упадет при первом запуске, на C# в студии с установленным решарпером, а совсем другое — на С в нотепаде. Во втором случае я гарантирую что хрен она скомпилится с первой попытки
А причем тут нотепад? Вообще все в студии(зачеркнуто) в чем хотят пишут.
Ну и ладно пусть не скопмилится. Существуют ошибки синтаксиса и ошибки показывающие что человек ч-то-то в программировании не догоняет, на первые-то пофиг в принципе.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Здравствуйте, Vzhyk, Вы писали:
>> Новую >> программу с нуля в 800 строк за день написать вполне можно. V>И выкинуть ее. Сколько видел, гораздо эффективнее и качественнее код V>выходит, если человек сначала думает а потом пишет 3 строчки, чем V>сначала пишет 100 строчек, а потом думает. V>По моему опыту, чем человек меньше кода пишет, тем код качественнее.
Абсолютно согласен, в чем point-то?
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Anatolix пишет: > >> > Новую >> > программу с нуля в 800 строк за день написать вполне можно. > V>И выкинуть ее. Сколько видел, гораздо эффективнее и качественнее код > V>выходит, если человек сначала думает а потом пишет 3 строчки, чем > V>сначала пишет 100 строчек, а потом думает. > V>По моему опыту, чем человек меньше кода пишет, тем код качественнее. > > Абсолютно согласен, в чем point-то?
В 100 строках в час и выводах из этого. Я например никогда не пишу сто
строк в час и даже 10, и даже не знаю, сколько и не задумывался, потому
как жаль на это время тратить.
А мне про карму понравилось. Слово карма созвучно со словом корма (задняя часть корабля). Тогда смешно получается. У кого карма больше, тот и делает данный проект
(опять пишу всякую чушь)