Всем привет! Меня зовут Дима Кретов, и я backend-разработчик в Авито. Ещё два года назад моя жизнь выглядела совсем иначе: я работал в реанимации в Московском научно-исследовательском институте им. Владимирского, а до этого учился в медицинском университете им. Сеченова. 

В итоге именно медицина привела меня в IT: во время работы в реанимации в пандемию мы настолько зашивались, что, пытаясь хоть немного разгрузить себя и коллег, я изучил Python и написал программу, которая помогла автоматизировать обработку медицинских показателей пациентов. Это был первый шаг в сторону жизни, где вместо ночных смен — дедлайны.

В статье рассказываю, как я начал изучать программирование, сначала самостоятельно, потом на курсах, попал на стажировку в Авито и постепенно ушёл из медицины в разработку. Многим моим знакомым, особенно коллегам в медицине, мой путь кажется резким, но для меня всё логично и последовательно. Рассказываю, как это было. 

Проводил дома четыре ночи в месяц, остальное время — в больнице

В пандемию врачи нашего отделения ежедневно консультировали 300 пациентов, данные которых обрабатывали два координатора. Получается нехитрая математика: 150 заявок в сутки на человека. Если вычесть время сна, еды и душа, получается, что каждую заявку нужно обработать за 10–15 минут. Это работа с данными живых людей, и тут нельзя ошибиться. Все данные шли в статистику — в Минздрав Москвы и области. Люди в Минздраве должны были знать, например, сколько людей находятся на аппаратах искусственной вентиляции лёгких, чтобы понимать, есть ли дефицит в технике. 

Это я, пока что еще медик
Это я, пока что еще медик

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

По сути, реанимация — это уже почти backend: всё разложено по параметрам. Когда человек лежит на искусственной вентиляции лёгких, мы можем записать и проанализировать его анализы и показатели приборов. (А иначе никак, пациент не может нам рассказать о своём состоянии.) 

К моменту, когда я уволился, мы провели 66 тысяч консультаций. Четыре ночи в месяц я был дома, остальное время — в больнице.

Почему я выбрал рентгенологию

За два года до реанимации я закончил Сеченовский университет. Один из лучших медицинских вузов в стране, шесть лет учёбы, красный диплом. После университета, чтобы получить специализацию, врачи проходят ординатуру. Мне с детства была интересна техника, и я выбрал специальность для ординатуры, связанную с компьютерами, — рентгенологию.

Там я отучился полтора года из двух. За ординатуру, как правило, нужно платить, поэтому в какой-то момент мне пришлось искать подработку — так я и оказался в реанимационном отделении института им. Владимирского.

Тут еще больше контента

Туда набирали ординаторов для координации деятельности, и я пошёл работать. Попал в первую волну — мы с нуля организовывали работу отделения. Было сложно, но интересно. Через год руководитель ушёл, и я предложил свою кандидатуру на его место. Так я стал рулить другими координаторами и думать, как улучшить процессы. Я видел, что мы делаем очень много рутинных задач: каждый день копируем данные по тысячам пациентов. 

Решил, что с обработкой данных компьютеры справятся лучше нас

Когда речь касается обработки данных, компьютеры справляются гораздо лучше людей. С этой мыслью я решил автоматизировать обработку данных в нашем реанимационном отделении. Я начал изучать языки программирования и то, как их можно применить в нашей работе. Первым языком был Python. 

Я не проходил курсы, у меня не было наставника или друга-айтишника с советами. Всё, что у меня было, — открытая информация в интернете.

Сначала я оптимизировал процессы лично для себя, чтобы обкатать идеи. Я мог запускать свои программы только из терминала или консоли — bash-скрипты и прочее, а другим это было неудобно. Мне не хватало знаний, чтобы делиться ими с коллегами, которые в программировании ничего не понимали. UI не было, работала только серверная часть. Я написал сервер, обкатал его в течение полугода, убедился, что всё протестировано и ошибок нет.

И тогда понял, что пора выводить систему в работу и делиться с коллегами. Для этого мне пришлось изучить фронтенд — JavaScript. Первый сервер был на Python и написан не самым лучшим образом, поэтому я решил переписать всё на JS. Серверную часть можно было сделать на Node.js без фреймворка. В итоге я сделал UI — обычный сайт с админкой и авторизацией, чтобы данные оставались защищёнными. Координаторы перешли от сотен Word-файлов и десятков Excel-отчётов, полностью заполняемых вручную, к удобной системе. 

Когда нужно было распространить нововведение среди коллег — особенно профессоров старой школы, которые не разбираются в технике, — пришлось сделать так, чтобы всё работало по кнопочке. Раньше можно было писать что-то для себя, это одно. А когда люди используют твоё решение, приходит другая ответственность: слышишь фидбэк, исправляешь, улучшаешь. Так у меня постепенно сформировался флоу инкрементальной разработки: планирование, реализация, улучшение продукта. 

Раньше к середине смены глаза уже «плыли», и было сложно понять, где что находится. Можно даже перепутать пациентов.

Представьте: один файл открыт, рядом другой — другого пациента, и ты ошибся. Реаниматолог получил неверную информацию и дал неправильную консультацию. А в моей системе такого не случалось: я напрямую взаимодействовал с API. Это было серверное приложение EMIAS, которое используется в Московской области для учёта, что-то вроде 1С для врачей. 

Это был переломный момент — моей разработкой начали пользоваться коллеги. Тогда я окончательно понял, что могу полностью перейти в IT. 

В какой момент я осознал, что я не врач, а программист

В изучении программирования мне помогали книги Андрея Столярова, преподавателя МГУ с кафедры кибернетики и информационных технологий. В одной из них была фраза, которая звучала примерно так:

«Вы программист не тогда, когда вам за это платят, а когда вашей программой пользуются конечные пользователи»

В какой-то момент я осознал, что целое телемедицинское реанимационное отделение пользуется моей разработкой, а значит, я программист. И мне это понравилось.

Отказ от медицины был тяжёлым выбором. Было потрачено много сил и времени, и это реше��ие не было спонтанным. С одной стороны, мне уже нравились IT и программирование, и с этой точки зрения решение казалось лёгким. С другой — бросить медицину было жалко, как дорогой чемодан без ручки.

Это был год кропотливой работы: фултайм учёба, ночные дежурства в реанимации, изучение новых данных и баз, с которыми раньше не сталкивался. Времени не хватало, но я всё успевал — учился, работал, отрабатывал навыки.

Как я попал на стажировку в Авито

В какой-то момент я пошёл учиться в Яндекс Практикум на курс по продвинутой разработке. Пошёл в основном ради менторства: были наставники и кураторы — действующие программисты, сеньоры из крупных компаний. 

В то время я целенаправленно искал работу по специальности инженера. В одном из телеграм-каналов по вакансиям для начинающих я увидел пост о стажировке в Авито. Сомнений у меня не было — просто решил попробовать. Все предварительные этапы были онлайн, с чёткими дедлайнами и понятными этапами. 

→ Первый этап — тестирование. Вопросы про работу с базами данных, особенности языка Go, работу с указателями, обработку ошибок и интерфейсов. В принципе это база, и я её уже знал. Не помню свои точные баллы, но их хватило, чтобы пройти дальше.

→  Второй этап — видеоинтервью. На экране появляется вопрос, стартует таймер, даётся 30 секунд на размышление, потом начинается запись видео с таймером. Для меня это был непростой этап, казалось, что я не успеваю сориентироваться.

→ Следующий этап — техническое задание. Нужно написать сервис баннеров для Авито. Задание включало обвязку CRUD на серверной части, централизацию. Я написал его, будущий наставник сделал ревью.

Жми сюда!

После сдачи задание сравнивается с работами других кандидатов: либо тебя приглашают на собеседование, либо нет. Моя работа прошла, и позже, уже когда я работал в Авито, организаторы отборов просили разрешения показать ошибки и хорошие моменты для будущих кандидатов на моём тестовом задании. Вы можете посмотреть его на GitHub

Собеседование было стандартным, хотя для меня это было первое в жизни интервью по IT-специальности, и оно казалось непростым. Мне задали две задачи на написание кода и два теоретических вопроса. Глубина вопросов была максимальной, доходили до обсуждения, приходилось ли мне писать epoll самостоятельно. 

В итоге меня взяли на стажировку. Фактически это была полноценная работа.

А это я уже на веранде московского офиса Авито  с коллегами
А это я уже на веранде московского офиса Авито с коллегами

Я ушёл с предыдущего места и посвятил полгода стажировке в формате full-time. По процессам это ничем не отличалось от штатной позиции: планирование, команда, рабочие задачи. В Авито стажёры дежурят, участвуют в архитектурных решениях и выполняют все рядовые задачи — по тем же правилам, что и остальные разработчики. Разница была только в уровне ответственности.

Что было самым сложным в стажировке

На стажировке всегда есть доля неопределённости: ты новичок, многое пока что неизвестно, и нет готовых инструкций на каждый шаг. Но именно в этом и ценность — ты проверяешь свои навыки на практике, набираешься опыта и выкладываешься по максимуму, чтобы доказать свой уровень. Я просто много работал и не прокручивал в голове лишние сценарии. В хорошем смысле не думал. У меня такой подход: если я сделал всё, что мог, то не могу себя винить, даже если не получится.

Ещё на стажировке поначалу было стеснительно. Нужно было собирать встречи, приглашать всех, выступать — рассказывать идеи, предлагать решения, работать над замечаниями, возвращаться и снова предлагать. Именно здесь очень важны софт-скилы. Я бы не сказал, что был в них силён: волнение иногда накрывало.

Сложность в том, что обычно ты приходишь не к своему кругу, а к людям, которые заняты другими задачами. Это не только синдром самозванца, а ещё страх публичного выступления и ответственность за техническое решение. Психологически это тяжело, потому что можно что-то упустить или неправильно оценить.

Многое мне дал мой наставник Павел. Он учил коммуникации: как правильно сформулировать запрос, как изложить проблему, чтобы человек из другой команды быстро понял, что от него хотят. Нужно уметь кратко и чётко объяснить контекст и ожидаемый результат, и тогда вероятность получить нужную поддержку резко возрастает. Именно этому меня и научили: не только писать код, но и договариваться.

Забрать приз или пойти дальше?

После стажировки у меня было два варианта: остаться на позиции джуна в команде, где я проходил стажировку, или показать себя новой команде с более интересными задачами. Я выбрал второй — пошёл на собеседование. Я его прошёл, и мой текущий руководитель Виктор окончательно убедился, что я подхожу команде.

Это, наверное, очень особенное ощущение, когда тебе говорят: «Ты прошёл, добро пожаловать». У меня было ощущение, как в игре «Кто хочет стать миллионером»: можно забрать деньги и уйти, а можно пойти дальше — на сл��дующий вопрос. Я выбрал следующий вопрос. Да, была вероятность провалиться и в итоге никуда не попасть. Но иногда имеет смысл рискнуть, особенно если веришь в свои силы.

Мне нравится помогать людям. Сначала я помогал им в медицине, а когда пришёл на стажировку в Авито, попал в команду автоматизации поддержки. Мы разрабатывали чат-боты и автоответы для клиентов. Когда встал вопрос о продолжении работы в Авито после программы, мне попалась вакансия в команде поддержки, но уже не автоматизированной, а ручной. Это зацепило меня, потому что перекликалось с тем, чем я занимался в медицинском центре.

Наша команда помогает людям с помощью инструментов, которые собирают всю информацию об обращении пользователя. Мы её анализируем и на основе этого даём консультации. Получается, я помогал людям в медицине и похожим образом помогаю в Авито.

Кликни здесь и узнаешь

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

Чтобы расти, нужно жить с ощущением челленджа

Я считаю, что нужно стараться окружать себя сильными людьми. Тогда ты растёшь. Как только ты становишься самым сильным в своём окружении — начинаешь стагнировать. В медицине я всегда был таким: студент, обучался у лучших, и рос невероятно. Мои преподаватели — специалисты с именами в ведущих научных журналах, которые публикуются в России и за рубежом. Благодаря им у меня сформировалась глубокая база знаний.

То же самое было и в Авито. Я пришёл стажёром, умел программировать, но многое было новым. Пришлось учиться, перенимать опыт, развиваться. И мне нравилось это ощущение челленджа: были постоянные преграды, которые нужно преодолевать. Было трудно, но очень интересно. Наверное, именно интерес и драйв движут мной и сегодня. 

Спасибо, что дочитали до конца! Надеюсь, моя история была интересной и полезной. Задавайте вопросы в комментариях, я постараюсь ответить на них. 

Узнать больше о стажировке в Авито вы можете вот здесь. А по этой ссылке вы найдете больше о том, какие задачи решают инженеры AvitoTech.