Если вам о чём-то говорят фамилии Зив, Хомченко и Рымкевич, иди сюда, дай обниму, бедолага-олимпиадник, то вы наверняка знаете, как важно прорешивать задачи для полноценного, осознанного и глубокого понимания изученного материала. Когда нет или совсем мало реальной практики, задачи дают возможность покрыть практикой все теоретические знания, погрузиться в неожиданные выводы, сложности, баги, препятствия. Более того, даже если практики достаточно, задачи помогают относительно быстро, комплексно и глубоко проработать типичные и нетипичные ситуации, возникающие в разработке (любой другой науке). Это всегда безопасный (никто не взрывает лабораторию и не роняет прод), доступный и удобный способ подробно разобраться в предмете. Определённо, программирования это касается в первую очередь.
Как решать задачи?
Большинство сайтов из этого дайджеста предоставляют удобные и интуитивные интерфейсы для работы с кодом онлайн, и, кажется, этого вполне достаточно. Но такая практика быстро выветривается из головы: на 12-15 задаче ты уже напрочь не помнишь даже формулировку первых, не то что свои выводы и находки. Это неудобно и иногда сводит все старания на нет.
Положите перед собой блокнот или тетрадку, чтобы фиксировать там две важных вещи: свои находки и вопросы, в которых нужно не забыть разобраться (они обязательно возникают по ходу решения задач, особенно более высокого уровня сложности).
После окончания работы над очередным сетом задач пройдитесь по записям, подчеркните самое главное, начните искать ответы на вопросы.
Перед новым подходом просмотрите предыдущие записи, освежите в памяти решённое.
Если вы нашли изящный путь решения, обязательно используйте его в дальнейшем. Старайтесь, как и в математике, найти наиболее рациональное и даже красивое решение.
Если вам удалось решить очередную задачу, нагородив костылей, вернитесь к ней позже и попробуйте отрефакторить своё же решение — это не напрасная трата времени, а практика работы над хорошим кодом, которая не помешает любому уровню специалиста.
Если на портале есть какие-то челленджи или соревнования, обязательно участвуйте — даже если у вас нет ни шанса на победу, вы испытаете своё мышление в новых экстремальных условиях и сможете сравнить себя с другими участниками. В таком опыте обычно лежат точки роста.
Если не получается — не сдавайтесь, разбирайтесь, используйте источники и сторонние сайты, не стесняйтесь обращаться к менторам и коммьюнити.
Помните: путь в любую разработку начинается с hello world.
???? Kaggle — сайт содержит множество исследовательских задач, связанных с машинным обучением и большими данными. Особенно ценно то, что на Kaggle можно найти крутые датасеты, код и материалы для самостоятельного изучения и тренировок.
Kaggle titanic dataset. Анализ данных с помощью SQL запросов
Kaggle: Британские спутниковые снимки. Как мы взяли третье место
Как я занял 13 место из 3500+ участников и стал Kaggle Competition Master / Хабр
«Айсберг вместо Оскара!» или как я пробовал освоить азы DataScience на kaggle / Хабр
???? Codewars — сборник задач и челленджей по широком спектру тем: алгоритмам, проектированию, паттернам, различным языкам программирования.
???? LeetCode — популярный сайт с задачами, который особенно любят соискатели, мечтающие о работе в FAANG. Отличается от остальных тем, что решение задач нацелено именно на подготовку к собеседованиям в крупных компаниях.
From Zero to Hero: определите ваш уровень решения LeetCode задач от 1 до 5
Я решил 500 задач на LeetCode — и они действительно меня чему-то научили
Есть ли польза от решения алгоритмических задач на LeetCode?
Разбор алгоритмических задач с собеседований в Google, Facebook, Amazon
???? Codeforces — популярнейший сайт с задачами, тренировками, соревнованиями (раундами) и прочими активностями для прокачки практики программирования. Кроме того, что позволяет решать всё про всё и содержит одну из крутейших баз заданий, имеет развитое сообщество, систему рейтинга и множество встроенных элементов геймификации.
Если хочешь разобраться, найдешь возможность»: говорим о Codeforces с основателем проекта
Как выиграть ВСОШ по информатике и больше не волноваться о ЕГЭ?
???? Exercism — классический задачник для 67 языков программирования. Подразумевает геймификацию, систему менторинга, обучение и т.д. При таких параметрах, конечно, имеет своё коммьюнити (хоть и не такое впечатляющее, как у предыдущих ресурсов).
???? All Cups — соревновательно-обучательно-решательный портал с множеством задач от VK. Включает задачи по спортивному программированию (привет участникам олимпиады!), машинному обучению, искусственному интеллекту и, что особенно важно, по системному администрированию и всяческому хайлоаду. Если так можно сказать, это самый комфортный сайт для русскоязычного программиста (но мы же помним, что без английского далеко всё равно не уйти, даже здесь).
All Cups — новая экосистема чемпионатов для IT-специалистов / Хабр
All Cups: история одного дизайна экосистемы с большой историей
???? Задачи для программистов — раздел задач на ТПрогере, который включает задачи и их разбор от компаний и пользователей. Ещё один комфортный русскоязычный ресурс с форматом статей-разборов.
???? SQL-EX.ru — совершенно вырвиглазный сайт с наикрутейшими задачами и базой знаний по SQL. Отличное русскоязычное сообщество, справочники, учебники, обсуждения, статьи и книги. Настоящий мир SQL, пригодный как для школьника, так и для старшего инженера и разработчика.
???? Питонтьютор — интерактивный учебник-задачник по Python с задачами разной сложности. Русскоязычный, приятный, пошаговый и комфортный. Отличная помощь начинающим (и не только) питонистам.
Подборки от авторов Хабра — где-то есть неактуальные ссылки, но в целом подборки полезные.
P.S. Если вы давно хотели написать статью на Хабр, но сомневаетесь в своих силах или качестве материала, пишите мне в личку или присылайте черновик и свои вопросы на neo@habr.team — поможем, подскажем, дадим редакторский совет.
Комментарии (23)
Panov_Alexey
01.04.2023 18:21+8В первом предложении незаслуженно забыли легендарный сборник Сканави!)
lynxBios
01.04.2023 18:21Кстати, да! Как могли Сканави не упомянуть?
Exosphere Автор
01.04.2023 18:21+2Посыпаю голову пеплом, забыла - потому что почти с ним не занималась в школе. У меня был упор на химию, биологию и олимпиады по физике. Математика продвинутого уровня была коньком соседней школы и уж точно не моим (а по Зиву меня мама гоняла, чтобы я не до конца расслаблялась) :-(
TimGaleev
01.04.2023 18:21На моей памяти Сканави всегда был задачником "чтобы отдохнуть". Уж не знаю где наш математик брал задачи, возможно даже составлял сам, но когда вместо них он давал просто номера из Сканави, все дружно с облегчением выдыхали
LedIndicator
01.04.2023 18:21+6Не могу совершенно бесплатно не порекомендовать свой любимый codingame.com от французского производителя, жаль, что его нет в списке.
Во-первых, многие задачи имеют легенду и графическое представление. То есть, такая миниигра, и в результате успешного решения видишь не унылое accepted, а как Индиана Джонс проходит лабиринт, например.
Во-вторых, разные виды программирования. Можно блиц: простая задача, кто первый решит, тот и молодец. Нужна ловкость пальцев, в основном. Можно что-то посерьёзнее без лимита времени, разной сложности. Командные задачи, реверс инженеринг. Два раза в год соревнования по написанию игрового бота, даётся дней десять.
В-третьих, всякие лычки, ачивки, возможность делать код-ревью, комментировать и апрувить создателей заданий. То есть, своего рода карьерный рост. Вроде ерунда, но цепляет: дай-ка решу пятнадцатую задачу на языке X++ и повешу себе медаль "X++ addicted".
Разумеется, поддержка множества языков (на литкоде, например, я хаскеля не нашёл), внимание со стороны работодателей, ну и ещё там всякие плюшки.
Крутой ресурс.
HemulGM
01.04.2023 18:21+3Один из самых верных вариантов в первый год обучения - это делать то, что у вас на превью-картинке - изучать основы.
631052
01.04.2023 18:21+1я б картинки местами поменял..
в начале обучения-то.
ожидание - нечто боле-мене понятное с иксом и игреком
реальность - какая-то жуть, где вообще ничего нельзя понять
kchhay
01.04.2023 18:21+1Есть еще неплохой (имхо) украинский проект eolymp.com. Там хорошая база задач с сортировкой по темам.
TilloTill
01.04.2023 18:21+3Кстати, для разработчиков на 1С тоже есть похожий аналог. Как всегда у 1Сников – все свое)
endpoints
01.04.2023 18:21+2Самый лучший сервис это самому пилить ком проекты, хочешь не хочешь придётся решать всевозможные задачи
feycot
01.04.2023 18:21В список можно еще добавить Codebattle. https://codebattle.hexlet.io/
В отличи от CodeWars в нем можно сразу видеть код оппонента. Что дико драйвовит. Задачки ранжируются по сложности и можно играть против ИИ.
Javian
Эх... С Рымкевичем я знаком с ранних лет:
Krasnoarmeec
Так, коллега. Не понял. В 1988 году Вам было 10 лет, а тут каркули 2х летнего ребёнка. Что-то не сходится.
PuerteMuerte
Возможно, он, как и все приличные 10-летние парни, нарисовал там член, но потом подумал, что у бати ремень тяжёлый, и применил методы стеганографии.
Javian
Похоже меня подставили. Надо серьезно поговорить с родителями. Всегда старший виноват :)
P.S.Дата в профиле указана от балды ;)