Home
So high, so low, so many things to know - о словах и делах - 2 [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

о словах и делах - 2 [Июл. 5, 2009|08:12 pm]
Previous Entry в избранное рассказать другу Next Entry
Что судить следует по делам, а не по словам - трюизм; но на практике его нелегко оказывается применять, когда слова очень правильные. Три примера, которые мало кому будут интересны.

2. До того, как я начал работать в Гугле пару лет назад, я почти ни разу не интервьюировал никого (хотя бы потому, что большую часть карьеры был фрилансером). В Гугле мне сразу пришлось интервьюировать, и очень много - одно время стандартно по два интервью в неделю, и это при том, что, учитывая подготовку и отчет, на каждое уходило минимум три часа. Со временем нагрузка стала снижаться, а где-то год назад и вообще сошла на нет.

Большое количество проведенных интервью научили меня чему-то, с чем я бы и до того абстрактно, наверное, согласился, но как следует не понимал: хорошие и правильные слова, которые умеет говорить кандидат, вовсе не означают, что он умеет писать код. Я не говорю тут о модных словах, заметьте - нет, именно о хороших и правильных. Т.е. слушая кандидата, можно подумать, что он невероятный умница и все правильно понимает еще лучше тебя самого; но код писать он не умеет. Бывают особо сюрреалистичные мета-случаи, когда кандидат говорит умные и правильные слова о том, что важно не только умные и правильные слова говорить, но и код уметь писать; и при всем при этом код он писать все равно не умеет.

Поначалу мне было неловко просить, скажем, обладателя Ph.D. в алгоритмической области, или профессионала с 10-летним стажем, написать двоичный поиск в отсортированном массиве. Где-то после третьего случая, когда попытка завершилась полным провалом, неловкость куда-то исчезла. Снова и снова мне попадались случаи, когда кандидат блестяще отвечал на все вопросы - теоретические и практические - и совершенно не мог написать достаточно простой код.

[info]ivan_ghandhi недавно нашел очень удачную на мой взгляд метафору, в разговоре о том, как инженеры, которые не умеют писать код, проходят интервью: «They talk. It's a theory for them. Say, you are a literary critic; and they are hiring a writer. "Tell me about the archetypal novel structure", "what would you avoid when writing a dialog between two elderly women on a cruise boat?"»

Так вот и получается.

Мне не хотелось бы, кстати, создать впечатление того, что я в белом, а кругом все в говне. Среди тех, кого я интервьюировал, были и люди, очень хорошо писавшие код, лучше меня. Некоторые из них теперь работают рядом. Да и все слова выше о том, что можно говорить умно и правильно, и быть при этом совершенно непродуктивным программистом, относятся и ко мне лично. Я в целом неплохо работаю сейчас, по собственной оценке, но в прошлые годы были времена, когда прокрастинация настолько овладевала мной, что месяцами я не мог сделать буквально ничего полезного. При этом в то время так же, как сейчас, я мог бы вам очень подробно рассказать свои супер-умные мысли про OOP, agile, динамические и статические языки программирования, ядро Windows NT в сравнении с Линуксом, и многое-многое еще. Никому не посоветую судить о том, какой я программист, только по словам, которые я говорю или пишу - включая эту самую запись. Всегда смотрите на код.
ссылкаОтветить

Comments:
Страница 1 из 2
<<[1] [2] >>
[User Picture]From: [info]amigofriend
2009-07-05 05:18 pm none (UTC)

(Link)

Всегда смотрите на код вперёд!
[User Picture]From: [info]meangel
2009-07-05 05:19 pm none (UTC)

(Link)

"недавно нашел очень удачную на мой взгляд метафору"

Критик ответит на первый вопрос, но не ответит на второй. Чтобы ответить на второй, таки-надо быть writer-ом.
[User Picture]From: [info]katren
2009-07-05 10:30 pm none (UTC)

(Link)

а какой ответ на второй вопрос? любопытно.
[User Picture]From: [info]dimrub
2009-07-05 05:24 pm none (UTC)

(Link)

Ну а тогда как различать тех, кто не могут написать код потому, что ими овладела прокрастинация (или, скажем, интервьюирный мандраж) от тех, кто код писать не могут, потому что не умеют? Я не знаю, кстати. Приходится просто не задаваться этим вопросом.
[User Picture]From: [info]msh
2009-07-05 05:40 pm none (UTC)

(Link)

Мы даем задание и оставляем наедине с компьютером на пару часов. Если человек не может писать в таких условиях, то врядли мы сможем ему все равно обеспечить лучше для работы.
[User Picture]From: [info]amigofriend
2009-07-05 07:06 pm none (UTC)

Re: музыкой навеяло

(Link)

Would you hire a fisherman without asking him to show you some cod?
[User Picture]From: [info]trurle
2009-07-05 05:40 pm none (UTC)

(Link)

Хуже кандидата, претендующего на должность программиста, но не умеющего писать код, бывает только кандидат не умеющий считать до трех не умеющий читать. Как я сейчас.
[User Picture]From: [info]grur
2009-07-05 05:40 pm none (UTC)

(Link)

Ок, покажи код.
[User Picture]From: [info]avva
2009-07-05 07:35 pm none (UTC)

(Link)

Дык я ж вроде не ищу работу?

Вообще, единственное, что я писал, что находится в открытом доступе, и это законченный проект, а не один-два патча, это наверное memcached. Я его правда года четыре уже не касался, но подозреваю, что процентов 50 C-шного кода до сих пор мои.
[User Picture]From: [info]bars_of_cage
2009-07-05 05:57 pm none (UTC)

нарекание трудящегося (офф)

(Link)

а почему гмейл сохраняет пришедшие Word-вложения как default.doc? это же страшно неудобно, всякий раз вручную переименовывать
[User Picture]From: [info]squadette
2009-07-05 06:15 pm none (UTC)

Re: нарекание трудящегося (офф)

(Link)

это видимо файерволл, как это ни странно

у всех остальных он сохраняет как было
From: [info]type_mismatch
2009-07-05 06:10 pm none (UTC)

(Link)

Скажите, а задачки всегда были примерно такой сложности, как описано, или иногда что-то существенно труднее?
[User Picture]From: [info]avva
2009-07-05 06:16 pm none (UTC)

(Link)

На то, чтобы написать работающий код, задачки обычно не трудные. Бывали труднее описанных, но существенно - не думаю. Смысл такого задания - именно в проверке способности написать работающий код.

Задачки на придумать или проанализировать алгоритм (но не написать его), конечно, труднее, чем двоичный поиск.
[User Picture]From: [info]javax_slr
2009-07-05 06:20 pm none (UTC)

(Link)

PhD - специфика гугля.
Я интервьюировал много, в разных фирмах и страдал в основном от того, что люди с опытом 5-7 лет, прекрасным резюме, а ни слов правильных не знают,ни код писать не умеют.

Так много терял время, что некий минимум вопросов стал по телефону задавать, если возможно (когда не через асамот), чтобы первичный отсев провести.
[User Picture]From: [info]lelia_br
2009-07-05 07:13 pm none (UTC)

(Link)

очень интересно понять что это занчит "код писать не умеют". вы например попросите написать там binary tree insert/delete, что вы видите?
[User Picture]From: [info]pustovek
2009-07-05 06:28 pm none (UTC)

(Link)

Универсальная истина.
[User Picture]From: [info]inkogniton
2009-07-05 06:29 pm none (UTC)

(Link)

А двоичный, в смысле бинарный; массив это, я так понимаю, array? (извиняюсь, я по-русски эту терминологию почти совсем не понимаю) . То есть тот, который пополам, снова пополам и так далее? Это имеется в виду? Просто уточняю - сама теоретик совершенный - но если это оно, такое даже я могу - а я дуб:)
[User Picture]From: [info]avva
2009-07-05 07:59 pm none (UTC)

(Link)

Да, это имеется в виду. В этом задании основная сложность - написать его действительно правильно, т.е. тщательно учесть все edge cases во время деления пополам, правильно построить главный цикл, сделать все так, что если передатут массив размером 0 или 1, функция возвращает правильный результат, такого рода вещи.
[User Picture]From: [info]gershshpraihler
2009-07-05 06:43 pm none (UTC)

(Link)

код писать любой дебил может. ты его закон ома спроси.
[User Picture]From: [info]lelia_br
2009-07-05 06:59 pm none (UTC)

(Link)

А что ты имеешь в виду когда говоришь "не могут писать код"? Меня попросили написать merge sort у вас. Ну, написала, 10 (максимум) строчек кода. Я уверенна что правильно, а интервью я не прошла. Чего такого я могла понаписать?
[User Picture]From: [info]iratus
2009-07-05 07:04 pm none (UTC)

(Link)

а почему вы решили, что не прошли именно из-за кода?
[User Picture]From: [info]iratus
2009-07-05 07:02 pm none (UTC)

(Link)

Я двоичный поиск сходу напишу, но зачем?
Скажем я в своих областях редко когда пишу код такого плана. Кстати, часто хороший программист - это не тот кто пишет сам все с нуля, а тот кто умеет правильно и эффективно найти, понять и воспользоваться чужим кодом.
с тем же поиском, я найду тот алгоритм, который подходит для моего конкретного случая, найду код, проверю его и вперед.
[User Picture]From: [info]avva
2009-07-05 07:33 pm none (UTC)

(Link)

Ну вот поскольку в режиме интервью не очень получится дать тебе "найти тот алгоритм, найти код, проверить его", тебя и просят написать что-то простое. Это не задание на то, что ты умеешь писать алгоритм с нуля. Это задание на то, что ты умеешь писать код.
[User Picture]From: [info]white_lee
2009-07-05 07:17 pm none (UTC)

(Link)

Всегда смотрите на код.
Хотел было пошутить насчет того, что посмотрел на source этой записи, но вспомнил, что ты действительно работал в ЖЖ, и можешь быть к нему причастным. Это вышло уж слишком замысловатой шуткой с рекурсией :)
[User Picture]From: [info]avva
2009-07-05 07:55 pm none (UTC)

(Link)

:)
[User Picture]From: [info]greps
2009-07-05 07:26 pm none (UTC)

:)

(Link)

Ах, не берут у вас и тех кто умеет...
[User Picture]From: [info]avva
2009-07-05 07:29 pm none (UTC)

Re: :)

(Link)

Это верно, увы. Из всех, кого я рефернул, не взяли ни одного, а среди них было как минимум двое человек, а то и больше, сильнее меня. Процесс довольно неплохо - не идеально - отсеивает плохих кандидатов, а в том, что касается хороших, это почти лотерея :(
[User Picture]From: [info]buddha239
2009-07-05 07:27 pm none (UTC)

(Link)

А задачки помогают отсеять прокрастинирующих?:)
[User Picture]From: [info]avva
2009-07-05 09:05 pm none (UTC)

(Link)

Не очень, кстати.
From: [info]dmpogo
2009-07-05 07:36 pm none (UTC)

(Link)

А в Гугл только кодеры нужны или там еще чем по-интереснее тоже занимаются ?
Или просто вы лично были ответственны за такие позиции ?
[User Picture]From: [info]avva
2009-07-05 07:45 pm none (UTC)

(Link)

Гугл не верит в пользу "архитекторов" и других подобных инженерных позиций, обладатели которых не пишут код, а другим говорят, что писать. Таких позиций у нас нет. И самые senior и влиятельные инженеры, руководящие или организующие большие проекты, в том числе пишут код сами, и обязаны уметь писать код сами. Наверное, есть несколько редких исключений, но это редкие исключения.

Мне эта политика в целом нравится.

Не пишут код PM-ы (хотя тоже бывают умельцы) и менеджеры.
[User Picture]From: [info]starshoj
2009-07-05 08:04 pm none (UTC)

(Link)

А правильно ли нанимать"обладателя Ph.D. в алгоритмической области" писать код?
[User Picture]From: [info]olgabrook
2009-07-05 08:13 pm none (UTC)

(Link)

Толик, ты, как всегда, прав.
А про прокрастинацию это интересно - ты смог победить?

P.S. Привет из Бостона...
[User Picture]From: [info]alta_voce
2009-07-05 08:31 pm none (UTC)

(Link)

Вечные истины изрекаешь, как будто Вселенная и не переворачивалась, и коды не пишутся в Индии и Марокко... :-(
[User Picture]From: [info]cat_mucius
2009-07-05 08:45 pm none (UTC)

(Link)

При этом в то время так же, как сейчас, я мог бы вам очень подробно рассказать свои супер-умные мысли про OOP, agile, динамические и статические языки программирования, ядро Windows NT в сравнении с Линуксом, и многое-многое еще.

С удовольствием послушаю, если Вам не будет влом.
[User Picture]From: [info]pollak
2009-07-05 10:09 pm none (UTC)

(Link)

Написть код поиска на интервью может быть сложно психологически.

Когда нанимают фотографа, просят портфолио.Может на интервью просить с флешкой с готовым кодом приходить и вести разговор вокруг него , типа
- А почему Вы в этом месте выбрали такой способ - итд
From: [info]ponomarevmv
2009-07-06 01:19 am none (UTC)

(Link)

есть прогрессивные компании, рассылающие так называемые "тестовые задания". весьма забавно потом наблюдать, как человек приславший тебе это задание не в состоянии понять, что к чему в адекватно написанном коде.
From: [info]ponomarevmv
2009-07-06 01:16 am none (UTC)

(Link)

я не буду ударяться в критические рассуждения. скажу лишь одно - вся эта статья яйца выеденного не стоит без указания, что такое "уметь писать код". однако, автор, похоже, таки не потрудился хотя бы приблизительно обозначить суть явления - "уметь писать код", в его понимании.
ЗЫ кстати, просить на собеседовании написать какой-то код (под конкретную, или абстрактную задачу), по моему, есть пустая трата времени.
Страница 1 из 2
<<[1] [2] >>