История прокурора, который стал Java разработчиком. “Если заставляешь себя программировать, то лучше не заниматься этим”
Вячеслав Круглов из города Счастье работал прокурором в Новоайдарском районе Луганской области. В 2014 году он решился на перемены: уехал в другой город, попробовал открыть свое семейное дело, а после стал учить языки программирования. Для DOU он рассказывает о том, как и почему из прокурора переквалифицировался в Java Developer, а также с какой мотивацией лучше идти в IT.
Вячеслав с женой
О работе в прокуратуре
Когда я определялся с профессией, юриспруденция считалась перспективным и серьезным делом. Во многом на мой выбор повлиял пример старшего брата: он учился на программиста, но потом перешел в юриспруденцию. В 2004-м IT было не настолько популярно и понятно. Поэтому еще в конце школы я выбрал гуманитарное направление и поступил в Национальный юридический университет имени Ярослава Мудрого (Харьков).
Сам я из города Счастье Луганской области. Закончив университет, по распределению попал в прокуратуру Новоайдарского района Луганской области. Там проработал два года — до середины 2014-го.
Работа мне не нравилась в первую очередь из-за бумажной волокиты. А ведь только этим я и занимался: бумажки-бумажки-бумажки. Морально тоже было сложно — ментальность руководителей добивала. Не знаю, так ли во всех госструктурах, но у нашего руководства был такой подход: угнетать, общаться грубо и унижать. Может, расчет был на то, что так работать будут лучше. Но все было наоборот. И скоро я стал воспринимать работу как обузу.
На момент, когда начались активные боевые действия, я жил в Счастье с женой. Она сама из Луцка, но после свадьбы забрал ее к себе. Тогда жизнь была примерно следующей: ехал на работу — мне навстречу танки, ехал с работы — танки возвращались, снова мне навстречу. Мой дом находится около леса, и вся канонада пролетала рядом: могли ночами не спать, стало развиваться ПТСР (посттравматическое стрессовое расстройство).
Тогда я и понял, что нужно что-то менять. Хотя бы поговорить с руководством о переводе. Мне дали понять, что переводить некуда, и я решил уволиться. Я чувствовал ответственность за семью, но также знал, что эта работа не для меня. В общем, на тот момент ушел в никуда. Сейчас понимаю, что все сложилось к лучшему.
Первая попытка сменить профессию
После увольнения из прокуратуры я еще попробовал поработать в профессии «с другой стороны»: мы с братом открыли адвокатское объединение «ВЕК» в Днепре. Было пятеро сотрудников, я работал помощником адвоката. Мы столкнулись с частью проблем, на которые я не обращал внимания на должности прокурора. Например, с непрофессиональностью судей, игнорированием наших запросов у органов.
Мы решили работать только «в белую», из-за чего в итоге не могли прогнозировать развитие дел. Имея всю доказательную базу, закрывали дела не в одно заседание, а за полгода. Это очень выматывало, ведь клиенту сложно объяснить, в чем проблема: под конец процессов они уже смотрели на нас как на обманщиков или вымогателей денег.
В тот период понял, что мне не подходит, когда результат работы на 90% зависит от посторонних безразличных людей. Через полгода решили закрыть свое дело. Накопленных денег становилось все меньше, и мы переехали к родителям жены в Луцк. Она уже была в положении, в Счастье лучше было не возвращаться.
Обучение программированию
Тогда остро стал вопрос: что делать дальше? В Луцке я быстро понял, что в частные фирмы я вряд ли устроюсь юристом — это совсем другая специфика работы. Плюс в бизнес-сфере есть предрассудки в отношении работников прокуратуры: что после должности у екс-прокуроров остается определенный майндсет, из-за которого мало кто хочет сотрудничать с ними. Да и если честно, у меня уже не было никакого желания развиваться в юриспруденции.
В общем, решал, куда податься дальше. Мне 25 лет, за окном 2015 год, программирование было на хайпе. И как-то на семейном совете с женой подумали, а почему бы не попробовать программировать? С компьютерами я с детства был на «ты»: брат научил персоналить и настраивать системы, так что в универе на курсе я часто выполнял функции сисадмина.
Изначально попробовал учиться сам: осваивал HTML, CSS по книге Head First. Было прикольно и интересно как для начала работы с кодом. Научился писать простенькие странички, но понимал, что дело шло слишком туго — стал искать курсы. Выбрал программу в «ШАГе»: она была рассчитана на 2,5 года, по моим представлениям, для глубинного понимания этого времени должно было хватить. Первый семестр были дебри: C, C++. Решали задачи, знакомились с синтаксисом.
Я был настроен серьезно: программировал ежедневно где-то по 5 часов, вне уроков и домашних заданий. Параллельно изучал английский — с ним у меня было плохо. В начале обучения стало понятно, что без английского хорошим программистом стать не получится. Мало того, что весь код на английском, так и новейшие учебные материалы тоже. В общем, курсы программирования + английский стали моей новой фултайм занятостью.
Окончив первый семестр в «ШАГе», я решил сменить школу. На практике оказалось, что это был больше ознакомительный курс, который лучше всего подходит студентам, у которых есть время на «раскачку». Мне тянуть было некуда. И вместе со школой я сменил направление. Немного промониторив, понял, что на С++ порог входа очень высокий: я боялся не потянуть. Остановился на другом перспективном направлении — Java. Плюс именно по этой теме было много образовательных материалов в интернете и даже на русском.
Следующей моей школой стала GoIT: пошел учиться на Java-разработчика с перспективой реализовать реальный проект, который можно будет показать на GitHub. Но снова все получилось не так, как задумывал. В ходе обучения оказалось, что онлайн-курс на момент старта был готов только на половину. Поэтому было много задержек, связанных с подготовкой материалов. Все растянулось, и через год курс я все-таки закончил. Кстати, по моим подсчетам, до конца дошло в лучшем случае 20% от стартового состава. Мы прошли от базового синтаксиса и фреймворков Spring, Hibernate, паттернов проектирования, фронтенда до работы с данными.
С самого начала погружения в программирование мне было в кайф работать с умной машиной. Ведь если что-то не получается в работе, значит, ошибка с моей стороны. К тому же основная работа не связана с людьми: не нужно напоминать, настаивать, чтобы ответили на письмо или запрос.
Только в октябре 2016-го, где-то через год после старта учебы, я начал искать вакансии. Разослал около 50 резюме: из всего списка мне ответили только SoftServe. И то это были курсы для джунов с перспективой трудоустройства. Ближайший офис находился в Черновцах. Но, учитывая мою «популярность» среди работодателей, я решил попробовать. Сдал английский, прошел тестовое (решил ряд задач по программированию) и техническое собеседование. Да, чтобы попасть на обучение, нужно было постараться.
В итоге меня взяли. Я оставил семью в Луцке, а сам поехал в Черновцы. Обучение длилось три месяца, и семью перевозить не хотел, потому что было непонятно, трудоустроюсь ли я после. К тому времени у меня уже родилась дочь и закончились финансовые сбережения: так что кататься по стране не хотелось. В Черновцах я жил на минимуме, очень экономно. Снимал жилье где-то за тысячу гривен. Но по факту в квартире меня почти не было: я уходил на курсы в 8 утра и возвращался в 8-10 вечера. Несмотря на плотный график, конечно, раз в две недели или месяц ездил в Луцк к семье.
В SoftServe мы работали с Full Stack, также задействовали фреймворк фронтенда Angular. На обучение в компанию брали людей хоть с каким-то опытом, чтобы посмотреть на нас в деле и отобрать для дальнейшей работы тех, кто быстро обучается, хорошо работает в команде.
Нас, студентов курса Java, было пятеро. Мы работали не со стандартным Full Stack, где знания Node.js достаточно. В нашем формате Full Stack — это Java на бэкенде, а на фронтенде — Angular. Это более сложный формат, поскольку мы совмещали две огромные экосистемы — Java и фронтенд. Использовали стандартные фреймворки: на бэкенде для Java — Hibernate, Sping с кучей функциональностей (Spring Security, Spring Data). База данных — PostgreSQL. А Angular мы учили заново, это был второй язык.
Так что практически все было в новинку и сложно: по традиции я учился не только на курсах, но и дополнительно, сам. Если раньше занимался по 5 часов в день, то теперь уделял до 10 — с перерывами на еду и сон.
После такой школы проще изучать новые языки и фреймворки, быстрее схватываешь. Также учились работать в команде. Например, работали с репозиторием, поскольку проект вели впятером, распределяли задачи и сами освоили Jira.
Kids-day, организованный SoftServe
Обучение самостоятельно VS курсы
Я считаю, что самостоятельно освоить программирование можно. Главная загвоздка — время. Даже несмотря на все помощники: те же советы от Senior на DOU , цикл статей «Пособие для будущего Java-разработчика» , обучающие видео на YouTube, — новичку сложно освоить абсолютно новую сферу. Языки программирования выглядят абстрактно и непонятно: с какой стороны подступиться, что учить дальше, на что обратить больше внимания, а что вовсе выкинуть. И все эти разбирательства занимают время. В общем, главный плюс курсов — структурированность обучения. Поэтому с ними прогрессируешь быстрее, чем обучаясь самостоятельно.
Безусловно, курсы — это еще и тот самый волшебный пинок: оплатив обучение, меньше филонишь. Также помогает тесный контакт с группой: отставать не хочется и больше шансов, что будешь работать усерднее, не слетишь. В любом формате обучения важно иметь «надежный тыл»: правильное окружение и финансовую подушку. Это я вам говорю как человек, который полтора года не работал, а только учился.
Мне повезло — поддерживали и жена, и родители. Но даже с пониманием и принятием семьи мне было непросто: часть сбережений мы потратили на попытку открыть свое дело и в какой-то момент стали зависимы от родителей. Да, сложно начинать что-то с нуля, осознавая, что ты взрослый. Моральная сторона играет важную роль и может выбить из колеи.
Поэтому стоит понимать, что на обучение программированию с нуля на курсах может уйти от полугода до года, а самому — в несколько раз больше. Соответственно, следует прикинуть, сколько сбережений нужно, чтобы комфортно себя чувствовать для обоих вариантов, и собрать деньги. Тогда стартовать учебу.
Кстати, не советую менять профессию, не уволившись со старой работы. Много ребят с курсов пытались совместить работу и обучение программированию, и у большинства ничего не вышло. Они быстро перегорели и бросили обучение. Потому что: а) несколько часов на программирование в день — это мало; б) вы будете учиться после работы, которая выматывает. Обучению стоит уделять максимум времени и сил. А с параллельным занятием их просто не будет.
То есть сначала накопить денег, а потом уже увольняться и учиться новому — самый оптимальный вариант.
О мотивации
На одном из потоков, где я учился программировать, мы стартовали группой в 100 участников. К финалу нас было не больше 20. Почему так? Часть посыпалась из-за дисциплины и потому что пыталась совместить работу с учебой. Другие поняли, что программирование не для них.
Часто вижу вопросы об ІТ на форумах: как найти силы, чтобы себя мотивировать? Стандартный ответ: если заставляете себя программировать, то лучше не заниматься этим. Согласен на все 100%. Оглядываясь назад, понимаю, что все пути в карьере, связанные с юриспруденцией, были неправильными:
- мне не нравилась эта сфера;
- я пошел, потому что туда шли все;
- не хотел углубляться, расти.
Многие сейчас выбирают программирование по похожим причинам: популярная сфера, есть деньги, все хотят туда попасть. Но по своему опыту знаю, что такая мотивация не поможет добиться успеха. Деньги — временная мотивация. Если вам не нравится работа, но там хорошо платят и вы из-за этого остаетесь, можете в итоге получить массу проблем. В первую очередь, с психическим здоровьем. Если постоянно все не нравится, начинает съезжать нервная система. Какой бы ни была финансовая компенсация — только благодаря ей классных результатов и комфорта не добиться.
Если в процессе работы, которая не нравится, возникают трудности, зачастую человек забивает на них, а не решает. Но если занятие по душе, то трудность будет стимулировать и драйвить искать решение: в видео, книгах, на курсах, у более квалифицированных коллег. И так постепенно расти. Так что нет смысла себя заставлять — рано или поздно силы и мотивация закончатся.
Мотивация пойти в IT посмотреть и уйти, если не понравится — ок. Но остаться там любой ценой, потому что это круто — нет. Лучше честно остановить обучение, если оно не нравится, признаться в этом и пойти в другую сферу, чем убить массу времени, сил и денег, потом с выгоранием прийти к тому же результату и пытаться что-то менять. Не нужно думать, что раз вы решили перейти, то это уже навсегда.
Первые проекты
В общем, сбережения заканчивались, я не работал, поэтому к концу обучения был гол как сокол. И это только мотивировало показать себя с лучшей стороны. После обучения в SoftServe меня взяли на enterprise-проект в медицинской сфере. Как новичку мне было сложно.
Когда работаешь над каким-то «проектом» во время обучения, за который не несешь ответственности — это одно. Когда приходишь на проект, где понимаешь всю ответственность (за это клиент платит деньги) и видишь, чем могут обернуться ошибки, — другое, это осознание затрудняет работу. И хотя джунам не дают все и сразу, не грузят сложными задачами, все равно первые шаги воспринимаются гиперсерьезно.
К тому же это была еще интернатура — период, когда в компании к тебе присматриваются: подходишь ли команде, не было ли решение взять на работу преждевременным. Такая себе трехмесячная стажировка.
Но у нас была классная команда: после прокуратуры атмосфера была вообще глотком свежего воздуха. Все поддерживали, объясняли. Я стал быстро развиваться, и это был рай для меня. После обучения проработал в Черновцах чуть больше года. Потом мы с семьёй перебрались в Киев. У нас получилась огромная история путешествия по Украине: перевезли все вещи в Днепр, потом переехали в Луцк, затем чуть больше года пожили вместе в Черновцах, после чего переехали в Киев.
Работа в прокуратуре VS работа в ІТ
Юриспруденция, особенно работа в прокуратуре, и IТ кардинально разные. Подходы к решению и постановке задач, а также сами принципы работы отличаются.
Оглядываясь назад, не понимаю, как выдерживал работу в прокуратуре, потому что мне нравится оптимизировать. Сейчас часто думаю о том, сколько процессов можно было бы упростить, просто прописав правильную программу. Работа в прокуратуре — не про оптимизацию и упрощение. С другой стороны, для прокурора важна логика: выстраивать логические цепочки, причинно-следственные связи. Возможно, это как-то пригодилось в программировании.
В целом я не расстраиваюсь, что из работы в прокуратуре не удалось применить никакой опыт. Там токсичная среда, и здорово, что я не перенес эту токсичность в свои первые коллективы.
Да, в IT по-своему непросто: нужно много работать. Из-за этого часто прихожу поздно домой, не успеваю ходить в зал (а вместе с сидячей работой это обязательно аукнется), бывают переработки. Часто плюсом IT считают возможность работать удаленно. Я не верю в такой формат. Да, есть люди, которым заходит. Но меня домашняя обстановка расслабляет. Особенно если дома дети, то эффективность близится к нулю.
Безусловно, в ІТ я вижу такие плюсы:
- В основном проблемы на работе зависят от тебя. Машина почти никогда не ошибается, у нее не бывает плохого настроения, она не хочет от тебя взятки. Поэтому, если код не работает или есть другая неполадка, нужно искать ошибку в своих действиях. И в этом смысле ты не зависишь от других людей.
- Люди в ІТ более счастливые. Конечно, это связано с высокими зарплатами: они могут себе больше позволить. Но согласитесь, приятнее работать, когда все счастливы и настроены позитивно.
Но акцентирую: вы вряд ли полностью будете наслаждаться плюсами, если специфика работы не для вас.
О дальнейших планах
Так получилось, что у нас теперь вся семья работает в ІТ: я и брат — Java-разработчики, моя жена — QA, жена моего брата сейчас Full Stack фронтенд-разработчица.
Семья Вячеслава и его брата. Пока что только дочка не переквалифицировалась в ІТ
Сейчас работаю в продуктовой компании SDK.finance. Занимаемся SaaS (Software as a Service) финтехпроектом. Считаюсь уверенным мидлом, ведь в программировании уже больше трех лет. Но это все относительно: потихоньку выполняю и задачи для Senior. Например, пишу модули с нуля. Также работаю с синьорами: комментирую их работу, вместе обсуждаем проекты. Хочется верить, что мой уровень уже приличный. Но все равно постоянно нужно много учиться и читать, чтобы быть в теме. Кстати, мне больше заходит книжный формат. Для многих лучше и быстрее видео, но, как ни странно, я справляюсь и успеваю все усваивать по книжкам, хотя плюсы видеоформата тоже понимаю.
Переход из аутсорса (SoftServe) в продуктовую компанию произошел сам собой. Конечно, не без лайфхака с зарплатой: когда при переходе ее повышают. Но это стандартная практика — не знаю никого, кто менял работу без изменения зарплаты :) Но не это главное. Мне показалось, что в аутсорсе мне уже не было у кого перенимать опыт (да, самоуверенное заявление). Проекты повторялись, и я будто застопорился в развитии. А именно это мне было интересно: развиваться, осваивать новые задачи.
Когда проходил собеседование, меня интересовало многое, напрямую не связанное с задачами. Например, как сотрудники относятся к работе. Обмен опытом важен: все просчитать невозможно, нельзя отследить, предугадать. Поэтому важно, чтобы вокруг были заинтересованные люди, готовые делиться новой информацией и личным опытом. Также было важно, как проводят код-ревью. Ведь это тоже зона развития: если специалист хороший и правильно дает фидбек, ты получаешь толчок в нужную сторону. Команда — важная составляющая, особенно тимлиды и синьоры. Даже если ты не Junior :)
Безусловно, в аутсорсе работа спокойнее: много компаний, проектов и задач. Но в то же время ты не видишь результата своей работы: а в продуктовой компании чувствуешь свою причастность. В аутсорсе клиент запрашивает продукт, и ты делаешь продукт для кого-то. А тут больше чувствуешь себя частью проекта. Но и ответственность выше... Как по мне, это только мотивирует показать себя с лучшей стороны.
Еще с SoftServe я работаю с Java enterprise (и сейчас продолжаю в SDK.finance): большие проекты, огромный объем информации, многие вещи нужно держать в голове, и это нелегко. Enterprise — значит, какая-то огромная и сложная система. Например, банковские или телеком-приложения, которые требуют много усилий, экспертизы и так далее. Нужно разобраться в доменной области, как и зачем работает приложение. Это требует многих скиллов. Приложения иногда пишут годами, потом вносят модификации, улучшают... Это огромные массивы кода — тысячи классов и миллионы строк.
Сейчас понимаю, что хочу дорасти до архитектора программного обеспечения: мне интересна тема микросервисной архитектуры, стараюсь в этом направлении развиваться. Пока нравится девелопмент. Понимаю, что следующей стадией развития может быть проджект-менеджмент, но не планирую становиться на эту стезю. Как интроверту мне идеально сидеть и работать за компьютером. Да, это моя зона комфорта и я из нее не выйду :) Но готов в ней развиваться. Поэтому и хочу остаться в разработке ПО — только в будущем немного сместить направление в сторону архитектора.
Опубліковано: 01/09/20 @ 10:00
Розділ Різне
Рекомендуємо:
Освічені, але зарозумілі: особливості українців у роботі з іноземцями
Набор на 8 поток моего курса SEO Шаолинь
Інженер на радянському ливарному заводі в 1980-х: про обслуговування ЕОМ, перший Robotron і дружну спільноту
Мой отчет о SEO конференции Baltic Digital Days 2020
Лікар-девопс. Як це — поєднувати медицину та роботу в IT