Алина Ли: как я прокачалась в алгоритмах и устроилась в Яндекс
После семи лет в ресторанном бизнесе Алина Ли решила резко сменить курс в сторону IT. В её арсенале была крепкая математика, продвинутый Excel и сильное желание автоматизировать рабочие задачи. В самом начале Алина даже не думала о карьере разработчика, но шаг за шагом углублялась в профессию и постепенно осваивала SQL, Python, BigQuery, Power BI, Airflow.
Алгоритмы должны были стать очередным этапом на пути к цели, но после учёбы на курсе «Алгоритмы и структуры данных» в Яндекс Практикуме Алину пригласили работать в Яндекс.
Тюмень. Экономист в ресторанном бизнесе
Мне всегда нравилась математика, но родители настояли, чтобы я выбрала экономический факультет. После окончания Тюменского государственного университета я устроилась работать экономистом в ресторанном холдинге. Мне было интересно, потому что я выполняла много разнонаправленных задач — помимо финансовых, был менеджмент и бизнес. Помню работу с утра до ночи, поездки во Францию, доставку мебели из Мексики, выставки, тусовки, праздники.
В итоге доросла до заместителя финансового директора. Но в какой-то момент я перегорела и поняла, что это не то, чем бы я хотела заниматься всю жизнь. Я не видела смысла двигаться в этом направлении: задачи не прокачивали мозг.
В течение полугода я поняла, что меня тяготит именно менеджмент, а вот задачи, связанные с систематизацией, — 1С, программы учёта ресторанного бизнеса (iiko, R-keeper, Excel) — натолкнули на мысль, что мне надо в IT.
Я выстроила себе стратегию, как из специалиста по ресторанному бизнесу стать IT-специалистом. Конечно, моментальный скачок в разработчики был невозможен, и я придумала, как постепенно разворачиваться в нужную сторону. Решила, что будет проще, если найду для начала смежную специальность, и выбрала аналитику.
Екатеринбург. Продуктовый аналитик и аналитик данных
Через три месяца поисков работы я попала в крупную российскую компанию по разработке ПО для сдачи налоговой отчётности и переехала в Екатеринбург. Должность была в отделе аналитики — как раз то, что я хотела для старта. Нужно было считать метрики по клиентской базе и выручке, планировать бюджет, систематизировать отчётность. Меня взяли без знания SQL — для 2017 года было достаточно хорошо знать Excel, Power Query и Power Pivot.
Excel + SQL
По некоторым задачам мне нужно было писать техническое задание для аналитиков, которые работали в SQL. То есть я понимаю бизнес-задачу, но у меня нет удобного инструмента, а аналитик в SQL владеет этим инструментом, но не совсем понимает бизнес-задачу. В какой-то момент руководитель сказал, что надо учить SQL.
Чтобы получить доступ к базе данных, нужно было сдать небольшое тестовое задание: собрать статистику по готовой базе и агрегировать данные. Дополнительно тимлид сказал прорешать блок задач в онлайн-задачнике SQL-ex. Если было что-то непонятно, я спрашивала у SQL-аналитиков — все были очень отзывчивые.
В итоге сдала тестовое, сделала 30–40 задач из SQL-ex и стала аналитиком данных. Выполнять работу стало гораздо легче: раньше я сидела полночи в Excel, а тут за 5 минут пишу скрипт в SQL.
Попытка поступить в ШАД
В 2018 году я узнала про ШАД в Яндексе и решила попробовать туда поступить. Полгода готовилась сама и с репетиторами, сфокусировалась на математике. Я знала, что в программе будут ещё алгоритмы, но на тот момент эта тема для меня была слишком сложной, и я надеялась вытащить все математикой.
Когда я дошла до последнего этапа поступления, всё же попались алгоритмы. Я попыталась каким-то псевдокодом описать и объяснить свои решения: одну задачу решила с горем пополам, другую — нет. Меня не взяли.
Я расстроилась, но зато увидела, как нужно решать алгоритмические задачи. Специалист, который меня собеседовал, за секунду увидел решение в моих каракулях, красиво обернул часть кода в функцию, чуть изменил формулу для индекса. Решение, в котором я запуталась, вдруг стало лаконичным и понятным. И тогда я поняла, что алгоритмы — это мощь, и я обязательно за них возьмусь, но позже.
Python
Потом мне захотелось автоматизировать один из рабочих процессов: написала программу — и всё само работает. Для этого взялась за Python, начала пару онлайн-курсов, но так и не дошла до конца — я не чувствовала пользы в обучении.
Мне казалось, что на таких курсах я программированию не научусь. Да и не понимала, как применить Python в работе. Точнее, задач для автоматизации было море, но непонятно, как за них взяться, когда у тебя околонулевой уровень программирования и с утра до позднего вечера ты гоняешь данные из Excel в SQL и обратно. Это как в анекдоте про заточку топора: надо заточить топор, чтобы работать быстрее, но вот времени нет.
Но я всё же нашла маленькую задачку: поставщик скидывает данные в csv-файле, который надо распарсить и загрузить в базу данных, чтобы использовать в отчёте. Уже был готов небольшой скрипт на Python, поэтому я попросила автора, чтобы он передал скрипт мне на поддержку. Тогда я бы смогла самостоятельно загружать данные в базу и научиться чему-то новому.
Параллельно я нашла сайт datacamp.com. Там было много небольших курсов, причём примеры были похожи на задачи из реальной жизни. Я стала учиться взахлёб и какой-то момент оглянулась — оказалось, что прошла 160 курсов. Так я привыкла к синтаксису, к языку, но писать продакшн-код на Python я всё ещё не могла.
Я понимала: чтобы расти дальше, нужно решать больше задач на работе с использованием Python, и захотела перейти из продуктового аналитика в дата-инженеры. На тот момент я проработала в компании уже три года и решила поискать вакансии в других организациях.
Москва. Дата-инженер и аналитик-разработчик
Я стала искать вакансии дата-инженеров. Пробовала попасть в Яндекс в августе — сентябре 2020 года. Заполнила форму на сайте, решила тестовое, но на втором собеседовании слилась на несложной задаче на теорию вероятности про белые и чёрные шары.
Через некоторое время нашла интересное предложение, в котором была BI-аналитика и надо было использовать Python и облачные базы данных (Azure, BigQuery). Прошла отбор и меня взяли на работу. Я переехала в Москву.
BigQuery + Airflow
На новой работе мне надо было собирать большой объём данных по размещению рекламы, создавать из них витрины и делать отчёты для отдела маркетинга. Мне очень повезло, что у нас был крутой тимлид — он принёс Airflow и очень помогал мне с обучением. Благодаря ему я быстро включилась и старалась по максимуму учиться.
Уже через пару месяцев я смогла писать DAG-и на Airflow для обработки данных и даже автоматизировала импорт данных из API нескольких рекламных систем. Мне всё очень нравилось: я наконец-то автоматизировала весь пайплайн от поставщика данных до дашборда. Всё работает автоматически, обновляется по расписанию, код версионируется, настроены мониторинг и алертинг.
В этот момент я поняла, что дата-инжиниринг — это именно то, чем я хочу заниматься. У меня был план по своему обучению. Когда я закрыла горящие вопросы по SQL, Python и базам данных, решила, что пришло время подтянуть и алгоритмы.
Алгоритмы в Яндекс Практикуме
Я смотрела разные курсы по алгоритмам и выбрала Яндекс Практикум. Когда стала проходить бесплатную часть, поняла, что останусь здесь. Для меня всегда было важно вовремя лечь спать, но тут я так увлеклась, что за вечер и ночь прошла вводную часть с горящими глазами.
За первые два спринта мне удалось уйти вперёд. И я тогда даже подумала, что всё будет легко. А потом началась рекурсия, а за ней хэширование — тут я испугалась и усомнилась, что всё вытяну. Сами задачи были настолько интересными, что я хотела погрузиться глубже в контекст и могла просидеть не только весь вечер в будни, но и все выходные.
Важно было то, что я не опускала руки, не критиковала себя, а просто продолжала делать подходы к задаче, читать её заново, искать ответы в интернете, в чате, задавать вопросы. Ещё подход, ещё итерация — и потом обязательно найдётся решение.
На теме «Динамическое программирование» я поняла, как много я уже узнала. До учёбы даже не могла себе представить, что смогу такое осилить. А ведь начинали с простых задачек, но оглядываясь назад на финише, видела, какой громадный проделан путь.
Приглашение от Яндекса
После учёбы в сентябре мне пришло приглашение от Яндекса. Я решила попробовать свои силы, потому что мне важно, чтобы работа приносила развитие. А Яндекс — это повод снова проверить себя. Договорились с рекрутером, что сначала я закончу учёбу, а потом напишу им.
На весь отборочный этап ушло чуть больше месяца. Меня вели по треку «Аналитика» на позицию «Аналитик-разработчик». Всего было три этапа и собеседование с командой. Возможно, что так и задумано, но HR нам говорил готовиться к одному, а в итоге было совсем другое:
ЭтапОжиданиеРеальность1Повторить Pandas.Использовала обычные циклы, словари и модуль collections.2
Повторить статистику.
Теория вероятности и сообразительность.3Повторить алгоритмы.Действительно была задача на алгоритмы, но несложная: что-то вроде рассчитать самую длинную последовательность нулей с небольшими вариациями.
Сейчас я работаю в команде аналитиков, мы делаем фреймворк по прогнозированию. Мне нужно его дорабатывать и тут мой главный вызов — прокачать навыки программирования на Python.
Несмотря на то, что я аналитик-разработчик, я хочу писать код каждый день и постоянно коммитить в репозиторий. Мой руководитель даёт мне именно такие задачи, а тем, кто больше аналитик — аналитические. Я постепенно начинаю понимать, как работает код, что стоит порефакторить и улучшить.
Прокачка программирования для дата-инженера очень нужна. Но нельзя изучать всё сразу. Моя стратегия в итоге дала результат: в разные моменты времени я фокусировалась на какой-то одной теме: SQL, BigQuery, Airflow, Python. Потом буду смотреть, каких мне ещё «кусочков» не хватает.
Советы тем, кто хочет поступить на курс
Замотивировать себя. Лучший повод — это интерес к учёбе и саморазвитию. Пусть это станет образом жизни, а не чем-то временным. Например, по итогам курса я предложила в нашем чате встречаться каждое воскресенье и решать задачи на алгоритмы. Сначала откликнулись четыре человека, а сейчас нас уже тринадцать.
Телеграм-канал Алины для тех, кто хочет собираться на live-coding по воскресеньям.
Не стесняться спрашивать. Нужно всегда задавать вопросы — на курсах и работе, при общении с более опытными коллегами и сокурсниками. В IT-сфере нормально что-то не знать, она всё время меняется. Любая обратная связь помогает.
Рефлексировать. Очень полезно записывать сложности, ошибки, с которыми сталкиваешься. У меня после курса осталась тетрадка с конспектами и размышлениями о задачах и особенностях Python. Запись мыслей на бумаге мне помогает лучше понять материал и что вообще происходит.