Кем работать в IT в 2024: Java-разработчик
Рубрика «Кем работать в IT» — это интервью с представителями IT-профессий, в которых специалисты рассказывают о тонкостях своей работы: плюсах, минусах, подводных камнях и заработной плате. Мы надеемся, что джунам и стажёрам она поможет больше узнать о том, что их ожидает на карьерном пути, а профессионалам — посмотреть на свою специальность через чужой опыт и, может быть, открыть для себя что-то новое.
Для этой статьи о своём опыте работы нам рассказал Степан Ермаков, Java-разработчик в Orion soft.
По данным зарплатного калькулятора Хабр Карьеры, средний размер заработной платы разработчика приложений во втором полугодии 2023 года составлял 276 тысяч рублей. Конечно, это среднее значение. Есть те, кто зарабатывает меньше: 177 тыс., а есть и те, кто получает 378 тыс.
Расскажите, чем вы сейчас занимаетесь
Основное направление — разработка программного обеспечения. Один из продуктов, которые выпускает компания, — система виртуализации zVirt, основанная на опенсорсном кросплатформенном движке oVirt. В ней я создаю новый функционал, чиню баги, немного общаюсь с опенсорс-комьюнити. Мы отдаём туда некоторые свои наработки и берём удачные решения.
В последнее время к нашей команде присоединяется достаточно много людей, в том числе стажёры-студенты. Параллельно с основными задачами мы с коллегами выполняем роль их наставников: развиваем, помогаем влиться в команду и участвовать в разработке.
Какое у вас образование?
В далёком 2004 году я окончил Челябинский государственный университет по специальности «прикладная математика». Можно сказать, что образование профильно: половина предметов — разные варианты математики от линейной алгебры до теории вероятности, вторая половина — языки программирования, в основном С++, и сопутствующие темы (базы данных, операционные системы).
Почему вы выбрали прикладную математику?
В школе я очень плотно занимался математикой, участвовал в олимпиадах, доходя до уровня региона. Было достаточно тяжело, но я любил эти предметы, поэтому рассматривал специальность, связанную или с математикой, или, возможно, с физикой.
Как раз за счёт участия в олимпиадах в родном Челябинске у меня была возможность поступить без экзаменов в университет. Вуз тогда ждал олимпиадников с распростёртыми объятиями: в то время все обходились без ЕГЭ. С друзьями-одноклассниками посчитали прикладную математику интересным вариантом, связанным с компьютерами и программированием, эта отрасль тогда уже хорошо развивалась.
А как вы пришли к программированию? С каких языков начинали?
Началось со школы, с компьютера ZX Spectrum. С его помощью я учил Basic и Assembler, причем второй мне нравился гораздо больше. Там можно было делать крутые вещи. Я писал игры и разные программы для школы, например, построение графика функции по любой формуле с возможностью в динамике посмотреть, как меняется картинка при изменении параметров.
Впоследствии появились персональные компьютеры: сначала 286-й, потом 386-й. Я начал учить Pascal, Turbo Pascal. Написал телефонную книгу с оконным интерфейсом и поиском. В старших классах пришел к C++, который потом изучал и в университете. Параллельно примерялся к вебу: делал сложную верстку на чистом HTML, активно использовал JavaScript, AJAX. Но в большей степени все же C++.
Начало карьеры
С чего начался ваш профессиональный путь?
Закончив учиться в 2004 году, устроился работать в компанию «Прикладные технологии». Хотя я шёл по рекомендации, у меня было собеседование. Интересно, что один из будущих коллег, проводивших то собеседование, преподавал в моём университете и вёл у меня целый курс, связанный с программированием. Он меня узнал и был в курсе моих навыков и проведённых работ. Так что собеседование прошло достаточно быстро, и меня взяли.
Параллельно я учился в аспирантуре и преподавал высшую математику на нематематических специальностях. Работая программистом, постепенно рос от джуна до сеньора, а впоследствии дошел до тимлида и менеджера проекта.
Компания работала в основном с зарубежными заказчиками. Наша команда делала сервис управления мейнфреймами, выпускаемый под брендом IBM. Изначально мы дорабатывали существующую версию под Windows на C++, а через несколько лет переносили все на Java, делая инструмент кроссплатформенным.
Это была самая первая работа? Работали ли в студенческие годы?
Это была первая основная работа. Когда был студентом, подрабатывал. И там всё было в каком-то смысле хитрее — я не искал работу. Меня нашли благодаря олимпиадам по программированию. На одном из этапов нашу команду заметила софтовая компания из Екатеринбурга. Они пригласили нас к себе, пока мы были студентами, работали там удалённо.
Это был местный конкурент 1С, который разрабатывал программы для бухгалтерского учёта, ведения сотрудников. Я попал в отдел, который занимался бухгалтерией, в частности формированием отчётов в государственные органы. Формат этой отчётности постоянно менялся, и нашей задачей было создать такую архитектуру, которая позволит легко его конфигурировать. Разрабатывали на С++.
Разошлись мы, когда закончили свою часть работы. Нам предлагали работать и дальше, но, учась в Челябинске, работать в Екатеринбурге было неудобно (удалёнка тогда не была в тренде и не приветствовалась).
А сколько вы тогда зарабатывали? Как этот доход соотносился с рынком?
Если не ошибаюсь, в далеком 2002-м мне платили около четырёх тысяч рублей в месяц. Много это было или мало, не помню, я был молодым студентом, который занимается математикой и программированием в университете, а тут ещё и поработать пригласили. Кроме того, на тот момент времени на мониторинг рынка вакансий и самостоятельный поиск особо не было.
Как именно вы попали в backend? Почему не front?
За всю жизнь я сменил не так уж много проектов, и так получилось, что все они были крупными. Это не то что решил задачку небольшую и пошел за следующей. Это огромные продукты, где можно было попробовать и фронт, и бэк, и все что угодно. Я писал и на C++, и на Java, и на JavaScript с HTML, и на React. Были и всякие разные системные вещи, связанные с управлением Linux. Но больше у меня было именно Java с бэкендом. Фронт пробовал, получалось, оно работало, но в целом фронта в моей карьере было чуть меньше.
Расширяете ли вы свой спектр технологий?
Как и в других IT-профессиях, в работе разработчика важна гибкость, связанная с обучаемостью. Всегда приходится познавать что-то новое. Это может быть новый проект или технология, которая только появилась, и нужно понять, как ее применять или какую из технологий выбрать для своего проекта. Да и в целом в мире программирования что-то постоянно меняется — появляются новые тренды и решения, поэтому все время надо учиться.
Я давно окончил университет, но продолжаю учиться до сих пор. Каждый проект — продолжение моей учёбы. Сначала я разрабатывал в основном на C++. Потом, когда мы переносили инструмент управления мейнфреймами IBM, все вместе учили Java — читали книги, искали статьи. Сейчас изучаю Python и системное программирование (управление системами Linux). Это огромный пласт новой для меня информации.
Кстати об обучении: в этом году мы на Хабр Карьере запустили сервис для менти и менторов в IT — Хабр Эксперты, в котором вы можете бесплатно зарегистрироваться, как эксперт или найти своего наставника и учиться с ним.
Как вы попали в Orion soft?
По сути за свою карьеру я сменил три проекта. Сначала в «Прикладных технологиях» делал инструмент работы с мейнфреймами. Когда в 2014 году компания ушла из России, перешел на облачный сервис другой компании (она малоизвестная). А когда он закрылся, начал искать работу. Узнал, что бывший руководитель, с которым мы работали на проектах «Прикладных технологий» еще годах эдак в 2006–2014, работает тимлидом в Orion soft. Он и позвал меня к себе в команду.
Перед тем как согласиться на оффер Orion soft, ходили на другие собеседования? Сложно ли было принять решение?
Когда в 2022 году свернулся мой предыдущий проект, сходил на несколько собеседований. Но мои ожидания были выше, чем мне могли предложить. А здесь бывший коллега рассказал все о компании и предложил хорошие условия.
Как проходил процесс адаптации?
Я входил в проект несколько месяцев. Продукт очень обширный, но процесс адаптации прошел легко, мне понравилось. У нас хорошая команда: ребята готовы помочь, рассказать, научить. Да и с обучаемостью у меня с детства было все хорошо.
Планируете ли вы развиваться в сторону управления?
На предыдущей работе я уже выполнял функции тимлида: одновременно и людьми управлял, и проектные задачи выполнял. Переходя в OrionSoft, я сознательно не хотел руководить, поскольку не знал продукта, всей его специфики и внутренней организации. Мне нужно было время на то, чтобы вникнуть в суть.
Сейчас наша команда растёт, уже собралось больше 20 человек. Появилась идея ее разбить и, возможно, как раз стану тимлидом в одной из новых команд.
Навыки и знания
Какие скиллы важны для работы в вашей сфере?
Во-первых, важна обучаемость. Во-вторых, нужен не просто технический, а алгоритмический склад ума. Я бы так сказал: прокачать подобный склад ума гораздо легче, если в школе хорошо изучать и понимать математику. Тут со мной многие не согласятся: есть хорошие разработчики, которые математику знают плохо. Я с этим согласен. Но обычно те, кто хорошо знает математику, одновременно хорошие разработчики.
А ещё важна коммуникабельность, потому что серьезное программирование — это всегда работа в команде. Есть одиночки, но, как правило, они работают над небольшими проектами. Обычно такие проекты не сильно долгоживущие и не всегда выстреливают в финансовом плане. А общительный человек всегда может войти в любую команду, получить работу над достаточно большим и интересным проектом.
Помогает ли опыт олимпиадного программирования?
Много холиваров читал на эту тему, да и сам немного в этом крутился. Наша команда больших высот в олимпиадном программировании не достигла — отчасти потому, что в этой сфере важно заучивать конкретные алгоритмы, необходимые для решения очень частных задач. Мне это было неинтересно. И в бизнесе это практически не нужно. Зачастую при решении реальных задач необходимо придумывать свои алгоритмы с нуля с помощью того самого алгоритмического мышления. Так что само по себе олимпиадное программирование тут ничем не поможет.
Но олимпиадные задачи могут быть интересны тем, что вырабатывают навык писать код быстро и без ошибок. Параллельно развивается скорость поиска ошибок в коде. Однако на нашем уровне больших преимуществ это не дало.
Опыт
Какие скиллы стоит подтягивать молодым специалистам, чтобы пройти по тому же пути?
Помимо изучения языков программирования и развития софтов, я бы посоветовал придумать для себя какую-то объемную задачу (именно в плане программирования) и попробовать ее самостоятельно решить — написать с нуля. При этом необязательно писать что-то уникальное, можно повторить существующие решения.
А школьникам я бы посоветовал учить математику. Михаил Ломоносов говорил, что «математику уже затем учить надо, что она ум в порядок приводит». Я с этим согласен. Вероятно, способность решить дифференциальное уравнение или посчитать интеграл во взрослой жизни не востребована, но развитый ум дает возможность хорошо писать программы и глубоко продумывать их дизайн.
Проходили ли вы какие-то курсы по специальности после университета? Помогли ли они вам?
До недавнего времени я никакие курсы не проходил. Изучая новые идеи, в основном читал книги или статьи. Если же нужна была новая технология, например подтянуть JavaScript с HTML и CSS, шел в интернет и гуглил статьи. Я не люблю воспринимать такую информацию с видео, мне проще воспринимать текст.
Что касается курсов, то впервые в жизни я прошел один из них около года назад. Его мне посоветовал нынешний тимлид. У нас есть внутренняя LMS-система, где собраны курсы в записи, а также расписание живых треков, на которые можно записаться. Если курс платный, мы можем пройти его за счет компании. Мне предложили посмотреть, что есть интересного, и я решил совместить приятное с полезным. Раз уж Python мне нужен для работы, почему бы не взять его на ближайшее полугодие.
Я начал с Python для начинающих со Stepik.org. Курс хороший, правда, со своей спецификой и нюансами. Впоследствии проходил Python для продвинутых и в ближайшем будущем собираюсь взяться за Python для профессионалов. В целом мне понравилось. В этих курсах есть некая система. Мне удалось неплохо подтянуться.
Стоит ли вообще идти на курсы?
Я встречал много людей, кто достаточно поздно пришел в программирование — не со школьной скамьи и не со студенческих лет, скажем так. Они изучали все самостоятельно, в том числе через курсы, проходили собеседования, развивались и становились хорошими разработчиками.
На мой взгляд, никогда не поздно начать, но все же для этого нужно иметь определенный склад ума — то самое алгоритмическое мышление и обучаемость.
Сегодня попасть в IT стало проще — множество компаний предлагают свои программы обучения. Сейчас на Хабр Карьере более 500 курсов для тех, кто хочет изучить разработку, курсы можно отфильтровать по вашей специализации.
Посоветуйте какие-нибудь статьи и книги, которые будут полезны специалисту в вашей сфере
Следует брать книги по конкретному языку программирования, где хорошо описан синтаксис и база. Например, если нужно что-то по Java, стоит искать литературу, где есть объектно-ориентированное программирование. Дополнить книги можно статьями в интернете, например по Spring Framework.
Рекомендую также поискать книги по алгоритмам. Но в них много математики (я это люблю). Возможно, это не всем покажется правильным и интересным, но в алгоритмах стоит прокачаться в любом случае.
Карьерный трек
Мы часто слышим от специалистов на Хабр Карьере вопрос: как понять, что я уже сеньор? Или: что мне нужно сделать и освоить, чтобы вырасти до мидла?
В каждой статье рубрики мы разбираем новую специализацию и показываем карьерный трек. Это инфографика с навыками, задачами и условиями работы, разбитыми по квалификациям.
Вот такой трек нам помог составить Степан из Orion soft. Средняя зарплата указана по данным зарплатного калькулятора Хабр Карьеры.