Привет Codeforces!
В этом году я заканчиваю школу и поступаю в университет, я не вижу больше смысла заниматься спортивным программированием (только получить удовольствие от участия в контестах, но не от прорешивания задач). У меня возник вопрос, что мне делать теперь? Я попытаюсь объяснить что я имею ввиду.. Раньше, когда я приходил из школы и хотел поделать что то полезное, я сдавал задачи, осознавая, что это вклад в мое будущее(ну например поступление в университет), но что теперь мне делать, что бы это положительно повлияло на мое будущее, какой вклад делать? Пожалуйста поделитесь своим опытом, что вы делали после СП программирования?
Если вы знаете похожие посты, скинте пожалуйста ссылку. Я пытался загуглить, но не нашел ничего похожего, хотя наверняка такие посты есть. У меня просто очень скудное воображение для того что бы найти нормальный заголовок_)
Спасибо за помощь!
Auto comment: topic has been translated by Jostic11 (original revision, translated revision, compare)
The point of uni is to meet new people and learn about different possible paths of career.
You are absolutely right, I can’t wait for this opportunity, but I can’t greatly influence it and do it in my free time ..
I like how you completely ignored "Universities are also supposed to educate us". XD
"supposed to"
У меня спортивное программирование плюс-минус закончилось с финалом ICPC 2014. В том же году я ушёл с мат-меха СПбГУ в свежеоткрытый бакалавриат АУ, его успешно закончил в 2018, а потом — уже после переезда в ВШЭ СПб (не путать с ФКН в Москве!) — и магистратуру (защитился примерно месяц назад).
В целом у меня плюс-минус всё время ушло на учёбу программированию в разных проявлениях. Ну, где-то до 2016 года я ещё учился в музыкальной школе, тоже уходило много времени, но-таки закончил.
А из деятельности кроме пар:
Глобально в программировании я больше ушёл именно в кодинг и изучение всяких технических деталей: тонкости и стандарты языков программирования, различные парадигмы, проектирование софта, системы сборки, процессы разработки... В основном всё-таки технику, мне очень нравится аккуратно писать и отлаживать код. Например, в последний год регулярно читаю стандарт C++ в рамках диплома и преподавания. А сам диплом — про типобезопасный запуск JavaScript-функций из C++, там куча метапрограммирования на шаблонах и размышлений об удобном API и совмещении несовместимых семантик.
Из более локального при наличии свободного времени:
Кстати, буду рад, если рассмотрите нашу программу ПМИ в Питерской вышке для поступления (список предметов, проекты на первом курсе, группа ВК, чат с деканом и студентами). Я там преподаю и немного администрирую учебный процесс на первых курсах. Сложно, но интересно, по делу и стараемся заботиться о всех поступивших студентах. БВИ к нам у вас вроде есть, если с ЕГЭ всё окей :)
На счёт ПМИ в питерской вышке.. В неё пока вообще не идут олимпиадники, и это очень настораживает, тем более что там насколько я знаю есть хорошие стипендии от jetbrains, что для иногородних участников огромный плюс.
На самом деле сколько-то олимпиадников с согласием на зачисление уже есть, просто поступающие по перечневым олимпиадам не показываются как БВИ до получения результатов ЕГЭ.
Меня тоже настораживает :( Не очень понимаю, что поменялось по сравнению с предыдущим годом. Может, шевелиться поздно начали и большинство всеросников уже подались в другие места, а дальше — по нарастающей. В прошлом году все более-менее в одно время начинали подаваться, а сейчас ЕГЭ сдвинулось.
ICPC даёт неплохую помощь в развитии карьеры, поэтому соревноваться в удовольствие самое то. Также не стоит забывать, что доля СП будет на почти любой IT программе и быть опытным явно не будет минусом. Насчёт практики вне контестов — тут уже какую цель поставишь. Если тебе не нравится прорешивать задачи, я бы серьезно задумался о пользе СП в целом. Лично у меня каждый AC вызывает счастье, соответственно и прорешка мне нравится.
Я не уверен, но как я понимаю, в университете не нужно будет уметь решать задачи, а только умеють писать всевозможные структуры и алгоритмы(я могу быть не прав). Но если так нарешка врятли поможет. AC это безумное счастье, с этим сложно не согласиться. "Если тебе не нравится прорешивать задачи, я бы серьезно задумался о пользе СП в целом" в этом то и суть вопроса, если не СП, то что? Что писать, какую область изучать.. Очень не понятно что пригодится потом.
"Если не СП, то что?"
Я бы сказал, что с таким вопросом надо задумываться, а кем бы ты хотел работать. И дальше уже под свои нужды подгонять программу в вузе. (Например если хочешь заниматься компьютерным зрением, то надо идти на ML и все подобное).
Насчёт разных структур данных и алгоритмов не согласен, нарешка однозначно поможет. Возможно проблема в том, что тебе не нравится решать простые и ad-hoc задачи, но этого можно и не делать ;)
В хороших вузах обычно можно ещё не сразу определяться, а где-то на старших курсах потыкаться. В разной степени: где-то сразу на условном третьем курсе надо выбирать специализацию (и потом переводиться, если захотелось), где-то просто набираешь курсов/проектов по вкусу (и нагрузке).
Подтверждаю. Имелось ввиду, что должна быть хотя бы какая-то возможность углубиться в нужную тему.
Думаю, что после первого курса можно съездить step интерном в гугл/подобное (ТС для этого только англ надо ботать), там можно много с кем поговорить и определиться
Да, стажировки — это здорово.
Я бы сказал, что надо скорее ботать не английский в целом, а алгоритмические собеседования на английском, это отдельный специфичный жанр.
И подаваться на эти стажировки надо осенью, то есть на лето 2021 — уже через несколько месяцев. В крупных зарубежных компаниях цикл найма начинается сильно раньше, чем в России. В небольших можно и зимой, иногда даже весной, но там сложнее найти кого-то, кто делает визу для стажировки и разрешение на работу.
Есть ли шанс попасть в большую компанию? Ведь туда наверняка идут очень много человек. И стоит ли подавать сразу в несколько компаний? Не может быть такого, что допустим 2 примут, а стажировка будет проходить в одно время?
Подать в несколько всегда лучше, но на собеседованиях задачи похожи на олимпиадные — с твоим рейтингом они должны показаться очень простыми. Если примут в 2 — просто от одного из оферов откажешься, скорее всего за лето в 2 места не съездить (без академа).
У гугла, например, есть программа STEP — это только 1 и 2 курсы, то есть конкуренция ниже.
Еще мой совет — не пытаться получить какую-то супер интересную задачу на стажировку, думая, что "попробуешь работу". Они скорее чтобы попробовать компанию и процессы разработки. Еще в больших компаниях всегда можно найти людей из других областей, которые согласятся тебе за обедом рассказать, чем они занимаются — кажется очень полезно на младших курсах.
Спасибо за советы, а то что я например откажусь от оферов, это потом не может плохо сказаться? Ну просто я хз как объяснить что я имею ввиду.. Ну не получится это как "кидалово"?))
Если отказаться от оффера (до стадии "я согласен на оффер, делаем визу"), то это вообще норм. Если компания на это обижается — в лес такую компанию.
При выборе работы собеседование — это ещё и когда сотрудник оценивает работодателя. На ИТ-стажировках пока скорее аналогично работает. Ну, торговаться по зарплате скорее не выйдет (точнее, я не слышал, чтобы кто-то пробовал), но вот вежливо выбрать другую компанию норм.
Обязательно подавать в несколько компаний, шансов дофига, но и рандома тоже много (ещё на этапе скрининга резюме). Потом можно выбирать среди офферов.
Можно про процесс конкретно гугла посмотреть тут. В других крупных компаниях процесс похожий.
В крупную компанию, мне кажется, даже проще, чем в мелкие — у них уже процесс поставлен, куча материалов для подготовки в интернете, куча знакомых с опытом.
Ну вообще чаще всего все едут летом на стажировку, но я слышал про случаи, когда ребята успевали летом, а потом осенью постажироваться. Я, например, в свое время был на стажировке с сентября.
Если примет несколько контор, то никакого "кидалова" не получиться, просто выберете, что больше нравится. Все все понимают. Более того, можно уточнить про сроки, например сразу забить следующий год.
Ну и еще, когда будете решать имеет смысл дернуть друзей, или знакомых ну или просто с сообщества людей, кто может зареферить, тогда этап скрининга будет немного попроще.
А это какую (для не топ олимпиадника) ? То есть мне понятно, что можно пойти в условный МАИ и есть реальный шанс поехать на финал, если достаточно трениться, это кажется серьёзным достижением и хорошей строчкой в резюме. Но в вузах с более жёсткой конкуренцией, поездку на финал заберут люди, которые, кажется, уже в школе довольно топовые. В чём смысл icpc для остальных (кроме фана, конечно)?
Компании спонсоры ищут людей среди участников. Поэтому даже хорошее место на Moscow Programming Contest уже даёт много плюшек (если говорить про Москву конечно). В то же время Jostic11 достаточно сильный (судя исключительно по рейтингу) и с правильной командой можно съездить на финал даже от топ вуза.
Не понятно, что за плюшки: вряд ли без собеседования дают офер на 300к в наносекунду. А на собесе я ещё не помню в своей жизни "околоолимпиадных" задач, которые не решил бы +- синий/фиолетовый почти с прочтения (мб мне, конечно, таких не давали, хз) + у меня есть какое-то более-менее норм место на москоде (не помню, в каком году) и на а четверти не супер низкое, но и не "хорошее", конечно. Получил 0 контактов от hr компаний спонсоров. Чяднт?
Насчёт ТС — но это всё равно надо довольно много времени этому уделять, как я понял из поста, у него нет такого в планах
Строчка "финалист ICPC", к сожалению, тоже не избавляет от разворачивания односвязных списков на бумаге. Согласен, что после "фиолетового" дальше качать алгоритмы особого смысла нет. При перекладывании джейсонов они пока не пригодились
Без или почти без собеседования дают оферы только очень сильным людям, но такие все равно есть.
Я лично встречался с не слишком идейно олимпиадными задачами, но встречался с задачами неприятными, которые решать с опытом СП намного приятнее. Совершенству нет предела.
Также, со мной связывались компании-спонсоры и не раз, но я стараюсь активно участвовать во всех эвентах (в том числе на кф). На MPC в этом году тоже хорошо выступили (но не достаточно хорошо, чтобы пройти на полуфинал от вышки), думаю за это тоже прилетело.
Сложно сказать, что ты делаешь не так, но никогда не видел смысла останавливаться если нет другого увлечения.
А есть пример? Я что-то слабо себе представляю такое
Чекнул — мы на соседних местах :) Поэтому, думаю, вряд ли
Мне кажется, участие в полуфинале уже в резюме неплохо выглядит. Особенно если правильно подать, слово "ICPC"-то можно указать. Хотя где это нужно за пределами резюме — плохо представляю.
Бросать СП, когда некоторые в таком возрасте только начинают им заниматься? Ну такое...
Я б посоветовал по максимуму делать что-то в свое удовольствие, пока есть возможность:), но если так уж печешься о будущем, то подумай сперва и определись, чего ты от него хочешь. Если это программирование, то какая именно сфера, может ты сайты хочешь писать или мобильные приложения, может просто в какой-нибудь гугл лишь бы свалить, может стартап свой замутить или контору аутсорсную, а может рок звездой или депутатом, кто же тебя знает? А если ты сейчас определиться не можешь, то незачем париться, занимайся всем по чуть-чуть и тем, что нравится, и плыви по течению.
Соревновательное программирование, кстати, не ограничивается только алгоритмикой, есть еще марафоны, разные ИИ соревнования (codingame), ML (kaggle), хакатоны, проектные и около-стартапные конкурсы (Imagine Cup). Это почти те же олимпиады, но со своей спецификой.
По поводу будущей карьеры как разработчика. Если взять гипотетическую вакансию и человека, который на нее претендует. то в первую очередь интересуются теоретическим и практическим опытом, соответствующим вакансии. То есть, что знаешь, что умеешь, что делал и что можешь делать. В каждой сфере есть свой какой-то стек технологий, их в вакансиях обычно описывают. Эти технологии можно изучать, делать какие-то мини-проекты и таким образом накапливать опыт.
Олимпиадникам, конечно, частенько везет и прокатывает хорошенько устроиться куда-то после интервью с логическими или алгоритмическими задачками, но даже так ищут джунов, чтоб обучать их с нуля, а не полноценных разработчиков, готовых вносить вклад в проект уже завтра. В этом нет ничего особо плохо, да мне самому так повезло, и "метод" рабочий, но имхо, если ставить карьеру именно как основную цель, то метод не самый оптимальный, что ли.
If you are going to study something related to computing then you should keep doing problems :) also you can participate in the ICPC now.
Why does the situation change when you move to university? I have "finished" university and I still solve competitive programming problems to learn new things.
I like olympiads with contests only, but I don’t want to additionally train for them at the university, since there is no goal to win. Apparently we just have different interests
How do you balance work with university and cp? Of course you are not going to work in the first year probably because of the lack of time, but when the time comes to join the work force, to join get some internship or even a real job, how do you study, do cp and also learn enough to be able to work as a software engineer or web/app/game developer? That's what has been bugging me.
I regard competitive programming as a hobby. If I don't have time for it for some reason, I don't do it and that's not a problem.
A few ideas
Man, where you are saying to stop CP is where most of us from India start doing it.
This post seems to be coming from a different world!!
Hope that this culture (broad interest in olympiads etc. during high school) starts here also.
It's just that this is the only way for us to enter a normal university, and it gives motivation
here in india they teach us physics , chemistry , maths . 90% of this knowledge is just wasted . i personally liked chemistry very much but no use of that 2 yrs chemistry in college .
Actually this 'use' logic is kind of cyclic/infinite. You say that X has use for Y, then Y has use for what, like whats the final point bruh!
Basically all this is rooted in the human desire to find meaning in life etc. (as this is the only possible logic I could think of to justify this behaviour).
The correct thing to say will be that because one doesn't know early what options were and how things will unfold in future and so one regrets that he/she had to study color of co-ordination compounds.
"No use of that Chemistry" because you took a branch that won't use Chemistry at all. I am guessing you have taken CS. If you had taken Chemical, like one of my friends, you would use it more. As a CS guy, no one will say "no use of that math in college". It would only hold true partially
in school time chemistry was my favourite subject . and i scored highest in chem in jee more than the sum of other two. but it got to a chem school there was no future , future is here and i am loving it.
Ahh, very true,Don't you think there should be seats in IITs,NITs, for OIers, that would develop competitive coding culture in India, where we don't even know any coding language, until entering university.
But one thing (according to my view) is maths in India for JEE level is more inclined towards calculus stuff,integrals,definite integrals, rather than combinatorics,number theory,proof by hand, we are more focused on assuming the right answer by eliminating choices as, JEE papers are MCQs based. which obviously increase your reasoning skills, but we are diverted from Olympiads culture, which is real maths according to me.
Also, after entering universities, there are hell of subjects, and irritating teachers, that you cannot even focus on CP properly, another reason, I guess there is no LGM from India, but hope one day, There will be many LGM from India.
Yes man, not only that there should be some recognition for olympiad winners too.
In Iran they have a similar system that incentivizes the people winning olympiad medals for their country.
I think if such a system would be here in India, probably India's winnings would increase in these international competitions.
I am not sure if I am qualified to give advice, given that I learnt about competitive programming at university and never reached the level of the author. But I would consider:
(1) Doing research. Find an area of interest, find some teammates (if possible), and try to solve some unsolved problems in that area, or just invent something completely new, superior to what is already known. There are a lot of trendy research directions today, such and deep learning and big data. Many other directions are left behind now due to lack of funding (in my opinion), such as complexity theory, knowledge representation, automated theorem provers, etc. Having skills in algorithms helps to advance these areas. Having a green "accepted" in CodeForces is nice. But having a paper accepted at a peer-reviewed conference or a journal, or having your google scholar citations going up was a completely new level of happiness for me. Having a publication by the end of your bachelor degree tremendously improves your chances of being accepted into good Ph.D programs, especially if you have your future advisor as a co-author ;) So it's a good time to start.
2) Contributing to open source. Explore Github, contact project owners that have issues with "help needed" label, or some other projects that you find interesting, and see if you can help. Learn some new technologies on the way. Not only this is useful for them, it will build you a nice portfolio.
3) Getting internships. This can help you decide if industry programming jobs is something you find interesting. Some people get tired or bored, some find it exciting, it depends.
4) Thinking about where you want to live in future. If immigration, or even exploring different countries is something you want to consider, it's time to start working on it! Explore possible paths to where you want to be, learn foreign languages, etc.
5) Helping other people learn to program. See if teaching/tutoring is something you enjoy doing. If you decide to do research in an academic institution (even as a Ph.D student), teaching is often required. Learning how to teach may be useful for you, and, usually, for people you teach :)
6) Getting more friends and connections, it's much easier when you are young and surrounded by people of your age (and culture).
7) Stay fit and healthy: consider hiking, biking, gym, whatever works. I think the older you are, the more important this is.
Thanks for the advice, I didn't even think about point 1, it sounds like something impossible, but it's definitely worth trying
Well, research is very possible, especially if you have a good advisor who can steer you. That's the important part: to know what to research so you will be able to publish the result somewhere. Also, where to publish, how to write, when to write, who to talk to... Basically, a separate game with its own set of implicit rules.
However, it may feel very distinctly from a regular programmer job. E.g. if you tackle a big problem, it may take years before you get reasonable progress. May be quite demotivating, afaik.
можешь уйти в киберспорт. говорят валорант сейчас развивается в этом +новая игра не так много конкуренции, как в других уже состоявшихся игр.
Самый годный совет, вот что я искал все это время. А валорант это конечно безумно интересная игра, которая по популярности скоро станет топ 1 в мире(нет).