Как устроиться в крутую компанию, когда тебе 18 лет
Делимся историей молодого backend-разработчика о том, как войти в айти с нуля и попасть на работу в крупную IT-компанию.
2К открытий9К показов
Название статьи больше похоже на выдумку: кто возьмёт джуна на работу в крупный банк, да ещё такого молодого? Но Александр Касимов показал, что при должных упорстве и интересе это возможно. В статье он рассказал, какой путь прошёл, прежде чем попал на работу в Газпромбанк.
Александр Касимов
Backend-разработчик в Центре Технологий Искусственного Интеллекта Газпромбанка
Как я выбрал именно IT и попал в «Сириус»
Впервые я столкнулся с ИТ в девятом классе. Мы с одноклассниками решили сделать простой бот для ВК. Изначально функционал был до банального прост — Q&A по заранее заданным условиям, баловство. Однако потом мы добавили туда маршруты транспорта по городу, погоду, расписание на неделю. Мы закончили разработку за два-три месяца, но я так увлёкся, что продолжил развиваться в этом направлении.
В мае того же года во время сдачи экзаменов я узнал, что у нас в Ульяновске есть компания, которая занимается аутсорс-разработкой. В ней проводили бесплатные курсы по Python и веб-разработке, я решил попробовать. Там я познакомился с ментором, благодаря которому ещё сильнее проникся IT. Я показал ему свои проекты, попросил обратную связь, и мы стали плотно общаться. Он подсказывал идеи для новых проектов, помогал работать над ошибками.
Примерно в это время я понял, что мне интересна backend-разработка. А если добавить к ней Data Science, то можно делать действительно масштабные проекты, которые приносят пользу людям. Поэтому я начал активно погружаться в специфику этих направлений и пополнять портфолио.
Уже во время учёбы в колледже научный руководитель предложила поучаствовать в «Больших вызовах». Это Всероссийский конкурс научно-технологических проектов для старшеклассников и студентов, которые занимаются научной или исследовательской деятельностью. Придя однажды в колледж, мы не могли попасть на пару около 40 минут, потому что завхоза не было на месте. Тогда мне и пришла идея для конкурса — проект «Умные двери» — что-то вроде замков Xiaomi Aqara, которые не зависели бы ни от кого, кроме самих преподавателей. Я разработал MVP и отправил заявку. Конкурентов было много, но мне удалось пройти в финал.
Благодаря участию в конкурсе я попал в «Сириус». Это образовательный центр научного и технического творчества для одарённых детей и молодёжи со всей России, в котором можно поработать над бизнес-кейсами крупных компаний. Чтобы попасть на проект, предстояло пройти многоступенчатый отбор (региональный и финальный) и иметь хорошие результаты выступлений либо на этапах всероссийской олимпиады школьников, либо всероссийского конкурса научно-технологических проектов. Под второй пункт подходило моё участие в «Больших вызовах».
Позже идея проекта «Умные двери» выросла в систему безопасности для образовательных учреждений: множество дверей, связанных в одну сеть. Я собирался заняться этим основательно, открыть стартап, но понял, что без поддержки реализовать его будет трудно — уйдёт слишком много времени, усилий и финансов.
Над каким проектом мы работали
В «Сириусе» я работал над NLP (Natural Language Processing) проектом от Газпромбанка — автоматизированной системой анализа отзывов на основе ИИ. Мы собирали отзывы обо всех крупных банках России с наиболее известных ресурсов, обучали несколько моделей машинного обучения и разрабатывали веб-приложение для нашего сервиса.
В проекте я участвовал как fullstack-разработчик и дата-сайентист. Делал юзер-интерфейс, который позволял конечному пользователю обращаться к AI-моделям. В основе проекта лежала микросервисная архитектура: в одном контейнере — интерфейс с сайтом, а в двух других — модели классификации категории отзыва и регрессии для предсказания оценки.
Мне удалось поработать с большим набором табличных и текстовых данных, узнать про различные подходы к работе с текстовыми данными, векторизацию TF-IDF, word2vec, fasttext, библиотеки градиентного бустинга CatBoost и LightGBM.
На весь проект у нас ушёл 21 день, причём 10 из них мы собирали отзывы. Источников данных было несколько, так что мы поделились на группы, каждая из которых собирала свои данные. Асинхронно собирать мы тогда не умели, в итоге делали синхронно, обработав более 600 тысяч данных. Для работы с источниками применяли различные подходы: где-то хватало парсинга страницы по запросу, а где-то приходилось применять Selenium из-за сложного API и JS-скриптов. Также на некоторых сайтах стоит защита от сбора данных, поэтому мы использовали прокси.
Собранные отзывы мы загружали в CSV-файлы, в которых данные хранятся через запятую. Затем обрабатывали их в Pandas — Python-библиотеке для обработки огромных массивов данных.
В процессе разработки возникла проблема: отзывы разных банков перемешались. Мы это поняли уже во время обучения модели. Хотя она и не была привязана к конкретному банку, это повлияло на раздел отзывов на сайте. Тогда я сделал быстрое решение — поменял банки между собой, а когда дорабатывали проект — всё-таки пересобрал отзывы.
После «Сириуса» мы обновили сайт и сделали его лучше. У нас было три основные вкладки: поле для ввода отзыва, отзывы с сайтов и статистика. В последней были красивые графики по банковским данным — их мы решили убрать, потому что не смогли бы адаптировать на фронтенде. На вкладку с отзывами добавили фильтры: по количеству поставленных звёзд, по сайту, с которого брались отзывы, и по категориям.
Ещё сделали интерактивный круг, который выставлял рейтинг. По мере заполнения до пяти звёзд он окрашивался градиентом от красного до зелёного. При его разработке не обошлось и без забавных багов: если рейтинг был выше пяти, счётчик начинал бешено крутиться.
На смене в «Сириусе» в сильной и увлечённой команде мы смогли решить интересную бизнес-задачу для банка за относительно короткий срок. Приятно быть причастным к большим проектам крупного банка.
Чем я занимаюсь сейчас
После смены в «Сириусе» со мной связался наставник, с которым мы работали над NLP-проектом, и предложил присоединиться к команде Газпромбанка. Так я начал работать в Центре Технологий Искусственного Интеллекта ГПБ. Мы занимаемся внедрением технологий искусственного интеллекта в банке, с помощью ИИ-алгоритмов повышаем точность решений по кредитам, боремся с мошенниками, улучшаем клиентский опыт и автоматизируем банковские процессы.
Сейчас мы разрабатываем AI бота-помощника для сотрудников, в основе которого лежит языковая модель. Любой сотрудник сможет использовать его для повседневных задач: сгенерировать письмо, найти важную информацию или что-то посчитать.
Я занимаюсь обработкой приходящих данных — отвечаю за то, как работать с запросами пользователей, как их хранить и, главное, как на них отвечать.
Без сложностей не обходится. Для хранения данных я использую Postgres — это привычная технология, я работаю с ней и в пет-проектах. Но мы планируем заменить её более продвинутым решением. Смотрим в сторону Elasticsearch — инструмента, с помощью которого можно хранить, искать и анализировать большие объёмы данных. Порог входа у него высокий, а чтобы развернуть полный ELK-стек из Elasticsearch (для хранения данных), Logstash (для логов), Kibana (для администрирования) и обеспечить его бесперебойную работу — нужно познать дзен.
Самое простое решение в подобных ситуациях: пойти к коллеге, если он работал с таким стеком. Либо разбираться самому, загуглив или написав в нашего же бота.
Работая над проектом, я почувствовал, что вношу вклад в развитие компании. Когда руководство заинтересовано в инновациях, тебе дают «зелёный свет» в реализации новых и смелых идей.
Что делать, чтобы строить карьеру в сфере ИТ
Нужно постоянно работать над ошибками. Недавно на локальном проекте я заметил, что некоторые кейсы повторяются. Например, в Django — это веб-фреймворк для разработки на Python — есть сериализаторы, чтобы приводить данные к единому типу и формату. По умолчанию они возвращают ID записью, но иногда нужно, чтобы возвращался, к примеру, юзернейм. Задача была для меня нетипичная, пришлось лезть в Google, читать кучу статей. Но потом я набил руку и сейчас делаю это без подсказок.
Для тех, кто только знакомится с Python, советую книгу Марка Лутца «Изучаем Python» — сам начинал с неё.
С новыми технологиями я знакомлюсь на кейсах — так информация всегда лучше усваивается. Например, гуглю статьи, стараюсь повторить успешные решения других проектов. Недавно для проекта понадобилась асинхронная библиотека aiogram — пошёл о ней читать.
Ещё обязательно открываю документацию. Но не каждый джун может разобраться в ней самостоятельно: иногда нет фрагментов кода, чтобы проиллюстрировать пример, просто сплошная портянка текста. Я, например, долго бился с одной документацией: есть функция, куча аргументов, а описания нет. Вроде понятно, что передавать их можно по названию, но в некоторых случаях переменные назывались просто A, B, C, приходилось догадываться.
Бывает, что документации в принципе нет на сайте, зато она есть в коде, и найти её там не так уж просто.
И, конечно, нельзя забывать про пет-проекты. У меня их много, но даже базовые вроде интернет-магазина, сайта с рецептами, скриптов для ВК, например, для работы с Марусей, уже можно положить в портфолио на GitHub и показывать будущим работодателям. Конечно, чем грамотнее сделан проект и чем больше у него звёзд на GitHub, тем выше вас оценит будущий техлид. А если это опенсорс-проект даже с небольшим комьюнити, то шанс получить полноценный оффер в компанию стремительно растёт.
Подытожу
Чтобы построить карьеру в IT с первого курса института или колледжа достаточно сфокусироваться на базовых действиях:
- Заниматься практикой
Для этого можно разрабатывать пет-проекты и участвовать в мероприятиях: стажировках и хакатонах. Это поможет получить реальный опыт в индустрии, поработать в команде, проверить свою стрессоустойчивость и изучить новые технологии.
- Участвовать в OpenSource-разработке
На GitHub можно найти много небольших опенсорс-проектов, которым нужна помощь в разработке. Поучаствовав в этом, вы не только наберётесь опыта, но и добавите полезную строчку в резюме о том, что вы гордый контрибьютор проекта на N-ую аудиторию. Кроме того, вы поможете комьюнити найти более правильный и приятный подход к использованию этого проекта.
- Работать в команде
Это отчасти относится к первому пункту. Вы сможете набраться опыта от коллег и овладеть современными методами работы в команде вроде Scrum и Agile. Такой опыт джуну получить непросто, а это сильно помогает в дальнейшей адаптации и в работе над боевыми задачами.
И конечно, искреннее желание расти и развиваться в том, что вы делаете, в хороших компаниях не остаётся незамеченным.
2К открытий9К показов