Из медицины в IT: как врач стал программистом

Сергей Ворошилин работает .NET-разработчиком два года. Но его профессиональная история начиналась совсем с другого. В 2006-м он переехал в Рязань из Тульской области, поступил в медицинский университет, закончил его, пошел в аспирантуру, и… разочаровался в выбранной профессии. Оставив медицину, Сергей решил стать программистом. Он рассказал Клеверу о своей студенческой жизни, врачебной практике, трудностях медицины и своем пути в IT.


Выбор в пользу медицины

Многие в детстве мечтают, что будут космонавтами или политиками, но я не знал, кем мне быть. Хотя любимые занятия у меня все же имелись. Уже в раннем детстве мне нравились физика и математика. Меня водили в детскую библиотеку, где я брал книжки по этим темам – привлекали интересные задачи. В школьные годы к этим увлечениям добавилось еще одно – информатика. Но на уроках нам рассказывали очень мало действительно интересных вещей, мы даже за компьютерами почти и не работали.

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

студенты медики как стать программистом
Сергей показывает коллегам, как работает люксметр

Врач со знанием C++

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

Помимо этого, в университете я был активистом – участвовал в «Студенческой Весне» с песнями и танцами, ходил в научный кружок по эпидемиологии, публиковал статьи в сборниках всероссийских конференций, ездил волонтером в школы-интернаты, где для детей мы устраивали интересные мероприятия. Студенческая жизнь была насыщенной. Прошел выпускной, и у меня был выбор – идти в армию или в аспирантуру. Я поступил на направление «Общая гигиена» и параллельно стал лаборантом на кафедре. Писал диссертацию об оценке физического здоровья учащихся кадетских классов. Дела с ней шли не очень. Я плохо понимал, что нужно делать, мне было неинтересно выполнять научную работу. Да еще и поддержки со стороны руководителя не было, и поэтому я особенно не старался.

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

У меня был запасной вариант. В школе я пробовал программировать на QuickBASIC – ребята занимались этим, и я тоже загорелся. Но в те времена дома компьютера не было. Переехав в Рязань, я купил его и в перерывах между занятиями начал осваивать программирование – это помогало переключиться и отдохнуть от медицины. Решил, что надо выбрать основательный язык, такой, на котором можно делать все, что угодно – и выбрал C++. Это стало для меня отдушиной.

И вот как раз тогда, размышляя о возможной новой профессии, я подумал: не пойти ли мне в программирование? Это ведь тоже приносит людям пользу. И кайф от того, что решил задачу, я испытывал ничуть не меньший, чем когда вылечил человека.

Мне было нелегко уходить из медицины – я столько всего прошел, чтобы стать врачом. Пугали резкие перемены. Мои родители заждались меня домой и грезили, чтобы я работал врачом. Возможно, я бы так и остался в медицине, если бы не моя жена Ирина, которая поддержала меня в желании стать программистом. Она сказала тогда, что лучше заниматься тем, что нравится, чем жить, мечтая об этом. Ее слова помогли мне сделать первый шаг – я поступил на заочку на «Прикладную информатику» в Рязанский радиотехнический университет. Это своего рода ирония: с женой я познакомился в медуниверситете, а позже она помогла мне уйти из медицины.

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

На пути к IT

В Радиотехническом университете я узнал, что одна из IT-компаний бесплатно обучает программистов. Направления C++ на курсах, правда, не было, но я с удовольствием и интересом проходил обучение по .NET, что, в общем-то, было мне близко. Я ходил на лекции, выполнял практические задания, занимался дома. Эти курсы дали мне огромный толчок в развитии. После них были еще одни – в офисе компании. Всего за год я смог выучить язык C# на довольно неплохом уровне, которого хватило для того, чтобы меня пригласили на проект. Кстати, на нем я работаю до сих пор.

Если вспоминать времена, когда я учился на курсах, то могу сказать, что после шести лет медицины не все мне давалось легко. Запомнилось самое первое задание – нужно было написать программу для калькулятора со специфическим форматом вывода. У меня долго не получалось. С непривычки каждый раз оказывалось, что я либо неточно выполнил, либо вовсе не выполнил одно из многочисленных требований задания. Именно оно дало мне понимание того, как важно следовать правилам и серьезно относиться к тому, что делаешь. Помню также, как мучался, создавая приложение, в котором нужно настроить фильтры по наборам данных. В основе лежало использование деревьев выражений (Expression Trees). Смысл был в том, чтобы прямо в процессе выполнения программы «по кирпичикам» конструировать функцию-предикат, которая затем будет использоваться в фильтрации данных. Для меня это было совершенно новым и непривычным подходом в разработке.

В процессе изучения языка C# и .NET на курсах постоянно встречались новые, незнакомые мне понятия и концепции. Одними из самых сложных были, например, интерфейс IEnumerable, ковариация и контрвариация, паттерн проектирования Abstract Factory, делегаты и лямбда-выражения, LINQ, Regular Expressions. У меня взрывался мозг от новых терминов и осознания того, что они значат. А нужно было еще и понять, как это все работает и запомнить это навсегда. Каждый раз приходилось несколько изменять мышление, чтобы очередная концепция улеглась в голове. Кроме того, ведь нужно еще и уметь применять это там, где нужно, а не где попало.

Трудности были и с переходом на другой язык программирования. C++ генерирует неуправляемый код, с помощью которого можно сделать практически что угодно, но и заботиться о выделении и освобождении ресурсов приходится самостоятельно. В отличие от него, код программ, написанных на C#, выполняется в специальной управляемой среде, а это подразумевает наличие сборщика мусора (Garbage Collector), который уничтожает ненужные объекты, освобождая память. Сборщик мусора реализует сложные алгоритмы и во многом его работа является недетерминированной, из-за этого его сложно изучать. Для себя я усвоил: чтобы справиться с трудностями, надо просто искать, читать различные источники, не зацикливаясь на чем-то одном. Иногда находишь статьи или видеоролики, которые написаны будто под тебя, и после начинаешь понимать, как что работает. И, конечно же, практика – необходимое условие для превращения теории в навыки.

В целом же, мне нравилось то, что я делал на курсах. Хотелось разбираться, находить пути решения задач. Иногда я понимал, что учиться нужно быстрее, но при этом нельзя допускать каких-то пробелов. Я просто уделял программированию больше времени. Я хотел поскорее научиться и начать зарабатывать деньги. Было сложно, но я пришел к своей цели.

Когда работа в радость

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

Когда коллеги узнают, что я медик, многие удивляются. Иногда ко мне приходят за врачебным советом, и, если я могу помочь, то стараюсь сделать это. Но в основном говорю: «Поймите, я теперь далек от этого». Возможно, если я когда-нибудь займусь искусственным интеллектом, медицинские знания мне пригодятся. Сейчас мне нравится то, что я делаю, а еще больше, то, что я в этом развиваюсь. Здесь я постоянно учусь новому, причем, не только в программировании – и навыкам общения, и английскому языку. И самое большое удовольствие я получаю от решения задач. Если мне не удается в течение дня с чем-то справиться, задача заседает у меня в голове, и я не могу потом заснуть. Я думаю, думаю и в итоге что-то придумываю. И радостный потом бегу в офис, зная, что решил проблему.

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

Источник фото: личный архив Сергея Ворошилина.

Комментарии