Как вернуться к разработке после 13-летней паузы: история разработчика на С++ Григория
Григорий изучал программирование в вузе, но после знания никак не применял. Пока однажды на работе его не попросили создать калькулятор в Excel.
Иллюстрация: Qingbao Meng / Unsplash / Rawpixel / Annie для Skillbox Media
Григорий Брусник
Россия, Москва
Пройденные курсы
Достижения
Вернулся к разработке спустя 13 лет, успешно защитил дипломную работу по профессии и написал свой собственный проект, связанный с протоколами передачи данных.
Григорий рассказал:
- почему, изучая разработку в университете, он ушёл в продажи;
- как случайная задача на работе вернула интерес к программированию;
- о сложностях при написании итоговой работы и собственной программы после курса;
- с какими трудностями столкнётся опытный специалист на рынке труда.
«Случайная задача впервые за много лет напомнила мне о программировании»: об основной работе и интересе к C++
— Григорий, на основной работе вы занимаетесь маркетинговой поддержкой продаж, а в свободное время программируете. Поделитесь: как так вышло? Как строился ваш путь?
— Вообще, по образованию я инженер-системотехник. В вузе нас обучали таким дисциплинам, как электротехника, теория автоматов, организация ЭВМ и систем, базы данных, технологии программирования и многому другому. В период обучения осваивал языки программирования Delphi 7, C, C++, ассемблер.
Выпустился в 2010 году: в то время найти работу по моей специальности в Хабаровске было непросто, да и зарплаты были невысокими, поэтому ушёл в продажи. Спустя полтора года работы в сфере удалось устроиться в крупную международную компанию. Потом переехал в Москву и перешёл в департамент маркетинга. С тех пор занимаюсь поддержкой продаж промышленного оборудования.
Первая специальность научила трудолюбию, внимательности и дисциплине. А ещё знание точных наук помогало быстрее ориентироваться в большом объёме цифр, структурировать данные и искать оптимальные пути решения различных задач.
— А как программирование вернулось в вашу жизнь?
— Довольно случайно. Компания, где я работаю, занимается производством, обслуживанием и продажей тяжёлой техники (строительной, горнодобывающей). И вот мне поручили создать в Excel калькулятор для расчёта стоимости оборудования. Чтобы в зависимости от потребности можно было выбрать те или иные опции, рассчитать финальную стоимость и выгрузить информацию на новый лист.
Я взялся. Часто для решения подобных задач используются базовые возможности Excel. Но я решил применить более сложную надстройку VBA (Visual Basic for Applications) — она позволяет создавать удобный интерфейс прямо внутри Excel с дополнительными возможностями: специальными кнопками, интеграцией с другими приложениями Microsoft Office. Всё получилось.
Процесс мне понравился. Задача по VBA впервые за много лет напомнила мне о программировании в целом и конкретно о языке C++.
— И вам захотелось освежить и углубить знания?
— Да, я подумал, что программирование может стать для меня хобби. Нашёл профильный курс и приобрёл. Язык C++ выбрал по двум причинам. Во-первых, как-никак я уже был с ним знаком. Во-вторых, считал классикой программирования во всех смыслах. После C++ вы с лёгкостью переучитесь на любой другой язык.
— При этом вас не останавливало то, что С++ считается одним из самых сложных языков?
— Наоборот, мне это нравилось и нравится. В других, современных языках ведь как: разработчик может писать код, а программа за ним будет какие-то мелкие моменты оптимизировать, поправлять. А в С++ иначе: здесь нужно глубоко понимать все процессы и за всем следить. Особенно при работе с памятью. Сравним с Java: там, например, есть сборка мусора. Сборщики всю «грязную» работу сделают за вас.
«Каждый вечер я занимался. Не переносил и не откладывал»: о процессе учёбы
— Как быстро вам удалось пройти обучение?
— Вместе с написанием и защитой диплома — год. Мой вузовский фундамент в программировании позволил мне «пролететь» первые 10–15 уроков. Там я лишь повторял информацию.
Мне понравился подход к обучению: если в институте я ощущал некую отрывистость знаний, то на платформе всё было грамотно структурировано, поэтапно подано: информация ложилась в мозг слоями, последовательно.
— Ого! Год — это довольно быстро для такой объёмной программы. Как совмещали с основной работой? Строили жёсткий график?
— Нет, я себя никак не заставлял. Просто почти каждый вечер (и часто в выходные!) мне искренне хотелось садиться и заниматься, узнавать что-то новое. Не бывало такого, чтобы я откладывал, переносил, придумывал причины не делать.
Вперёд двигал интерес. А ещё нравилось отчётливо видеть свой прогресс, когда раз за разом плашка модуля загоралась зелёным: «Пройдено!» Хотелось поскорее окрасить в зелёный их все.
— Но ведь все мы живые люди, и уставать — совершенно нормально. Неужели вы не испытывали подобного?
— Конечно, испытывал. Но усталость — физическое чувство, а искреннее желание и интерес — нечто большое, нематериальное. Бывало, я сидел над одной задачей по два, три, четыре часа. И она никак не отпускала.
Я ложился спать и думал о решении, ехал на работу и тоже думал о решении. По возвращении домой — скорее дописывал, проверял результат. Потом получал обратную связь от куратора и был доволен собой. Вот это ощущение — когда у тебя получилось и виден результат работы — оно не сравнимо ни с чем.
Мне нравилось взаимодействовать с куратором: он всегда оставлял комментарии по существу. Где-то подсказывал, где-то объяснял. Такая обратная связь развивала, помогала легче осваивать новый материал.
«Я сам поставил себе задачу и написал программу»: об итоговой работе и других проектах
— Каким был ваш итоговый проект на курсе?
— Задание для всех звучало одинаково: разработать поисковый движок на C++. Аналог поисковой строки «Яндекса» или Google. Объёмная работа, но не могу сказать, что очень сложная. Саму программу (до исправления нюансов) я написал всего за неделю.
Много времени заняло создание структуры проекта (пришлось разбивать проект на подпроекты), работа с потоками и JSON-документами, Google-тестирование.
— И вот вы успешно защитили итоговый проект. Как действовали дальше?
— Продолжил учиться, конечно! Проходил дополнительные курсы: по GitHub, по языку запросов SQL и программе phpMyAdmin.
А потом… встал вопрос трудоустройства. Коллеги подсказали, да и я понял сам, что одного лишь дипломного проекта в портфолио недостаточно, нужно наполнить его чем-то ещё. В итоге решил придумать тему самостоятельно и написать по ней программу.
— Какую тему выбрали?
— Мне было интересно поработать с протоколами передачи данных, TCP или TCP/IP. Поискал информацию в интернете, на «Хабре», посмотрел библиотеки и написал клиент-серверное приложение (передача информации между клиентом и клиентом, клиентом и сервером). Разбил его на подпрограммы. Даже сделал так, чтобы внутренние сообщения можно было перенаправлять на другой компьютер.
О трудоустройстве и дальнейших планах
— Пробовали ли вы искать работу по новой специальности?
— Пробовал, даже на собеседования ходил. Но столкнулся с проблемой, в основе которой почти неразрешимая дилемма. Мне 35 лет, я опытный специалист в своей сфере с зарплатой уровня между middle и senior. Очевидно, что на схожую или даже мидл-позицию в разработке меня никто не возьмёт. Хорошо, я с этим согласен.
Но… я не бегу за деньгами. Я бы и рад подработать или попрактиковаться: наработать опыт, проекты в портфолио, если бы была возможность программировать вечерами или в другое свободное время. Ведь ровно так я и изучал С++. Но нет: все хотят быть на связи в рабочее время. Подходящие мне по условиям компании пока не нашёл. Так что начинающим специалистам совсем без опыта и бэкграунда, на мой взгляд, в этом плане будет легче.
— Вы упомянули, что всё равно ходили на собеседования…
— Да, в одной компании меня даже были готовы взять. Они искали человека, умеющего работать в Qt Creator. И вроде обозначали, что специалист им нужен начинающий. Но потом… показали такой объём данных, который я должен был изучить за две недели и такое количество работы для выполнения, что я понял, что на самом деле им требуется опытный программист с бэкграундом промышленной разработки за плечами.
— А как вообще обстановка на рынке труда с языком С++? Много вакансий?
— Так как порог вхождения у языка сильно выше, чем у того же Python, вакансий, конечно, не целое море, но вполне достаточно. Единственный момент: разброс по градациям неравномерен. Для людей с опытом от двух-трёх лет предложений много, с классными зарплатами и условиями. Для новичков — ощутимо меньше.
Думаю, проблему нехватки опыта можно закрывать не только итоговым проектом на курсе и личными наработками, как это делал я, но и участием в командных проектах, хакатонах. Например, у Skillbox есть командный проект по Java, вот было бы круто запустить такой же по языкам C.
— Сейчас, параллельно с основной работой, вы продолжаете кодить для себя?
— Меньше. Интерес к программированию никуда не делся, но, когда перед тобой нет цели, нет задач, заставить себя гораздо сложнее. Ощущение, будто ты один в поле. Поэтому и хочу найти подработку или проект, где мне дадут указания: «Григорий, вот боевая задача, её надо выполнить к такому-то сроку. Соблюсти такие-то условия. Работаем».
Начинающему специалисту нужен напарник, куратор. Не только на работе, но и в начале карьерного пути.
В C++ ещё масса информации и инструментов, которые можно освоить. Время на обучение у меня есть. И желание учиться. Так что жду, когда появятся подходящие задачи. А пока — изучаю английский язык и расширяю свой кругозор в сфере IT.
Читайте также:
— И напоследок. Григорий, оборачиваясь назад, на пройденный путь: вам удивительно осознавать, что вы вернулись к разработке и загорелись ей спустя столько лет?
— Конечно! Если бы после окончания университета мне кто-то сказал, что через 13 лет я буду сам покупать себе курсы по программированию и заниматься им по вечерам после работы — я бы не поверил. Но это случилось. Оказывается, с возрастом интересы меняются. И это круто.