Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
В этом году десять лет исполнилось Computer Science Center — образовательному проекту, созданному при участии JetBrains, Школы анализа данных и Computer Science клуба. Сегодня CS центр — это очные курсы в Питере и Новосибирске (а ещё дистанционные для жителей других городов), пять направлений обучения и больше трёхсот невероятно классных и талантливых выпускников. Истории некоторых из них мы хотим вам рассказать.
Первая героиня — Анастасия Лавренко, выпускница 2018 года. Сейчас Настя руководит разработкой образовательной платформы Stepik, а в свободное время и сама делает открытые онлайн-курсы. В интервью она рассказала, почему пошла учиться в CS центр, как попала в Stepik, и поделилась личным топом онлайн-курсов для программистов.
Примечание: это интервью, но мы оформили его как прямую речь Анастасии.
ИТМО → Академия современного программирования → Computer Science Center
Я училась в Университете ИТМО на «Мехатронике». Ещё в школе решила, что хочу заниматься программированием. Поступала в ИТМО по олимпиадам, могла выбрать любую специальность. На встрече с абитуриентами замдекана факультета мехатроники бойко и классно рассказывал про программирование роботов — так я и отдала документы на это направление.
Уже позже поняла, что ожидания ≠ реальность. Учиться было не очень интересно. Некоторые мои одногруппники переводились на чисто айтишные специальности. Но я решила, что лучше продолжу учиться на «Мехатронике», а в свободное время (которого было достаточно) сама получу нужные мне знания.
Так, на четвёртом курсе я пошла в Академию современного программирования. Учиться было непросто, но оно того стоило — за два года в Академии я узнала больше, чем за пять лет в универе. Занятия вели в основном практикующие программисты, поэтому они рассказывали ровно то, что будет необходимо на работе. Через Академию я попала на практику в компанию OpenWay и осталась там работать лет на семь. В какой-то момент пришло понимание, что просто работать в финтехе — скучно. Мне хотелось чего-то большего: новых знаний, новых сложностей.
Прошерстив интернет, я нашла для себя несколько вариантов. Первый — полноценная магистратура по теоретической информатике в Академическом университете. Я пробовала поступить туда три года подряд. Сначала решила, что опыта практического программирования в 5-6 лет мне хватит, чтобы сдать любой экзамен. Оказалось, что нет. Потом год готовилась: изучала дискретку, диффуры, матан, проходила онлайн-курсы на Coursera. Попробовала поступить ещё раз — опять не удалось. Третья моя попытка была совсем хардкорная. Я ещё год сидела с учебниками плюс узнала про курсы Computer Science Center на Stepik. И эта попытка наконец-то увенчалась успехом! Но во время подготовки у меня появился второй вариант, куда податься, который перевернул все планы.
Этим вариантом как раз стал Computer Science Center. На мой взгляд, у учёбы в центре было несколько плюсов. Во-первых, он появился на базе Академии современного программирования, которую я уже оканчивала и образованию в которой доверяла. Во-вторых, обучение в CS центре было очень близко к аушной магистратуре: те же преподаватели, те же предметы, только сами занятия по вечерам и не каждый день. В итоге я решила, что CS центр для меня удобнее, и поступила туда.
Учёба в Computer Science Center: выбор курсов и расширение границ
В центре я брала курсы (много курсов!) с разных направлений. Вообще у меня не было конкретной цели. Я хотела челленджа, хотела сложностей, хотела, чтобы было интересно.
Курсы я обычно выбирала так: смотрела на полный список, отмечала, что мне казалось любопытным, приходила на первую лекцию. Если предмет и преподаватель мне нравились, я оставалась. Плюс я знала часть преподавателей по онлайн-курсам на Stepik и, если видела кого-то, кто мне запомнился, обязательно шла на эти дисциплины, что бы они там ни читали. Например, Александр Дайняк — невероятно крутой, любой его дополнительный курс надо обязательно бежать и слушать.
Было сложно, но мне это очень нравилось. Даже когда изучаешь, казалось бы, какие-то ненужные конкретно тебе предметы — типа функционального программирования, — всё равно чувствуешь, что твой взгляд, твой подход к работе меняются. И начинаешь даже на нефункциональные вещи смотреть немного с другой стороны, это помогает находить неожиданные решения.
Такие же ощущения и испытывала на курсе по оптимизациям в машинном обучении ещё в Академии. Его я, кстати, не сдала, но сохранила себе все видеолекции и домашки, чтобы вернуться к ним позже. Тогда я с удивлением узнала, что дифференцировать и интегрировать можно векторные пространства. Это было такое же расширение сознания, как и функциональное программирование.
Когда я шла в CS центр, мой основной запрос был такой: чтобы было нескучно. Так вот, скучно больше точно не было. Свободного времени у меня вообще не осталось: днём работа, вечером центр, по ночам и выходным — домашки. Каждый семестр я проходила порядка пяти курсов, а это много.
Как не бросить начатое обучение
Скорее всего, ответ вас не обрадует: лайфхаков нет. Учиться — это тяжело и больно, и надо ломать себя. Если обучение — легко и просто, то, скорее всего, толку не будет. Надо понимать, что если ты хочешь получить какой-то навык, то придется поработать и пострадать. А всякие отмазки типа «у меня нет времени» означают, что тебе в действительности не очень-то этот навык и нужен.
Опыт обучения в CS центре сильно изменил моё представление о времени. Когда я была на младших курсах универа, часто думала: «Я даже не высыпаюсь, откуда у меня время на что-то ещё?» А потом я пошла учиться в Академию современного программирования, делала домашки и работала по 32 часа в неделю. При этом совершенно нормально высыпалась и успевала и с друзьями потусить, и домой в другой город съездить. А когда училась в Computer Science Center, где нагрузка была раза так в четыре выше, я поняла, что успеть можно вообще всё, что угодно.
То есть для меня основное — это мотивация. Надо понимать, зачем тебе это нужно, ставить какие-то конкретные цели, разбивать на подзадачи. А ещё я люблю челленджи, и их можно устраивать просто бесконечно много.
Как я попала в Stepik
Всё это время параллельно развивалась моя история со Stepik. Впервые на эту платформу я попала с Coursera: меня заинтересовал онлайн-курс по биоинформатике, который базировался на Stepik. Я прошла его, а потом ещё один курс, и ещё один, и ещё... Сейчас у меня уже больше 20 пройденных курсов. К моменту поступления в CS центр я надумала менять работу. Сначала хотела пойти в JetBrains, но стали отговаривать бывшие коллеги: «Ты целыми сутками проходишь всякие курсы на Stepik. Ищешь баги, пишешь им в тасктрекер, что и как можно улучшить. Вот и иди туда работать, зачем тебе JetBrains?»
Сначала я испугалась: по сути это была кардинальная смена деятельности. В OpenWay я занималась разработкой бэкенда для банкоматов на Java. A Stepik — это образование, это Python, на котором я раньше не писала. Но подумав, решила: почему бы и нет, если мне так нравится сам продукт.
Собеседование в Stepik было довольно странным — по предметным областям мы не совпадали примерно совсем. Мне было нечего рассказать, им было нечего у меня спросить. Но мы договорились, что я пойду учиться в CS центр и постажируюсь в Stepik с одним проектом.
Так и получилось: я поступила в центр и в качестве практики взяла проект для Stepik. Это была разработка удобного календаря для обучения. Мне этот проект был очень близок: я постоянно проходила много онлайн-курсов одновременно, и иметь удобное расписание в такой ситуации очень кстати. И как-то так получилось, что за практику я выучила Python и начала полноценно работать.
Меня позвали на фуллтайм позицию. Сначала в качестве бэкэнд-программиста, где-то через год я также стала и проджект-менеджером, сама набирала студентов на стажировки. Ну и в какой-то момент мне отдали в руководство всю разработку.
Чем я занимаюсь в Stepik сейчас
Наша команда разработки совсем небольшая: платформой занимаются 2,5 бэкенд-программиста, причем половина — это я, и ещё два фронтендера.
Я руководитель разработки с функциями пипл-менеджера. Каждую неделю общаюсь со всеми своими сотрудниками: выясняю, какие у них проблемы, что нужно, чтобы улучшить их работу, немножко думаю, кому как технически расти. Иногда решаю какие-то продуктовые вопросы. А ещё два дня в неделю я пишу код.
До сих пор не могу решить, что мне нравится больше: взаимодействовать с командой или работать руками. Наверное, именно поэтому я и там, и там. Совмещать очень сложно, это плохо сказывается на обеих ролях, потому что для роста в глубину надо всё-таки ограничивать широту развития. При этом мне важно и нравится иметь возможность менять деятельность, которой я занимаюсь. Если я сейчас хочу писать код, я иду и пишу код. А весь следующий день могу провести в митингах с командой. Возможность смешивать — она очень классная. Но, как правило, это возможно только в таких маленьких командах.
Учиться и учить
Ещё я раньше брала студентов на стажировки. Это сложно, ответственно и времязатратно. Надо понимать, что объём знаний у приходящих ребят совсем не такой, как у тебя, поэтому нужно качественно формулировать задачу, направлять, стараться всегда быть на шаг впереди и очень чётко понимать, что ты хочешь от студента получить. Мне кажется, чтобы менторить студента, нужно времени не меньше, чем он(а) сам(а) тратит на задачу.
Но учить — это всегда прикольно. Как говорит Дайняк, лучший способ чему-то научиться — это учить других. К сожалению, сейчас времени на стажёров у меня не хватает, поэтому пришлось приостановить эту деятельность.
Вообще для меня сфера образования круче и ближе любой другой. Когда-то я сбежала сюда из финансов и бесконечно этому рада. Я вообще считаю, что можно быть механическим программистом, который что-то там делает восемь часов в день, и делает это даже хорошо. Но если ты хочешь производить крутой продукт, ты должен им гореть.
Я люблю Stepik. На мой взгляд, у нашей платформы реально больше плюсов, чем у других. Конечно, есть какие-то отдельные вещи, которые красивее или лучше у конкурентов. Но мы всегда стараемся определить, какие цели для нас важнее, и делать удобнее именно то, что помогает пользователям достигать этих целей.
Когда у меня появляется свободное время, я и сама делаю или помогаю модерировать онлайн-курсы. Например, вот такой аудиокурс по английскому получился у нас с коллегами в рамках хакатона. А в этих (раз и два) курсах по JavaScript я долгое время активно занималась модерацией комментариев и помогала учащимся решать их проблемы.
Немного особняком стоит курс по информатике для старшеклассников. У меня есть любимый учебник по информатике, по которому я еще в школе училась программировать. В нём много классных задачек на логику, алгоритмы и т.д. Я перенесла этот учебник на Stepik в виде онлайн-курса с автоматической проверкой. С некоторыми задачами были прям челленджи. Например, Stepik не умел проверять сложные логические выражения, и мне пришлось добавлять этот функционал на платформу. Сам учебник, к сожалению, уже немного устарел. Но я решила оставить его ровно в том виде, в котором он был, потому что на мой взгляд в качестве базы ничего круче нет.
Мой личный топ онлайн-курсов:
Функциональное программирование
Сначала обязательно нужно посмотреть три первые лекции с курса Computer Science Center. Дальше — онлайн-курс «Функциональное программирование на языке Haskell» на Stepik, первая и вторая части.
Теоретическая информатика
Александр Шень — просто огонь.
• «Введение в теоретическую информатику»
• «Теоретическая информатика: сложность вычислений»
• «Теоретическая информатика: вычислимость»
Алгоритмы
Саша Куликов очень хорош. Советую его курсы:
• «Алгоритмы: теория и практика. Методы»
• «Алгоритмы: теория и практика. Структуры данных»
Дискретная математика
• Основной курс — «Дискретные структуры»
• Отдельно комбинаторика — «Современная комбинаторика»
Философия
• «Научное мышление», но я называю этот курс «Философия для айтишников». Преподаватель часто тролль, но на мой взгляд, это очень круто.
Очень интересные курсы по философии от БФУ им. И. Канта. Но осторожно: на этих курсах часто задачи с ограничением числа попыток ответов, так что может быть немного нервно:
• «Философия»
• «История философии»
• «Теория, методология и философия истории»