Моя история в IT: паяльник и вышмат на пути программиста
История человека, интерес которого к электронике и схемотехнике в итоге привёл его в программирование.
3К открытий3К показов
Иван Дегтярев
ведущий backend-разработчик IT-компании MediaSoft
Меня зовут Иван, я Enterprise Java-разработчик в компании MediaSoft. Занимаюсь разработкой высоконагруженных бэкенд-систем, в том числе с использованием BigData-технологий, а также веду менторскую деятельность для начинающих программистов.
Еще в раннем детстве я понял, что моя жизнь будет связана с технологиями, электроникой и вычислениями, но мой путь в айти оказался тернистым.
В возрасте пяти лет я аккуратно разбирал все игрушки и электронные устройства, до которых мог дотянуться. Собрать их обратно, конечно же, не мог, чем очень досаждал родителям. Пару раз замкнул электроцепь в доме, отчего вышибло предохранители и оплавилась розетка.
В семь лет я увлёкся схемотехникой, работой с паяльником и электронными схемами. В то время у меня появилась игровая приставка семейства Nintendo Entertainment Systems (точнее её аналог, известный как Dendy), у неё частенько ломались контроллеры, но мне удавалось привести их в рабочее состояние всё тем же паяльником. Даже сейчас я испытываю детскую гордость, когда мне удаётся вдохнуть жизнь в неработающее устройство.
В школе я ходил в специализированный клуб любителей электроники, но далеко не продвинулся: чтобы разобраться с работой транзисторов, нужно было читать книги, а техническая (как, впрочем, и классическая) литература меня не привлекала. То ли дело фантастика.
Тем не менее, занятия схемотехникой не прошли даром – через них я изучил основы электроники, устройство и работу СБИС (сверхбольших интегральных схем), и для программирования это было не лишним. Да, я возился с паяльником, а не писал код, но тяготел именно ко второму. К счастью, это разглядел один мой родственник, тоже программист – и благодаря ему я узнал этот термин ещё до вуза.
В итоге поступил на специальность «Программное обеспечение вычислительной техники и автоматизированных систем». Сначала я по привычке избегал чтения «тяжёлой» технической литературы, но потом мне в руки попала книга Роберта Лафоре «Объектно-ориентированное программирование в C++», которая увлекла меня живой подачей материала и акцентом на практику.
Эти знания помогли попасть мне на первую работу в лабораторию расходометрии, где я занимался разработкой приложения для решения физико-математических уравнений движения газа с помощью численных методов. Там же я познакомился с платформой .NET, которая впечатлила меня своей простотой по сравнению с С++.
После института я ошибочно полагал, что смогу принести больше пользы, если буду использовать знания программирования как прикладной инструмент к другой области, а именно к математике.
Я поступил в аспирантуру по специальности «Математическое моделирование, численные методы и комплексы программ», но быстро столкнулся с невероятной теоретической скукой. Ведущие исследователи кафедры прекрасно разбирались в математической теории, но не в практическом применении численных методов для расчётов, и мне не всегда удавалось доказать, что написанный мной код выполняет свои функции корректно.
Одним из преимуществ аспирантуры было преподавание: я два года вёл в вузе математический анализ и полгода «Структуры и алгоритмы данных». В процессе сам лучше понял многие теоретические вещи и научился объяснять сложные абстракции простым языком.
И всё же в аспирантуре я выдержал только два года из четырёх, после чего решил, что больше не могу истязать и обманывать себя — нужно что-то менять. Так, утром 9-го января 2018-го года я оказался на пороге компании MediaSoft, и понеслось.
Мне выделили рабочее место и сказали изучать Java. Вот тут-то и пригодилось умение разбираться в технологиях практическим методом. На освоение базовых знаний потребовалось около трёх месяцев, но и спустя три года я продолжаю изучать этот язык, погружаясь в него всё глубже.
В качестве первых задач на «боевых» проектах я, как и все джуны, сначала только исправлял баги, потом пошли задания посложнее. Многие начинающие программисты боятся, что столкнутся с задачами, которые невозможно решить. Здесь могу обрадовать: за всё время в ИТ я таких задач не встречал. В основном, сложность работы программиста сводится к поиску компромисса между стоимостью реализации, ее качеством и сроками, и при творческом подходе от решения таких задач можно даже получать удовольствие.
Что мне нравится в профессии программиста
- Свобода. Программисты чаще всего сами распределяют своё рабочее время и могут выбирать, где работать – в офисе или дома. Главное, чтобы был результат.
- Отлаженный рабочий процесс. В ИТ-сфере этому, как правило, уделяют много внимания, поэтому здесь меньше шансов столкнуться с хаосом на работе.
- Крутой коллектив. В ИТ работают очень интересные люди: интеллектуальные, увлеченные, часто с крутыми и необычными хобби.
- Заработная плата. Потолка практически нет: изучая новые технологии, можно постоянно увеличивать свой доход.
- Ощущение, что с каждым проектом ты становишься круче.
Что кажется трудным
- Когда вливаешься в новый проект, приходится долго и внимательно изучать бизнес-процессы каждого клиента.
- Программисту необходима жесткая самодисциплина. В ИТ-компании никто не проверяет, как вы распределяете своё время, и нужно самому планировать работу так, чтобы всё успевать. Если начнутся срывы дедлайнов, у вас сперва поинтересуются, всё ли в порядке, и предложат помощь. Но если это зайдёт слишком далеко, вас просто снимут с проекта и либо переведут на должность попроще, либо попрощаются.
Как учиться программированию?
Как уже было сказано, я получал знания на практике и за всю свою карьеру прочитал от силы две книги: «Объектно-ориентированное программирование в C++» и «Структуры данных и алгоритмы в JAVA» Роберта Лафоре, но лично убедился, что теоретические знания без практики стоят мало. Год спустя после прочтения книги про алгоритмы Java я с треском провалил собеседование, не сумев рассказать про структуру HashMap. В итоге освоил ее старым добрым способом — использовав на практике.
Поэтому способ обучения каждый должен выбирать индивидуально. Одни стажёры лучше усваивают информацию из книг, другие – на слух от преподавателей и коллег, третьи – самостоятельно через практику.
Не следует забывать и про математические науки: математический анализ, дискретную математику, комбинаторику, математическое моделирование. Это не только основы, но и ни с чем не сравнимая, вдохновляющая красота. При виде алгоритма, описанного абстрактным математическим языком, можно испытать ужас и блаженство одновременно. Думаю, вы поймёте со временем, о чём я.
Пробуйте сами, дерзайте и открывайте для себя, что вам ближе.
3К открытий3К показов