Как начать соревновательное программирование? [закрыто]

17

Некоторое время я занимался программированием, но проблема в том, что мне нужно много времени, чтобы написать решение этих проблем. Я хочу спросить, может ли конкурентное программирование помочь мне улучшить это.

Если да, то как мне начать и с каких веб-сайтов я могу использовать (например, TopCoder )? Я, очевидно, пока не смогу решить очень сложные проблемы. Что я должен делать?

Если нет, что еще мне делать?

У меня также есть другая проблема, которую я хочу изучать, но я чувствую, что я не очень хорош в этом. Что я должен делать? Это все равно что задеть меня изнутри.

Я знаю, что некоторые люди могут не найти этот вопрос информативным, но, по крайней мере, позвольте мне получить ответ.

Вайбхав Агарвал
источник
1
Не стоит недооценивать ценность совместного программирования. Мы видели некоторые проблемы в нашей команде из-за чрезмерной конкурентоспособности - из-за технических / межличностных проблем. Таким образом, конкурентное программирование может помочь вам, но может принять участие в проекте с открытым исходным кодом или разработать проект с единомышленниками.
Гэвин Хауден

Ответы:

19

[может] конкурентное программирование поможет мне в улучшении [скорости]?

Да, это возможно, и при наличии достаточного времени это, безусловно, будет. Тем не менее, скорость не самый важный навык, который вы собираетесь улучшить. Из моего опыта участия в TopCoder более 10 лет самым важным навыком, который вы приобретете в конкурентном программировании, является умение правильно писать простые фрагменты кода с первого раза, без использования отладчика.

Как мне начать и с какого сайта, как TopCoder?

Используйте тренировочные комнаты для Дивизиона 2. Уровень 1 Дивизиона 2 - это, как правило, «печатные состязания», в том смысле, что вы сразу же находите решение, поэтому ваша задача становится как можно быстрее его кодировать. Большинство реальных заданий таковы. Вы быстро поймете, что отладчик является самой большой «утечкой времени», поэтому вы, естественно, попытаетесь завершить свой код, не отлаживая его. Это будет разочаровывать в начале, но со временем улучшится. Чтобы справиться с этим нужно несколько сотен задач первого уровня, так что не сдавайтесь.

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

dasblinkenlight
источник
Большое спасибо @dasblinkenlight!
Вайбхав Агарвал
10

Как начинающий программист, вы должны гораздо больше заботиться о качестве своего кода, чем о скорости его написания. Вы должны работать над проектами самостоятельно, чтобы расширить свои навыки. Вы могли бы продолжить изучение проектов с открытым исходным кодом, чтобы увидеть, как другие пишут код, и, возможно, начать вносить вклад в проект с открытым исходным кодом.

За мои 25 с лишним лет разработки кода для различных платформ и бизнес-доменов я никогда не встречал случая, когда скорость написания моего кода была бы более важной, чем качество и стабильность моего кода.

cdkMoose
источник
Но когда вы участвуете в конкурсе, скажем, в конкурсе по программированию или в процессе собеседования, скорость имеет значение, верно? И это слишком много я чувствую.
Вайбхав Агарвал
@cdkMoose это хорошо, но можете ли вы также посоветовать мне, как начать конкурентное программирование, с чего начать?
Вайбхав Агарвал
@VaibhavAgarwal Project Задачи Эйлера с 1 по 50: пока он не конкурентный (если только вы не пытаетесь быть одним из первых, кто решит самую последнюю проблему), он сложный и тип вопроса, который можно ожидать в конкурсе по программированию или процесс интервью.
@ Вайбхав, я бы начал соревновательное программирование так же, как начинал бы любое другое соревнование: практика, практика, практика.
cdkMoose
1
@Vaibhav: Вы написали, что хотите изучать программирование. Если это та стадия, на которой вы находитесь, я лично не думаю, что вам вообще следует заниматься конкурентным программированием. Это может прийти после того, как вы развили свои навыки. Что касается собеседования, я не прошу своих кандидатов на собеседование писать законченные программы. Меня больше волнует их понимание и мыслительные процессы. Я пытаюсь развить уверенность в том, что они могут решить проблему, а не решить ее в рекордно короткие сроки.
cdkMoose