«Не хотел быть привязан к низким зарплатам»: как продажник ушёл в Java
Аркадий с детства увлекался кодом, но решился освоить его уже во взрослом возрасте. После обучения Java он готов начать карьеру в IT.


Иллюстрация: Colowgee для Skillbox Media

Аркадий Круглов
Россия, Новочебоксарск
Пройденные курсы
Достижения
Освоил Java, опробовал новые навыки в командной разработке и готовит собственный pet-проект.
Аркадий рассказал:
- почему в IT нельзя быть уверенным в том, что знаешь всё;
- как опыт работы в продажах помогает ему в новой сфере;
- какими навыками разработчика он пользуется каждый день;
- о чем он советует помнить начинающим айтишникам.
«Мой единственный опыт программирования был в школе»: как решиться освоить Java без технического образования
— До IT ты работал в продажах. Что мотивировало тебя сменить сферу?
— Программирование интересовало меня ещё со школьных лет, но я с осторожностью относился к карьере в IT — понимал, что там высокие требования, и боялся, что не справлюсь. Всё изменилось, когда друг прошел курс по Java и поделился со мной своим восторгом о том, насколько это мощный и интересный язык. Я загорелся: стал читать, смотреть видео, а потом решился на обучение.
До этого мой единственный опыт программирования был в школе на языке Basic, поэтому я, конечно, немного переживал. Но возможность в случае чего посоветоваться с другом, который уже прошёл похожий путь, придала мне дополнительной уверенности.
К тому же меня мотивировало желание найти удаленную работу, чтобы не зависеть от региона с маленькими зарплатами. В программировании я увидел финансовый потенциал и свободу.
— Наверное, сложно было осваивать код практически с нуля. Что тебе помогало?
— Не могу сказать, что я пришёл в IT совсем с нуля. Скорее был на уровне продвинутого пользователя: не просто сёрфил, а мог сам собрать компьютер, установить операционку. Кроме того, я немного писал скрипты для простых игр, так что у меня был опыт, который дал мне общее понимание логики кода.
Но системного понимания, конечно, не было, поэтому в начале обучения было страшно. Думал: «Куда я лезу? Вдруг не получится?» Добавило сомнений и то, что у меня нет высшего образования. Я понимал, что при поиске работы это может быть барьером, — даже на позицию джуна в вакансиях часто требуют высшее техническое образование.
Несмотря на это, я твердо решил, что пройду обучение до конца и не буду тревожиться раньше времени.
Пока не попробуешь, точно не узнаешь, получится у тебя или нет. У моего друга вот получилось.
— Здорово, что ты не поддался страхам! А что было для тебя самым сложным в программе, несмотря на базу, которая уже была?
— Если честно, всё давалось нелегко. Не могу сказать, что схватывал на лету, — каждый этап сопровождался трудностями. Сложности начались буквально с первого шага — установки нужного ПО, в том числе IntelliJ Idea. Потом я с трудом разобрался в том, что такое Java 8, 11, 17 и почему один проект требует одну версию, а другой — другую.
Помню, после того, как установил Idea, долго не мог понять, почему она у меня выглядит иначе, чем у друга-разработчика. В итоге оказалось, что у него просто стояла более новая версия. Это мелочь, но тогда она сбила меня с толку.
Первое время, когда мы проходили переменные, условные операторы и циклы, всё было понятно и увлекательно. А потом началось объектно-ориентированное программирование, а вместе с ним — настоящие сложности. Ушло много времени, чтобы понять, что такое объект, класс, метод и как они взаимодействуют.
Когда пошли коллекции, стало ещё тяжелее. Приходилось вчитываться в материал несколько раз, переспрашивать, возвращаться к уже пройденному. Очень помогал чат студентов в Telegram и поддержка менторов и друга.
Если что-то оставалось непонятным, я всегда мог обратиться за советом. Без этого точно было бы сложнее.
«В IT, как только тебе кажется, что ты всё понял, всё снова кардинально меняется»: о работе над дипломом и первом командном проекте
— В какой момент ты почувствовал, что первичные сложности остались позади и у тебя по-настоящему начало получаться?
— Наверное, когда мы добрались до модуля по фреймворку Spring. Тогда я ещё не приступал к итоговому проекту, а просто смотрел видеолекции, и у меня появилось ощущение, что я все понял и уже в теме. Но итоговый проект показал, что моя уверенность была иллюзорной. Это уже была реальная задача, где нужно было собрать всё, чему нас учили, в единое целое, чтобы оно работало.

Изображение: Аркадий Круглов
Я создавал поисковой движок, который искал информацию среди списка определённых сайтов, а затем по запросу пользователя выдавал ссылки на нужные, отсортированные по релевантности.
— А с какими трудностями ты столкнулся в этом проекте?
— Самая первая проблема возникла с настройкой базы данных и структуры моделей. Нужно было правильно выстроить архитектуру, определить связи между таблицами — one-to-many, many-to-many и так далее. В какой-то момент пришлось поменять архитектуру, и именно тогда у меня всё сломалось. Я не понимал, как грамотно пересобрать базу данных, а это нужно было сделать, чтобы изменить модель. Это я осознал только с опытом.
Следующая серьезная проблема была связана с ForkJoinPool и многопоточностью в целом. Чтобы всё работало синхронно, приходилось долго настраивать и отлаживать разные параметры. Помню, что всё было как в меме, где на одной картинке котики синхронно едят из одной миски, а на другой — каждый кот делает то, что хочет. Первый случай — идеальная многопоточность, а второй — то, что получалось у меня.
Особенно тяжко стало в конце, когда нужно было реализовать функцию «Стоп» при обходе страниц. В идеале ты нажимаешь на кнопку — и все сразу останавливается. А на практике всё работало невпопад. Пришлось долго решать проблему через дополнительную синхронизацию и проверку состояния потоков.
Несмотря на все сложности, я смог довести проект до конца и был очень собой горд. Я писал его сам и лишь в паре мест консультировался с другом.
Потратил примерно месяц и сдал с первого раза — это дало мне уверенность, что я действительно могу.
— Наверное, это было очень мотивирующее чувство.
— Да, но потом начался отдельный большой курс по Spring, и я снова почувствовал, что ничего не понимаю. Было ощущение, что я поднялся на определенный уровень, а потом меня снова бросили в неизвестность, где всё пугающее и незнакомое. В этом вся суть IT: постоянно появляются новые подходы и инструменты, и когда тебе кажется, что ты в чём-то разобрался, всё кардинально меняется.
Потом был командный проект на микросервисной архитектуре. Я думал, что хорошо подготовлен к такой задаче, но оказалось, что настоящие испытания начинаются тогда, когда микросервисы пишут разные люди, а ты пытаешься всё это собрать вместе.

Читайте также:
— Это твой первый опыт командной работы?
— Не только мой, но и еще нескольких человек. Было непросто, потому что мы понимали: нам практически впервые нужно реализовать то, что мы проходили в теории, на практике — и в сжатые сроки.
Нам дали выбор — делать монолит или микросервис. Мы, конечно, выбрали микросервисную архитектуру, чтобы прочувствовать, как всё работает в условиях, максимально приближенных к настоящему продакшену.
Первая сложность была связана с тем, что нам выделили довольно слабенький сервер. Пришлось изворачиваться и ужиматься, чтобы все заработало. Мы подключили TeamCity и завязали все на GitLab, чтобы при каждом пуше запускались пайплайны, а TeamCity автоматически разворачивал проект. После этого всё начало выглядеть красиво и по-взрослому.
Потом возник затык с фронтендом. Никто из нас не занимался фронтом всерьёз, поэтому пришлось на ходу разбираться в том, как заставить фротенд увидеть бэк.
Дальше — проблема с одним из ключевых микросервисов авторизации. На него и микросервис с аккаунтами мы потратили больше всего времени — чуть ли не полтора месяца из двух, отведённых на весь проект.
Последние три недели мы просто допиливали всё, что могли. Я лично ложился в три-четыре часа утра, чтобы успеть протестировать, отследить баги и разобраться, почему падает тот или иной сервис. Зато в итоге мой микросервис работал стабильно!

Источник: личный архив Аркадия Круглова

Источник: личный архив Аркадия Круглова
— Классно, что в итоге всё получилось, несмотря на технические сложности. А были ли у вас трудности в коммуникации? Бывает сложно наладить общение в команде, особенно если это первый опыт.
— Были моменты, когда один не понимал другого, и приходилось объяснять буквально на пальцах. Но мы выкручивались: искали точки соприкосновения, обсуждали разные варианты решений, договаривались. За два месяца работы у нас сложились тёплые отношения, и после сдачи мы даже сделали групповой чат в Telegram, где до сих пор общаемся. Возможно, в будущем сделаем ещё один совместный проект.
«Хочется найти команду с понятной структурой и реальными проектами»: о трудностях в поиске работы и pet-проектах
— А когда у тебя появилась возможность опробовать свои навыки уже на реальных, а не учебных проектах?
— После командного проекта мы все начали активно искать работу. Я обратился к Центру карьеры Skillbox, где мне помогли правильно составить резюме и подготовиться к собеседованию, Вскоре я нашёл компанию, которая занимается трудоустройством начинающих разработчиков, и решил попробовать поработать с ними. Но у нас не совпали ожидания: они ожидали кого-то ближе к уровню мидла, хотя изначально позиционировали себя как площадку для джунов.
Тогда я вернулся в Центр карьеры, мы вместе добили резюме и возобновили поиск работы. Тогда я нашёл свой первый проект — разработку приложения для знакомств по типу Tinder, где отвечал за бэкенд. ТЗ поставили устно и расплывчато, и у меня сразу возникли сомнения. Несмотря на это, я проработал три месяца, но безрезультатно — в какой-то момент команда просто перестала отвечать на мои апдейты.
Сейчас я снова в активном поиске. Хочется найти нормальную команду, где будет понятная структура и реальные проекты.
Как и раньше, мешает отсутствие высшего образования — многие компании указывают наличие диплома в качестве обязательного условия. Но я не сдаюсь, продолжаю подтягивать теорию и пробовать разные варианты.
— Не думал сделать pet-проект, чтобы набить руку?
— Сейчас мы с другом обсуждаем идею бота для автоматизации взаимодействия с криптобиржами. Планируем, что бот будет анализировать рынок, мониторить курсы, сравнивать разные биржи и выбирать наиболее выгодные варианты. Сначала хотим реализовать задумку для внутреннего пользования, а дальше — посмотрим. Пока я снова ищу временную работу в продажах, чтобы закрыть финансовые потребности.

Читайте также:
— Кстати, твой опыт в продажах как-то пригодился тебе в IT?
— В первую очередь он дал мне понимание бизнеса. Я занимался не просто продажами в классическом смысле, а более глубокими процессами: курировал работу с банками и платежными системами и закупки. Увидел, как устроен бизнес, как думают его владельцы, что для них важно.
Сейчас это понимание очень помогает, особенно в вопросах трудоустройства. Я знаю, почему работодатели делают выбор в пользу одних кандидатов, а не других, и стараюсь подтягивать свои скиллы под эту логику.
Конечно, если говорить о хард-скиллах, то продажи никак не помогут войти в IT. Здесь работает только проектный опыт на реальных задачах. Правда, и в таких делах может пригодиться бизнес-бэкграунд — например, в финтехе.
Айтишнику в этой сфере особенно важно обеспечивать безопасность и надежность не просто потому, что так написано в ТЗ, а потому, что он понимает, какие бизнес-риски за этим стоят.
«Обучение в IT меняет то, как ты воспринимаешь информацию»: о развитии и планах на будущее
— Мы много говорили о том, как выросли твои скиллы. А как поменялось твое мышление?
— Обучение в IT очень сильно влияет на то, как воспринимаешь информацию: начинаешь больше размышлять и обращать внимание на детали, которые раньше просто не замечал. Это, безусловно, влияет и на повседневную жизнь.
Приведу пример: в какой-то момент в России стало сложно открыть многие сайты, сервисы и даже рабочие инструменты. Плагины для разработки, которые обычно подгружаются в средах вроде IntelliJ Idea, перестали устанавливаться напрямую. Я нашёл решение: собрал систему с открытым исходным кодом, арендовал сервер в Европе, всё настроил под себя — и теперь стабильный доступ есть не только у меня, но и у семьи и друзей.
Получается, новые знания помогли не только освоить профессию, но и решать вполне практичные, жизненные задачи. Раньше я бы просто не додумался до такого.
— Как ты видишь свое развитие в IT дальше?
— Java широко используется в банковском секторе, потому что это безопасный и надёжный язык. Так что я бы с удовольствием поработал в финтехе — мне важно ощущение стабильности, которое может дать эта сфера.
— А что бы ты посоветовал человеку, который, так же, как и ты раньше, хочет освоить IT с нуля?
— В первую очередь — изучить рынок, чтобы понять, какие языки программирования не просто актуальны сейчас, но и продолжат быть актуальными в течение пары десятков лет. Java, например, — это довольно стабильный язык, который останется с нами надолго.
Хотя, оглядываясь назад, я думаю, что, возможно, стоило выбрать Python. На мой взгляд, он полегче для новичка, чем Java.
Конечно, будут моменты, когда захочется опустить руки. Тогда нужно просто отдохнуть — отложить обучение на неделю, заняться своими делами, отвлечься. А потом вернуться к задаче со свежим взглядом. Иногда решение сложной проблемы буквально приходит само во время прогулки или принятия душа. Поэтому, если чувствуешь, что голова закипает, просто прогуляйся.
Главное — не судить о своих возможностях заранее. Не думать: «У меня ничего не получится». Сначала пройди путь до конца — и только потом делай выводы.