Дарья Крохина – тренер по спортивному программированию, разработчик-алгоритмист в Cognitive Technologies. Мы поговорили с Дарьей и расспросили ее о том, как победить в олимпиаде по программированию и карьере разработчика.
Дарья, расскажи, пожалуйста, какое образование ты получила? Как обучение в НИТУ «МИСиС» повлияло на выбор профессии?
Я еще со школы точно знала, что хочу быть программистом. Я училась в очень хорошей математической школе и уже тогда участвовала в олимпиадах по программированию. Потом я пошла учиться в МФТИ, однако это оказалось для меня слишком сложно. После 2 курсов я перевелась в МИСиС.
Выбор в сторону МИСиС был сделан из-за наличия в институте секции по олимпиадному программированию. В общем-то, на мою профессию программиста МИСиС никак не повлиял, я бы в любом случае стала работать по этой специальности.
Можешь рассказать подробнее, что такое ACM ICPC? Как ты стала его участников?
ACM ICPC – это самое серьезное соревнование в мире по программированию среди студентов. В соревновании участвуют команды от институтов, по 3 человека в каждой. Есть несколько этапов соревнования: четвертьфинал, полуфинал и финал. Традиционно четвертьфинал для москвичей проходит в Москве, на него допускаются все желающие команды. Это соревнование регионального масштаба. Следующий этап – полуфинал – туда допускаются лучшие команды по результатам четвертьфинала (для Москвы это около 20 команд). В полуфинале участвуют студенты из России, Беларуси, Грузии, Армении, Латвии, Казахстана и Узбекистана. Он проходит в Санкт-Петербурге. Лучшие команды по результатам полуфинала проходят в финал чемпионата мира по программированию ACM ICPC. Он каждый год проходит в разных странах. В этом году, например, финал будет проходить в Америке, а раньше проходил в Таиланде и Марокко. Ну, а когда я была в финале, он проходил в Санкт-Петербурге. Надеюсь, что я когда-нибудь уже в качестве тренера побываю в финале где-нибудь за границей.
Как я уже говорила, я участвовала в олимпиадах по программированию еще со школы, и ACM ICPC – это логичное продолжение моего участия.
Как проходят олимпиады по программированию? Какими знаниями нужно обладать, чтобы принимать в них участие? Что стимулирует к участию в них?
Каждый этап ACM ICPC – это порядка 9-13 задач по программированию, которые студенты должны сделать за 5 часов. Для каждой задачи решением является программа. Правильность программы проверяется в специальной тестирующей системе. Решение задачи проверяется на наборе тестов. Если программа прошла все тесты, то решение считается верным.
Для участия в ACM ICPC естественно надо уметь программировать. Для написания программ разрешено использовать один из трех языков: C++, Java или Python. Но этого недостаточно, надо знать алгоритмы и структуры данных, а также иметь хорошую математическую подготовку. И, самое важное, уметь все это творчески применять и нестандартно мыслить. Ну а еще, чтобы хорошо участвовать в олимпиадах, надо много-много работать и прорешать огромное количество задач.
Победа и даже участие в финале ACM ICPC – это действительно большое достижение, и оно помогает студентам при последующем трудоустройстве. Однако сомневаюсь, что это основной стимул – мне кажется, для большинства это скорее приятный бонус. Основные же причины – это любовь к решению интересных головоломок и спортивный азарт.
Как проходила твоя первая олимпиада, с чего всего начиналось, и почему ты решила продолжить учить других участников соревнований?
Ну, первую свою олимпиаду я совсем не помню – я все-таки занималась спортивным программированием с 8 класса. Но сомневаюсь, что мои результаты на ней были высокими. Для хороших результатов надо много работать – это не та отрасль, куда можно забежать и сразу получить все плюшки победителя.
Тренером по спортивному программированию я стала потому, что так и не смогла избавиться от интереса к решению задач и от спортивного азарта. А еще мне очень хочется, чтобы команда МИСиС достигла самых больших высот в ACM ICPC.
Какие участники запомнились тебе больше всего?
Естественно, в олимпиадном программировании, как и в любом спорте, есть свои легенды. Например, есть Геннадий Короткевич, который уже во втором классе стал призером республиканской олимпиады по программированию (то есть получил право поступления в любой ВУЗ без экзаменов). А в 12 лет у него было уже серебро на международной олимпиаде. Ни один участник в мире и близко не имеет таких достижений. Обычно на международную олимпиаду попадают школьники 10 – 11 классов (и само попадание на олимпиаду является очень большой заслугой).
Какой процент девушек принимает участие в олимпиадах по программированию?
Совсем недавно видела картинку про статистику по участникам ВКОШП (аналог ACM ICPC для школьников). Статистика, конечно, не в пользу девушек, но, как мне кажется, с каждым годом их участвует все больше и больше.
Какие планы по развитию карьеры есть сейчас?
Вообще у меня все хорошо с карьерой. Подготовка студентов к олимпиадам не является моей основной профессией, это скорее приятное хобби. Главное мое место работы – Cognitive Technologies, там я разрабатываю систему распознавания дороги для беспилотных автомобилей. Исследованиями в области компьютерного зрения тоже очень интересно заниматься.
Какие книги вдохновляют?
Так, чтобы вдохновляли, сложно сказать, да и не так уж много я читаю. Последние 3 прочитанные мной книги – «Атлант расправил плечи», Лолита и фанфик «Гарри Поттер и методы рационального мышления». Последний мне понравился больше всего.
Что можешь пожелать нашим читательницам, чтобы не возникало страха идти работать в IT?
Того же, что и любому человеку в любой области: заниматься тем, что интересно, думать своей головой и много-много трудиться.