Для тих, хто не знайомий з Topcoder - це сайт, де люди займаються "спортивним програмуванням". Тобто вирішують алгоритмічні завдання на час, в залежності від часу і правильності рішення, збирають якусь кількість балів. Хто набрав найбільше балів, той і молодець. Звичайно, картина сильно спрощена, але суть приблизно така.
Є ще багато подібних і схожих сайтів і заходів - ACM, Google Code Jam і так далі. Для зручності викладу я їх згріб під одну гребінку. Так от питання - якщо ви у відносно недалекому майбутньому, скажімо, протягом року, плануєте подаватися в Google або іншу компанію, чи потрібно вам витрачати час на Topcoder?
Мова тут піде про тих, хто готується до інтерв'ю і не бере участі в змаганнях з програмування на хоч трохи регулярній основі. Зрозуміло, що якщо ви вже маєте на Topcoder червоний або жовтий рейтинг, то до вас це не стосується. Також врахуйте, що я спортивним програмуванням сама ніколи толком не займалася, тому моя думка - воно засноване більше на досвіді інтерв'ювання, ніж досвіді підготовки на таких сайтах.
Я, правда, тоді раді не почула, і на топкодер займатися не пішла. І ось чому:
1) Завдання і алгоритми на інтерв'ю зазвичай досить типові. Дуже рідко коли треба винаходити якийсь хітровивернутий алгоритмічний "велосипед" - як раз те, що розвиває спортивне програмування. Якщо навие вирішення складних алгорімтіческій завдань на змаганнях у вас вже є - це дуже круто. Якщо немає - то ІМХО не варто витрачати купу часу на те, щоб його придбати.
2) Алгоритми, які потрібно знати для інтерв'ю - це дуже невелика підмножина того, що потрібно знати спортивному програмісту. Ну, тобто для інтерв'ю реально не треба в деталях знати 3 алгоритму пошуку підрядка з різними хитрими модифікаціями, включаючи Кнута-Моріса-Пратта.
3) На інтерв'ю важливо написати хороший код. Тобто особисто я оціню краще кандидата, який напише код за 15 хвилин, але код буде елегантний, змінні будуть названі зрозуміло, і код він протестує вголос, ніж того, хто напише код за 10 хвилин, але змінні назве "i1", "i2 ", і мені треба буде в цей код ще 5 хвилин витріщатися, щоб зрозуміти, що там взагалі відбувається. Зазвичай спортивне програмування на навик хорошого акуратного коду не особливо орієнтовано, а це дуже важливо.
4) Рішення алгоритмічних задач - це одна, нехай і досить велика, частина інтерв'ю. Але насправді готуватися треба не тільки до неї. Є ще питання на дизайн, питання на знання основ, питання на soft skills ... І до них теж треба готуватися.
Так що - чи потрібно витрачати час на topcoder в принципі? Так, цілком можна для особистого і професійного розвитку. Чи потрібно готуватися на topcoder до інтерв'ю в умовах обмеженого часу? Мені здається, що це далеко не найефективніший спосіб підготовки, так що моя порада - ні.
Ну і як бонус - чи допомагає topcoder рейтинг потрапити на роботу в Google?
1) Ймовірно так, якщо ви входите в top (10-20-30) по світу, або перемагали на якихось іменитих совернованіях.
2) Якщо ви не топ, але маєте пристойний рейтинг, то це особливо ролі не грає. Я не пам'ятаю жодного разу, щоб комісія вирішила найняти кандидата, який не особливо пройшов інтерв'ю, тільки тому, що у нього десь там якийсь рейтинг. Але сам факт гарного рейтингу означає, що за ним є реальні знання і навички - а ось це вже дуже навіть підвищує шанси.
- Google стажування: Історія Діани
- невеликі гуглоновості
- Interview tips from Google
- Що таке oncall