alex8894
34 уровень
Санкт-Петербург

20+ лет спустя или Я все-таки стал им! Часть 5

Пост из группы Архив info.javarush.ru
2599 участников
Окончание истории "бородатого эникея". Предыдущая часть тут.
И я им все таки стал!
Уважаемые коллеги, вам наверняка стало понятно, какая древнейшая профессия вмешалась в мои планы. Разумеется, речь идет о политике. Дела в фирме к тому времени обстояли «не очень»: увольнение разработчиков приняло массовый характер. Руководство сначала делало вид, что никакой проблемы нет, потом, в полном соответствии с положениями «прикладной мерфологии», начало проводить совещания, которые день ото дня становились все чаще, все длиннее и все бессмысленнее. Результатом совещания стало решение совещаться дальше... Когда оголились целые направления, были утрачены ключевые знания и из-за воцарившегося хаоса стали срываться сроки сдачи проектов, началась фаза «наведения порядка» и «закручивания гаек». И вот, во время моего отпуска руководитель разработки издал приказ, что для упорядочивания рабочего процесса, исключения дублирования чего-то и расширения повторного использования чего-то еще, разработчикам отныне запрещается контактировать с «внутренним заказчиком» напрямую, все коммуникации — только через руководителя и только в письменном виде, в соответствии с разработанным регламентом взаимодействия между… ну и так далее. Оказалось, «наверху» учинили большой разнос и потребовалось срочно изобразить кипучую деятельность. Все выглядело очень правильно и красиво, и была только одна загвоздка — «внутренним заказчиком», который работал с разработчиками напрямую, был я... Ну что же, не в первый раз принимаются подобные решения, найдем управу и тут, хотя будет, похоже, непросто. Я сел было за очередную служебную записку с предложением созвать совещание, а потом вдруг понял, что вместо траты времени и сил на дискуссии и писанину, надо просто рискнуть и выложить резюме прямо сейчас, не дожидаясь реального проекта. Надеюсь, знаний, полученных во время реализации тестового задания, хватит. Читал на нескольких форумах, в том числе на javarush, жалобы типа «выложил резюме — и не одного приглашения». Лично я ни разу не сталкивался с подобной ситуацией, и не только с резюме Java-разработчика, но и раньше. Правда, на написание резюме я тратил по два-три дня, многократно переделывая и улучшая текст. Всегда старался, чтобы резюме не превышало двух страниц и следовал правилу: компетенции и знания должны напрямую вытекать из списка выполненных работ. Иными словами, надо правильно себя позиционировать: пишешь «мидл» - покажи опыт работы и стек технологий, соответствующий мидлу. Не получается — значит ты пока еще не «мидл», нужны еще проекты. Опытный HR сразу увидит нестыковки и перед приглашением задаст уточняющие вопросы, а если дело все же дойдет до технического собеседования — еще хуже, получишь «черную метку» и на полгода-год про эту компанию можно будет забыть. Проверено на собственном опыте! ...Вот и первое приглашение. Зарубежная компания, расширяет в России свой центр разработки. Симпатичный лофт на последнем этаже бизнес-центра. Так, технического собеседования сегодня не будет. Приятно поговорили с HR, она показала презентацию о компании (все эти презентации, по-моему, делаются по общему шаблону). Фейс-контроль пройден успешно, теперь — тестовое задание. Ничего себе — аж несколько страниц текста, больше похоже на постановку немаленькой задачи. Нужно разработать веб-сервис со статистикой, чистый бэкэнд с явными признаками микросервиса, аутентификация, JSON, вроде ничего особо сложного, многое уже было в тестовом задании реального проекта, остальное — найдем. Погнали. Сделал за пару дней, все таки не на пустом месте. С тестами, с описанием — все как полагается. Пауза… ответ. Отрицательный. Что бывает крайне редко, сами написали, что именно не понравилось. На мой взгляд — чистые придирки, это же тестовое задание, а не реальный код, но спорить, понятно, бесполезно. Посидел еще несколько дней, отшлифовал код, исправил придирки и добавил ссылку на проект в резюме, решил что лишним не будет. Так оно потом и оказалось. Кстати, в этом проекте впервые в полную силу задействовал лямбды, изученные по книге «Java 8 Lambdas», эта тема совсем не затрагивается в курсе javarush. Между тем, по крайней мере на одном собеседовании это сыграло положительную роль. Потом был крупный отечественный разработчик ПО — вроде положительно, но я вряд ли хочу там работать, шило на мыло… Разработчик в ИТ-отдел небольшого банка, допиливать чужую банковскую систему под их требования. Не хочу, наелся выше крыши доработкой типовых конфигураций 1С. Впрочем, и само собеседование слил подчистую, задачи похожи на своих тезок из сертификационного экзамена по Java от Oracle, из серии — а как сработает такой говнокод, а такой? В жизни так не напишу и другим не дам. Еще один, теперь уже не очень большой, отечественный разработчик, но вроде продукт для зарубежного рынка. Скайп-собеседование, опять задачки. Ну не помню я, как sort() сортирует null-элементы. И писать так не буду, у меня будет NullObject, смысл городить кучу проверок на null в коде? Отказ. Полезный результат — разобрался со сравнением null-ов, да, это снова Java 8, которой не было в javarush. Но все равно не буду так писать. Дальше возникла пауза в несколько дней, за которую я осилил книгу о шаблонах проектирования от «банды четырех» и начал книгу про принципы S.O.L.I.D. Не уверен, что смогу по памяти реализовать все шаблоны, но ответить на вопросы скорее всего смогу. Про S.O.L.I.D., кстати, ни на одном собеседовании не спрашивали. Еще скайп-собеседование, о, пригодились шаблоны. Кстати, в книге названия шаблонов переведены, а в реальной жизни почти всегда используют только их оригинальные (англоязычные) названия. Какой самый часто встречающийся шаблон в Spring? Ответил — Proxy, вроде правильно. Еще пригодилась Java Memory Model, коллекции, многопоточность, Atomic-типы и ConcurrentHashMap. Все-таки умные люди делали javarush — 90% стандартных вопросов курс охватывает. Так, вроде положительно, но оказывается это было так, еще не собеседование, а основное собеседование будет с заказчиком. Неожиданный результат — прислали список вопросов, по которым мне стоит подготовиться. Это всегда готов, учиться я люблю и собеседования пока воспринимаю в основном как бесплатную учебу. Подготовился. Много интересного узнал про SQL, про A.C.I.D., про Spring и про concurrency. Собеседование с заказчиком из другого города, по скайпу. Ух ты, как интересно, уровень собеседующего явно очень высокий. Сначала все стандартные вопросы, ну, на память не жалуюсь, все ответил без запинки. Дальше пошли уже незнакомые мне вещи. Например, всегда ли надо применять Atomic-типы, или синхронизация может оказаться быстрее? Ответил неправильно, но зато после собеседования узнал про LongAdder - еще одну часть concurrency из Java 8, не охваченная javarush. Этакий lock-splitting для счетчиков. Сколько же еще неведомого для меня есть в Java Core? Потом были еще собеседования, очные и по скайпу, но как-то ничем они не запомнились. Вопросы были в основном стандартные, я к тому времени выучил их наизусть. После каждого собеседования проверял все ответы, в которых сомневался, но ничего особо нового больше не узнал. Были и какие-то офферы, но неинтересные, хотелось качественного скачка - попасть в сильную команду на интересный проект, чтобы развиваться дальше. Скайп-собеседования отнимают меньше времени, чем очные, но зато при очных собеседованиях можно оценить время на дорогу с учетом пробок и попросить показать будущее (возможное) рабочее место. В основном везде openspace, хотя разных размеров — бывало и 15, и 50 человек в комнате. И плотность размещения совершенно разная — где-то набиты «как сельди в бочке», где-то вполне свободно. Когда приходишь в конце рабочего дня, можно понять — душно или вентиляции хватает, хотя как оно будет летом — еще неизвестно. Где-то есть комнаты отдыха, где-то нет — а ведь иногда хочется встать и немного походить-подумать. Потом начал нагло просить сделать мне кофе — и иногда узнавал, что обещанная кофе-машина «вот именно сейчас» в ремонте. Все это, конечно, мелочи по-отдельности, но позволяют составить довольно точное представление о компании. На очередном собеседовании проверили мой уровень английского. Мда, на общежитейские темы мне разговаривать тяжеловато. Впрочем, мне показалось, что мой «экзаменатор» сам бы провалил подобный экзамен. Очередной опыт в копилку и очередной отказ. Решил устроить себе «погружение» в языковую среду. Недели две про все, что видел вокруг, думал по-английски, сам с собой разговаривал по-английски и перечитал в оригинале какой-то детектив. Активно вспоминал слова и пополнял словарный запас. Все забывается, если не пользоваться постоянно, и английский — не исключение. Параллельно с собеседованиями продолжал проходить javarush, дошел (уже честно) до 30-го уровня и пошел дальше, остановился где-то на 35-м. После тестовых заданий новых знаний было уже не очень много, но зато была постоянная практика в кодинге. Собеседование в той фирме, где я и работаю сейчас, прошло как-то совершенно буднично. Руководитель разработки задал пару вопросов на тему, как бы я реализовал такую-то функцию, естественно, на тему concurrency. Я вроде ответил, потому что когда-то сталкивался с похожей задачей и, помнится, довольно долго провозился, ища наилучшее решение. Вопросы быстро кончились и я решил, что как кандидат оказался неинтересен. Тем большим было мое удивление, когда на следующий день мне прислали оффер с очень приличными условиями. Но оставалось еще одно собеседование, совершенно необычное для меня. Зарубежная компания, создает в России центр разработки. Просили резюме на английском. Напрягся, написал, вряд-ли по всем правилам, но лучше так, чем никак. И вот, они хотят провести собеседование по скайпу на английском. А, чем черт не шутит — попробую, отказаться всегда можно. От этого собеседования я получил огромное удовольствие, надеюсь, противоположная сторона - тоже. Пообщался и с PM-ом, и с Lead Developer'ом, и даже (чего уж совсем не ожидал) - с CEO. Все — очень приятные и вежливые люди. Выяснилось, что разговор на английском по специальности меня совсем не напрягает, потому что после прошлой неудачи я боялся, что все силы будут уходить на понимание и построение фраз, а думать будет некогда. Ответил на все вопросы, вывалив на них заодно и многое из того, что узнал на javarush и при прохождении других собеседований. Оффер у меня уже был, результат этого собеседования был не так уж важен, волноваться было незачем, и это дало неожиданный результат. Хотя почему неожиданный? В жизни постоянно бывает так, что когда работа нужна срочно, ее нет, а когда уже не нужна — предложения идут одно за другим. Короче говоря, на следующий день я получил второй оффер и оказался перед исключительно сложным, хотя и приятным, выбором. Оба предложения были крайне интересны, и каждое — по своему, но принять можно было только одно. Собственно, на этом моя история пока заканчивается. Нынешний проект — в микросервисной архитектуре, основан на открытом ПО, с правильно выстроенным процессом разработки, со SCRUM и CI — словом, все то, о чем я и мечтал. Уровень владения технологиями у сеньоров конечно совершенно заоблачный, мне до него еще расти и расти. Постоянно узнаю новое и от Java-разработчиков, и от тестировщиков, и от фронтендеров. Прав был тот, кто сказал, что лишних знаний не бывает - пригодилось очень многое из опыта «эникея» и Linux-админа, потому что разработка ведется и под Windows, и под Linux, и даже на Mac. Кстати говоря, все сеньоры и многие мидлы знают Linux (хотя сами часто предпочитают вести разработку под Windows) и при необходимости вполне заменяют DevOps'ов. Недавно, разбирая книжный шкаф, обнаружил ту самую «Философию Java», с которой началось мое первое (неудачное) знакомство с Java. С удовольствием пролистал ее — как много с тех пор изменилось и в языке, и в фреймворках! Теперь-то я понимаю, как написать веб-версию складской программы с таблицами, формами и отчетами, хотя конечно не буду использовать описанные в этой книге JSP, EJB и JDBC, есть куда более мощные и современные инструменты. Вы, возможно, спросите — а где рассказ о реальном проекте? К сожалению, рассказать нечего, потому что получилось как в анекдоте: «я контролера обманул — билет купил, а сам не поехал». Успел сделать только подготовительное задание к 1-му занятию, то, которое на лямбдах. Потом стало некогда, а позже — и незачем, большинство backend-технологий, рассматриваемых в нем, пришлось изучать уже в «боевой обстановке», на новой работе, а frontend там малоактуален. Тем не менее, свою роль он, я считаю, выполнил — ведь без реального проекта не было бы тестового задания, с которого все и началось.