🗣 Путь в Java, или Зачем нужен ментор: интервью
Поговорили с Java-разработчиком Анатолием Марандюком. О выборе Java, курсах, собеседованиях и хобби-проектах. Анатолий готов ответить на ваши вопросы в комментариях к посту.
Б.П.: Привет! Расскажи для наших читателей, чем ты сейчас занимаешься и где работаешь.
А.М.: Привет! Я сейчас занимаюсь разработкой middleware-сервисов одного крупного коммерческого банка России. В моих руках изменение всяких важных пользовательских данных вроде паспорта, номера телефона и кодового слова.
В качестве хобби веду свой проект. Верю и надеюсь, что когда-нибудь приведу его к коммерческому успеху. Но пока что просто пробую себя в роли тимлида.
Б.П.: Не поделишься, о чем этот хобби-проект?
А.М.: Мы с женой хотим открыть зоогостиницу, в которой можно будет дистанционно следить и ухаживать за своим питомцем. Сам проект — полноценная CRM для управления бизнес-процессами в зоогостинице плюс интеграция с IoT-устройствами.
Б.П.: Какое у тебя образование? Как ты пришел в профессию?
А.М.: У меня высшее образование по специальности “Программная инженерия”, я получил диплом уже после того, как начал работать. В универе я лепил всякие поделки на С++ и Go, искал себя в разработке инди игр на UE и Unity.
Это было весело и интересно, но совсем бесплатно. Пытался подружиться с микроконтроллерами, но моих технических знаний, которые бы не касались алгоритмов и структур данных, дико не хватало.
Преподавал на курсах по С++ для школьников и студентов при универе, потому что единственное, что я умел — это много разговаривать и чуть-чуть писать на плюсах. Но преподавание позволяло получать хоть какие-то деньги.
Все равно, как и перед каждым выпускником, на горизонте передо мной витал призрак работы не по специальности, поэтому я старался найти область, в которой можно было бы конвертировать свои знания в деньги. После попыток в SMM и продвижение в соцсетях быстро вернулся на праведную тропу, и погрузился в мир Java-разработки.
Б.П.: Почему ты выбрал Java? Как человек, который преподавал C++, не мог бы ты сравнить для новичков два этих языка?
А.М.: С++ суров, в нем не место мальчикам, только суровые бородатые мужчины. Java открыта всем и каждому, приятно улыбается каждому встречному и прощает отсутствие базы по Computer Science. Можно учиться многим вещам на практике, а потом уже узнавать о том, как же оно на самом деле работает внутри.
Я выбрал Java, потому что раньше у меня не было бороды :) А если серьезно, то я не понимал как развиваться дальше и найти хорошую работу, пришлось прибегнуть к помощи хороших людей, но они обучали только Java.
Б.П.: Нас с тобой свели Java Mentor, так что если ты не против, давай немного поговорим о них. Ты учился на курсе по системе оплаты после трудоустройства. Не было ли каких-то опасений на этот счет, когда поступал?
А.М.: Конечно были опасения, формат оплаты после трудоустройства не то, что не пробовал никто из знакомых — о нем даже никто не слышал пару лет назад. У JM еще не было так много отзывов, да и по сути я был в числе тех, на ком этот формат тестировали. Мои опасения развеял Герман, он чертовски убедительно умеет доносить свои мысли. Да и договор мне показался не самым страшным.
Б.П.: Сколько длились курсы и что ты на них изучал? Почему выбрал именно их?
А.М.: Призываю сюда сотрудника JM, который бы с праведным гневом бросился объяснять, что это не курсы. Это персональный менторинг. Я учился быть универсальным солдатом энтерпрайза: Java, Spring, SQL, Git, Agile. Достаточно глубоко, чтобы свободно плавать в теме и учиться самому при необходимости в будущем, но без копаний в недрах технологий и фреймворков, чтобы уложиться плюс-минус за полгода.
Выбор между курсами не стоял: я был скептически настроен относительно полезности онлайн-курсов, а менторинг на их фоне выглядел хорошо. Какой-то умный человек будет ответственным за мое обучение, отчего бы и не согласиться?
Б.П.: Сколько часов в неделю уходило? Что было самым сложным?
А.М.: В неделю учебе уделял точно больше 20 часов, даже ближе к 30, наверное. У меня нет проблем с мотивацией, даже наоборот. И самым сложным было успевать (и не забывать) справляться с ежедневными делами: работа, учеба, быт.
Б.П.: Как ты оцениваешь уровень преподавания? Какие основные плюсы и минусы?
А.М.: Сложно дать оценку уровню преподавания, потому что менторов много, а мне пришлось поработать только с четырьмя. Они крутые, мастера своего дела, никогда лишнего не скажут, всегда дадут простор для реализаций своих потуг. С некоторыми даже по работе довелось пересечься.
На мой вкус, было бы неплохо еще готовить студентов к рабочим реалиям, которые связаны с DevOps. Хотя бы чуть-чуть: небольшой CI-пайплайн настроить, «репу » с артефактами к проекту прикрутить. Да даже задеплоить свой недурно написанный апликейшн хоть куда-нибудь и столкнуться с проблемами, которые неминуемо при этом возникают.
Б.П.: Чем закончилось обучение? Ты получил какой-то профит от курсов, кроме самих знаний? Может быть, с кем-то познакомился или приобрел какие-то другие навыки?
А.М.: Обучение закончилось логично — трудоустройством. Кроме технических знаний, я приобрел много знаний о рынке IT-вакансий, научился в нем ориентироваться и понимать, чего можно ждать от разных проектов, предметных областей и технологий.
Со многими студентами JM хорошо общаюсь до сих пор, в частности с ребятами с буткемпа, который проводит JM. В основном на профессиональные темы, но иногда не только. Вокруг JM уже довольно большое комьюнити, в котором много интересных людей — всем, кто сейчас начинает учиться, рекомендую в него активно интегрироваться.
Б.П.: Как быстро нашел работу? Сколько было собеседований?
А.М.: Работу нашел довольно быстро. Собеседований прошел около 5-7. Согласился на не самое шикарное предложение в пользу работы в большой компании, которая занимается аутсорсом. Не сильно об этом жалею, потому что это позволило приобщиться к культуре разработки и быстро расти, принимая участие в разработке разных проектов.
Б.П.: Какие самые каверзные вопросы были на собеседованиях?
А.М.: С некоторых пор самые каверзные вопросы я сам задаю собеседующим. По большей части они касаются нюансов моей потенциальной работы на проекте. Что-то в духе: «Есть ли в команде свой саппорт, или мне придется самому с утра до ночи в логах с прода разбираться?»
Б.П.: Кстати, а если серьезно — на что стоит чаще обращать внимание Java-джуониром для подготовки к собеседованиям?
А.М.: Безусловно на чек-лист вопросов к собеседованиям. Их полно в интернете, и ими пользуются собеседующие в том числе. Редко у кого хватает фантазии и желания вникнуть в ваш предыдущий опыт и расспросить, как вы добивались поставленной цели, какие технологии пробовали для решения, какие альтернативы рассматривали. Но к таким вопросам стоит быть готовым. Если об этом спрашивают, то скорее всего вас ждет потенциально интересная работа в коллективе профессионалов.
Б.П.: Как юридически оформлена постоплата курса? За какое время ты его оплатил?
А.М.: Юридически договор не сложный, на мой взгляд. Условия такие же простые, как о них изначально заявляют: процент от зарплаты при работе в IT в течение двух лет после обучения и успешного трудоустройства. Я, честно, не представляю как доказать в рамках договора, что ты прошел n собеседований и тебя никуда не взяли, не знаю случалось ли такое с кем-то, но это единственный момент, который меня в нем на самом деле смущал.
Я заплатил неустойку после первого месяца работы, потому что это было выгоднее, чем проценты каждый месяц. Да и в целом ценник в 300 тысяч выглядел справедливо (и тут я приготовился читать комментарии в духе «в интернете вся информация бесплатно, можно и самому научиться»). Сегодня каждый второй учит программированию, дешево или вовсе бесплатно. Меня научили не только писать код, а зарабатывать на этом хорошие деньги, дали понимание о том, как эффективно и быстро развиваться в современных реалиях индустрии. На дистанции это уже многократно окупилось.
Б.П.: Поговорим о языке. Java всё ещё топ? Что думаешь о Kotlin и других современных альтернативах?
А.М.: Последнее время люблю писать на Kotlin, но если честно признаться: я далек от Kotlin-евангелистов и не использую его мощь на полную. Для меня это просто немногословная, удобная обертка на Java с кучей простых и понятных фич, которые хотелось бы видеть в Java (но их нет ): ). Очень жду, когда в Java завезут nullable-типы, extension’ы и аргументы по умолчанию.
Б.П.: Что посоветуешь почитать начинающему Java-разработчику?
А.М.: Для совсем начинающих я бы порекомендовал Шилдта, в его книгах грамотно структурирована информация. Мне когда-то отдельные главы помогли разобраться с исключениями, коллекциями и многопоточностью. В частности ответить на вопрос «Зачем?», потому что «Как?» я уже знал.
Для продолжающих порекомендовал бы «Spring. Все паттерны проектирования». Если уже руками пощупал Spring, но пока не осознаешь всей его мощи или вовсе не понимаешь, зачем он нужен — эта книга может помочь.
Б.П.: Если бы ты начинал учиться программированию сейчас, какой бы язык выбрал?
А.М.: Я бы стал джаваскриптизером. Иногда душа просит что-то красивое сделать на фронте, но как только я начинаю писать, то компилятор в голове, обученный на С и Java, с отвращением сигнализирует об отсутствии типов и здравого смысла. На этом мои потуги обычно заканчиваются :D
Б.П.: Какие технологии используешь в своей работе? Какие библиотеки и программные решения считаешь недооцененными?
А.М.: В работе использую то, что приходится. Большие дяди, которые делают бизнес, не очень любят новаторские идеи. От проекта к проекту технологии, конечно, разные, но в основном все около стека Spring, Webflux, Postgre, Mongo, Kafka, Redis.Я поклонник АОП, но мне не дают внедрять его где попало (и правильно, хе-хе), поэтому развлекаюсь исключительно для себя. Надеюсь, скоро явлю миру удобный АОП-стартер для интеграционного тестирования.
Б.П.: Посоветуй что-нибудь новичкам в разработке. То, что поможет в обучении или просто чем хочется поделиться.
А.М.: Я бы посоветовал искать вокруг себя умных людей, профессионалов в своем деле. Чаще всего они не против помочь в самых разных вопросах и поделиться своим опытом. Пусть они называют себя менторами или еще как-то, это неважно.
Б.П.: Напоследок, какие у тебя дальнейшие планы?
А.М.: Со временем хочу попробовать себя в роли тимлида на коммерческом проекте. Пока что стараюсь брать на себя чуть больше обязанностей, чем просто реализация фич, чтобы переход в менеджеры был не сильно болезненным.
Б.П.: Спасибо за интервью! Могут ли читатели Библиотеки программиста сами задать вопросы? Не против ответить в комментариях?
А.М.: И вам спасибо за внимание. Конечно не против, жду ваших вопросов.