Хочу работать в Google: Нужен ли мне Topcoder?

Для тех, кто не знаком с Topcoder – это сайт, где люди занимаются “спортивным программированием”. То есть решают алгоритмические задачи на время, в зависимости от времени и правильности решения, собирают какое-то количество баллов. Кто набрал больше всего баллов, тот и молодец. Конечно, картина сильно упрощена, но суть примерно такая.

Есть еще много подобных и похожих сайтов и мероприятий – ACM, Google Code Jam и так далее. Для удобства изложения я их сгребу под одну гребенку.  Так вот вопрос – если вы в относительно ближайшем будущем, скажем, в течение года,  планируете подаваться в Google или другую компанию, нужно ли вам тратить время на Topcoder?

Речь тут пойдет о тех, кто готовится к интервью и не участвует в соревнованиях по программированию на хоть немного  регулярной основе. Понятно, что если вы уже имеете на Topcoder красный или желтый рейтинг, то к вам это не относится. Также учтите, что я спортивным программированием сама никогда толком не занималась, поэтому мое мнение – оно основано больше на опыте интервьюирования, чем опыте подготовки на таких сайтах.

В далеком 2008 году, когда я только готовилась к интервью в Цюрих, мне написали письмо с заголовком “Interview Preparation” (подозреваю, что стандартизированное). Не знаю, посылают ли такие письма сейчас, но вот что там было написано:

“You may want to visit the website www.topcoder.com. You have to launch the ‘Arena’ widget and then go to the practice rooms where you can play with the coding problems in the first and second division.”

Я, правда, тогда совету не вняла, и на топкодер заниматься не пошла. И вот почему:

1) Задачи и алгоритмы на интервью обычно довольно типовые. Очень редко когда надо изобретать какой-нибудь хитровывернутый алгоритмический “велосипед” – как раз то, что развивает спортивное программирование. Если навые решения сложных алгоримтический задач на соревнованиях у вас уже есть – это очень круто. Если нет – то ИМХО не стоит тратить кучу времени на то, чтобы его приобрести.

2) Алгоритмы, которые нужно знать для интервью – это очень небольшое подмножество того, что нужно знать спортивному программисту. Ну, то есть для интервью реально не надо в деталях знать 3 алгоритма поиска подстроки с разными хитрыми модификациями, включая Кнута-Мориса-Пратта.

3) На интервью важно написать хороший код. То есть лично я оценю лучше кандидата, который напишет код за 15 минут, но код будет элегантный, переменные будут названы понятно, и код он протестирует вслух, чем того, кто напишет код за 10 минут, но переменные назовет “i1”, “i2”, и мне надо будет в этот код еще 5 минут пялиться, чтобы понять, что там вообще происходит. Обычно спортивное программирование на навык хорошего аккуратного кода не особо ориентированно, а это очень важно.

4) Решение алгоритмических задач – это одна, пусть и довольно большая, часть интервью. Но на самом деле готовиться надо не только к ней. Есть еще вопросы на дизайн, вопросы на знания основ, вопросы на soft skills… И к ним тоже надо готовиться.

Так что – нужно ли тратить время на topcoder в принципе? Да, вполне можно для личного и профессионального развития. Нужно ли готовиться на topcoder к интервью в условиях ограниченного времени? Мне кажется, что это далеко не самый эффективный способ подготовки, так что мой совет – нет.

Ну и в качестве бонуса – помогает ли topcoder рейтинг попасть на работу в Google?

1) Вероятно да, если вы входите в top (10-20-30) по миру, или побеждали на каких-нибудь именитых совернованиях.

2) Если вы не топ, но имеете приличный рейтинг, то это особо роли не играет. Я не помню ни разу, чтобы комиссия решила нанять кандидата, который не особо прошел интервью, только потому, что у него где-то там какой-то рейтинг. Но сам факт хорошего рейтинга значит, что за ним есть реальные знания и навыки – а вот это уже очень даже повышает шансы.

Другая точка зрения (EN)