Обложка: Моя история в IT: паяльник и вышмат на пути программиста

Моя история в IT: паяльник и вышмат на пути программиста

Иван Дегтярев
Иван Дегтярев

ведущий backend-разработчик IT-компании MediaSoft

Меня зовут Иван, я Enterprise Java-разработчик в компании MediaSoft. Занимаюсь разработкой высоконагруженных бэкенд-систем, в том числе с использованием BigData-технологий, а также веду менторскую деятельность для начинающих программистов.

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

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

В семь лет я увлёкся схемотехникой, работой с паяльником и электронными схемами. В то время у меня появилась игровая приставка семейства Nintendo Entertainment Systems (точнее её аналог, известный как Dendy), у неё частенько ломались контроллеры, но мне удавалось привести их в рабочее состояние всё тем же паяльником. Даже сейчас я испытываю детскую гордость, когда мне удаётся вдохнуть жизнь в неработающее устройство.

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

Тем не менее, занятия схемотехникой не прошли даром – через них я изучил основы электроники, устройство и работу СБИС (сверхбольших интегральных схем), и для программирования это было не лишним. Да, я возился с паяльником, а не писал код, но тяготел именно ко второму. К счастью, это разглядел один мой родственник, тоже программист – и благодаря ему я узнал этот термин ещё до вуза.

В итоге поступил на специальность «Программное обеспечение вычислительной техники и автоматизированных систем». Сначала я по привычке избегал чтения «тяжёлой» технической литературы, но потом мне в руки попала книга Роберта Лафоре «Объектно-ориентированное программирование в C++», которая увлекла меня живой подачей материала и акцентом на практику.

Эти знания помогли попасть мне на первую работу в лабораторию расходометрии, где я занимался разработкой приложения для решения физико-математических уравнений движения газа с помощью численных методов. Там же я познакомился с платформой .NET, которая впечатлила меня своей простотой по сравнению с С++.

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

Я поступил в аспирантуру по специальности «Математическое моделирование, численные методы и комплексы программ», но быстро столкнулся с невероятной теоретической скукой. Ведущие исследователи кафедры прекрасно разбирались в математической теории, но не в практическом применении численных методов для расчётов, и мне не всегда удавалось доказать, что написанный мной код выполняет свои функции корректно.

Одним из преимуществ аспирантуры было преподавание: я два года вёл в вузе математический анализ и полгода «Структуры и алгоритмы данных». В процессе сам лучше понял многие теоретические вещи и научился объяснять сложные абстракции простым языком.

И всё же в аспирантуре я выдержал только два года из четырёх, после чего решил, что больше не могу истязать и обманывать себя — нужно что-то менять. Так, утром 9-го января 2018-го года я оказался на пороге компании MediaSoft, и понеслось.

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

В качестве первых задач на «боевых» проектах я, как и все джуны, сначала только исправлял баги, потом пошли задания посложнее. Многие начинающие программисты боятся, что столкнутся с задачами, которые невозможно решить. Здесь могу обрадовать: за всё время в ИТ я таких задач не встречал. В основном, сложность работы программиста сводится к поиску компромисса между стоимостью реализации, ее качеством и сроками, и при творческом подходе от решения таких задач можно даже получать удовольствие.

Что мне нравится в профессии программиста

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

Что кажется трудным

  • Когда вливаешься в новый проект, приходится долго и внимательно изучать бизнес-процессы каждого клиента.
  • Программисту необходима жесткая самодисциплина. В ИТ-компании никто не проверяет, как вы распределяете своё время, и нужно самому планировать работу так, чтобы всё успевать. Если начнутся срывы дедлайнов, у вас сперва поинтересуются, всё ли в порядке, и предложат помощь. Но если это зайдёт слишком далеко, вас просто снимут с проекта и либо переведут на должность попроще, либо попрощаются.

Как учиться программированию?

Как уже было сказано, я получал знания на практике и за всю свою карьеру прочитал от силы две книги: «Объектно-ориентированное программирование в C++» и «Структуры данных и алгоритмы в JAVA» Роберта Лафоре, но лично убедился, что теоретические знания без практики стоят мало.  Год спустя после прочтения книги про алгоритмы Java я с треском провалил собеседование, не сумев рассказать про структуру HashMap. В итоге освоил ее старым добрым способом — использовав на практике.

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

Не следует забывать и про математические науки: математический анализ, дискретную математику, комбинаторику, математическое моделирование. Это не только основы, но и ни с чем не сравнимая, вдохновляющая красота. При виде алгоритма, описанного абстрактным математическим языком, можно испытать ужас и блаженство одновременно. Думаю, вы поймёте со временем, о чём я.

Пробуйте сами, дерзайте и открывайте для себя, что вам ближе.