Всем добрый день. Сегодня утром, полистывая статьи на Хабре, я наткнулся на истории карьерных неуспехов и подумал: почему бы мне не рассказать историю своих мытарств в 2022-2023? Честно признаюсь, получилось текста больше чем я планировал, но вроде вышло неплохо. И так, начнем:

Предыстория и пара слов о себе

Я разработчик с 6 годами опыта работы под android (до этого было еще 3 года разношёрстных технологий от реверс-инжиниринга до веба, пока я был в поиске милой моему сердцу области). Начинал я свою android карьеру в международной outsource-компании Аркадия, 95% заказчиков были из-за рубежа (не сложно себе представить что с ними сделал 2022 год). За 2 года работы в компании, я поднабрался опыта, и одновременно подустал от прыжков между проектами. Мне захотелось роста и чего-то постоянного. Не долго думая, я отнес заявление на увольнение (решил для себя, что буду готовиться в Яндекс), как вдруг, буквально спустя 10 минут мне написал знакомый в скайпе и позвал в иностранный проект. Вот так чудо! Да еще и единственным android разработчиком! Конечно, я согласился. Безусловно мне повезло, но при этом я понимал возложенную на меня ответственность: на тот момент я был лишь middle разработчиком, знаний явно было недостаточно, но с другой стороны было рвение сделать нечто крутое и сделать все правильно, а главное: я знал, что мне это по силам.

Следующие 3.5 года я проработал в компании Carol bike. За это время проект прошел путь от Cordova-проекта (это ответвление от React Native) до нативного многомодульного проекта с MVVM, DI, корутинами, room, retrofit, single activity app, полным покрытием тестами и документацией - в общем полный фарш. Команда android разработки выросла до 3 человек, мы отладили бизнес процессы, а я превратился в лида. Вроде все здорово, но я стал выгорать. Последний год я работал буквально через силу. Обычно наш рабочий день длился 10-11 часов, и это изрядно меня стало напрягать. 2022 год мою жизнь лучше не сделал - коллеги стали переносить ИП в соседние страны, а я на это сил в себе не находил.

В сентябре 2022, буквально за вечер я решил, что с меня хватит и написал заявление на увольнение. Отработав положенные 4 недели по контракту, 1 октября 2022 я ушел в свободное плаванье. Казалось бы опыт вполне приличный, и я легко смогу найти работу в любой компании, но... все оказалось не так просто.

25 компаний, 54 этапа, 2 оффера

Пробездельничав 2 месяца, и едва не попав под мобилизацию, я решил, что пора искать работу. Не сказать, что я отдохнул и восстановился, скорее просто перестал думать о смерти каждый день (шутка!). Мне действительно требовался отдых, но на работу гнала нужда. Ох, уж эта нужда) Дальше поиск работы проходил волнами:

Волна первая. Поиск из Санкт-Петербурга

Никуда не переезжая, я решил попробовать устроиться либо в Яндекс (hr-ы из Яндекса упорно штурмовали меня весь последний год), либо в Авиасеилс (реклама дешевых авиабилетов). Поготовившись буквально один день я довольно бодро прошел 2 этапа в Яндекс и завалился на алгоритмах. Причем задачка была тривиальной, я уже месяц как гонял литкод, и наверняка бы ее решил, если бы не поставил два собеса в один день. Алгоритмы были в 6-7 вечера и мой мозг их не вытянул. С Авиасеилс все оказалось короче - на собесе мы друг друга не понимали, ходили вокруг да около - мы явно с ребятами оказались на разных волнах. Закончив с ними собес, я сразу же отказался, написав об этом их HR. "Бывает, — подумал я", и решил, что отдохну еще немного и попытаю удачу в других компаниях после нового года.

Перерыв и волна вторая. Казахстан, Тараз

В январе 2023 я уехал в РК. Можно сказать, я вернулся к тому, с чего начал: в 2012 я уехал из Тараза в Санкт-Петербург получать высшее образование, в декабре 2021 наконец-таки (!) получил паспорт РФ, в начале февраля 2022 сдал паспорт РК, а в уже январе 2023 году вернулся туда откуда начал - десятилетний круг замкнулся. Вот это ирония, вот это я понимаю.

На новогодние праздники я решил немного посидеть со своим пет-проектом (веду его с 2018 года) и к своему ужасу понял, что за 2 месяца безделья я стал забывать некоторые простые вещи. Чтобы встрепенуться, я решил обновить проект - завезти в него многомодульность, покрыть код тестами и котлин документацией. План был надежен как швейцарские часы: я отправляю ссылку на пет-проект, будущие коллеги смотрят код, понимают, что перед ними ответственный работник - я получал оффер. Идеально! Спойлер - нет, это так не работает. Как я узнал в будущем из статистики проекта на гит-хабе, большинство из них даже не стягивало проект с гита, а те, кто заходил, дальше первой страницы не уходили. Вот это меня поразило больше всего. Биг-техи тратят миллионы на HR, собесы, а собеседующим лень посмотреть код и резюме заранее - они делают это либо перед собесом (если делают), либо просят повторить тебя все прямо на собеседовании. Это конечно стало для меня шоком.

В феврале 2023 я прошел в шорт лист 6 компаний:

MetaQ - кипрский фин-тех. Без собеса прислали тестовое задание, я бросился его делать, но потом понял, что погорячился - это явно неправильный подход - посылать тестовое задание всем подряд, и проверять тех, кто сделал. (0 этапов, 2 потраченных дня)

Exness - еще одна кипрская фин-тех компания. Прошел все этапы, получил в итоге отказ после финалки. После долгого вытягивания причин из HR, получил ответ что-то вроде: "Вы к нам из-за релокации хотите, поэтому вы нам не подходите". Ну, и что?) Вам то какое дело куда я хочу?) Я наемник - вы наниматель, вы платите - я делаю, остальное от лукавого. (4 этапа)

Был неприятно удивлен, почувствовал себя просто пешкой в чужой игре. Кому-то что-то показалось, и вот я получил отказ - нехорошо.

Wheely - Uber для богатых. Кипр. Пообщался с командой - они мне не подошли. Ребята с очень специфичным виденьем redux архитектуры на view вместо фрагментов. Но android compose почему-то не рассматривают. Отказался сам после общения с командой. (2 этапа)

tango me - еще одна кипрская компания. Довольно приятная команда. Дошел до финального собеса, но отказался. Компания сильно затянула с финалкой, почти на месяц. В апреле, насмотревшись на знакомых и родню в РК с собственными бизнесами, я решил, что должен последовать их примеру. С одной стороны у меня явно выраженные лидерские качества, а с другой я отчетливо понимаю, что меня в то время сильно штормило. Действительно все было не очень хорошо, и я порой сам не знал что делал. Просто кидался на все - лишь бы появилась какая-та стабильность. Что же, и такой этап был в моей жизни - пишу как есть. (2 этапа)

Третья волна. Казахстан, Тараз

Я посчитал, что мне просто не повезло - такое иногда бывает, главное не отпускать руки и биться дальше. За неделю или две я собрал второй крупный пулл компаний, слегка изменив вектор поиска: я все еще был ориентирован на удаленную работу с Европой через ИП, но так же рассматривал компании с офисами в РК.

ParadoxCat - маленький бриллиантик, что мне встретился. Классная компания из Германии с релокацией. К моему большому сожалению - я не справился с тестовым заданием. У меня так и не получилось конвертировать wav в mp3, уж извините это к android прямого отношения не имеет. Потратив два дня, я понял, что даже если сдам задание к концу недели, то в топ лист уже не попаду. Жаль конечно, но пул тогда был полон и я их отпустил. (1 этап, 2 дня)

Avito - эти ребята в представлении не нуждаются. Все было классно и я был уверен на 95%, что будет офер, но его не случилось. Я прошел 5 этапов за неделю и вылетел наружу как пробка от шампанского. Смешно. В любом случае компания мне понравилась. Да, в отказе HR сказал, что они взяли парня в команду архитектуры из одной из своих команд, но почему бы не предложить мне место в любой другой команде? Здесь я впервые понял, что своим напором могу отпугивать потенциальных работодателей. С другой стороны, а что я могу с этим поделать? Если им нужны исполнители, а не лидеры, я их пониманию. Не подойду им, подойду другим. (5 этапов)

OZON - эти ребята запомнились худшим собесом за все 52 этапа. Первые два этапа прошли как по маслу, а третий собес больше напоминал демонстрацию знаний одного из юных собеседующих, нежели мою проверку. Он ужасался, что я не знаю всех операторов в Котлин (any, all и т.д, считал это must have). Его коллега пытался как-то выстроить диалог, но разговор не клеился. Мне показалось, что компания ожидала увидеть в моем лице никак не меньше второго Кирилла Розова, и потому бросила свои лучшие акулы в бой, а увидела только меня - неплохого сеньера с неплохими знаниями. (3 этапа)

Вообще я заметил, что лучшие собеседующие - это люди от 30, а лучше 40+. У молодых разрабов горячая кровь, больное самолюбие и чаще всего им не хватает опыта проверить кандидата как следует. Они спрашивают тонкости, но спрашивают их поверхностно, словно это вопросы из тестовика (за исключение Тинькофа - там ребята хоть и были молодые, но собес вели очень грамотно).

VK - здесь я скорее пришел из любопытства на day offer. Было интересно узнать немного об их кухне и показать себя. Я не прошел. Команда была очень сильная, на мой взгляд сильнейшая из тех, с кем я общался. Да, это команда была архитектурная. Получил опыт, подтянул слабые места (они сильно пробили брешь в моих знаниях, в том числе о том, "как работает main looper под капотом"). (2 этапа)

Whisp - интересный проект с полной удаленкой. 8 человек в команде, схожий со мной стек. И тут я завалил собес начисто. Не знаю, что со мной тогда случилось, но я ошибался в каждой мелочи вплоть до того, что коллега спросил меня: SharedFlow и StateFlow - опиши их. Я описал flow, параметры в конструкторах, но строго наоборот, перепутав одно с другим, и это при условии, что я чуть ли их не каждый день использовал в повседневной работе. Они трижды меня спрашивали, точно ли так, и я трижды с готовностью отвечал, что все точно так!) Случается и такое. Нельзя же все и всегда делать хорошо?) (2 этапа)

CSSSR - полная удаленка. Проект заморозили на этапе собеса. Спасибо, что это случилось на собесе, а не после того как я устроился. (2 этапа)

Stork - полная удаленка, компания делает продукт по уникальному контенту. Расшарили человека из другой команды. В этой компании я даже тех-собес не успел пройти. (2 этапа)

SoundBand - музыкальная компания с Сингапура. Собесы прошли неплохо, не скажу, что они были сложными, но приглашения на финалку я не получил. Честно говоря, это не удивительно - на внешнем рынке хоть тогда, хоть сейчас творится настоящая мясорубка. (2 этапа)

Третья волна была огромной по моим меркам, и я думал, что теперь-то уж точно найду работу, но нет. Начался март, а кроме стресса я ничего не получил.

Четвертая волна. Где-то посреди Индонезии

Четвертый пулл я собирал уже кое-как. Хоть я и сильный боец, но проигрывать в таких конских количествах не привык. Следующий мем отлично описывает мое состояние перед каждым следующим собеседованием:

Эти эмоциональные качели выбивают напрочь почву из под ног, но если ты достаточно силен, ты просто продолжаешь двигаться дальше и дальше, и так до результата.

Emphasoft - полная удаленка. Компания-прокладка между банком в РФ и мною. Они берут с тебя процент, но за то ты можешь работать из любой точки мира (оплата рублями). Минус таких компаний в их ненадежности - до тех пор, пока ты не подписал контракт, все в любой момент может закончиться. Я прошел тех собесы с outsource-интервьюверами и банк остановил с ними контракт или что-то типо того. Мимо. (2 этапа)

Remokate - классный продукт с ИИ содержимым. Сначала позвали на собес, а через 2 часа написали, что сформировали шорт лист без меня)))

Quokka - компания из Швеции, занимается разработкой софта для автомобильных компаний. Визу нужно было делать строго в Москве, а возвращаться назад, чтобы потом не выехать мне как-то не хотелось (1 этап)

IFunny - последняя кипрская компания, с которой я согласился общаться. Прошел тех собес, после чего HR что-то себе надумала, решила, что я хочу работать из Вьетнама (мы были с женой в отпуске), я пытался ей объяснить, что вернусь в удобный часовой пояс, но она меня не слушала и в итоге прислала отказ от себя. Это был худший hr за все время моей карьеры. Она буквально пробила дно своей некомпетентностью... В общем, финалка сорвалась. (2 этапа)

Тинькоф - отличная компания, отличные спецы. Здесь я явно плохо подготовился к собесу. Последние 2 месяца к этому моменту я вообще не касался андроида и писал на flutter (хобби такое появилось). В результате я завалил кусок с курутинами на втором тех-собесе и конечно же они меня послали. Ребята классные, в любом случае респект. (3 этапа)

Blinkist - еще одна немецкая компания с релокацией. Успел поговорить только с HR. 450 кандидатов на одно место. В шорт лист я не прошел. (1 этап)

Пятая волна. Где-то посреди Индонезии

Где-то здесь я решил, что буду общаться со всеми, кто мне напишет.

HeadHunder - насколько я знаю, здесь сильная команда, но пишут они на rxjava, с чем я глубокого опыта не имею. В 2019 вышли курутины и с тех пор я rx не касался. Поболтал с HR, до этапа тех собеса не дошли из-за разницы стеков (1 этап)

DocuScetch - компания из Сербии. Общался с их HR пока тот ехал в такси (HR, никогда, никогда так не делайте! Это не круто!). Пропали с горизонта до тех собеса. (1 этап)

Humanoo - еще одна немецкая компания с неплохим продуктом. Снова отказ через неделю на этапе отбора (английский у меня неплохой, т.ч. дело не в этом. Скорее взяли человека поближе) (1 этап)

Profee - компания собирает свою продуктовую команду. Интервьювер был со стороны. Интервью было классное, вел он его грамотно, но приглашения на финалку я не получил - со ссылкой на интервьювера, у меня не достаточно широкий кругозор. Возможно (RxJava, KMM - с этим у меня опыта почти нет) (1 этап)

Yandex - снова Яндекс. Страшно сказать, но прошло полгода с нашего последнего общения, а я все еще был в поисках. Так как первые два этапа я уже сдавал, мне разрешили досдать алгоритмы, что я успешно сделал, и после финалки в одну из команд были готовы дать оффер, но я уже принял оффер от другой компании (наложилось на одну неделю). (3 этапа)

Base track - компания занимается автопилотами и оптимизацией расхода топлива для грузовиков. Им нужен был разраб для второго продукта. Прошел 3 этапа, легко получил оффер с релокация в ОАЭ и достойной зп в дирхамах. (3 этапа)

Теперь я где-то здесь:

Думаю, ничего невозможного нет :-) Можно сделать все, главное, терпение и труд. Если вам сейчас приходится нелегко - не переживайте. У вас все получится, если вы будете достаточно упорны в достижении своей цели. Джуан Роулинг пыталась опубликовать Гарри Поттера 15 раз, т.е. 14 редакций подряд сочли Гарри Поттера бредом)) Если бы они знали, как они ошиблись ;) Если вам отказали, может быть это просто не ваше место или не ваши люди? Не занимайте чужого места, ищите свое. Удачи Вам!

Спасибо всем, кто дочитал до конца мой камин-аут. Если кому-то интересно посмотреть на мой код, милости прошу к моему шалашу. Всем хороших выходных!

P.S. Бонусом прикрепляю свой конспект по подготовке к собесам. Делал для себя, все можно найти в открытых источниках, но возможно кому-то будет полезно. Приношу свои искренние извинения за грамотность - русскому я учился 2 раза в неделю в отличие от россиян. Что поделать - поправил, что смог.

Комментарии (95)


  1. laatoo
    30.07.2023 15:54
    +10

    Я разработчик с 6 годами опыта работы
    25 компаний, 54 этапа, 2 оффера

    Тоже сейчас ищу работу, от этих цифр страшно.
    Понял что на мои 4 "отлично поговорили, мы вам перезвоним" за неделю уповать не стоит, открыл hh, и начал "спамить" (ну, в хорошем смысле) откликами.

    большинство из них даже не стягивало проект с гита, а те, кто заходил, дальше первой страницы не уходили.

    Из моих собесов только половина hr с резюме ознакомилась (держа распечатанный листок на столе), что становится понятно в ходе беседы


    1. Georrg Автор
      30.07.2023 15:54

      Удачи с поиском, у вас обязательно все получиться!


    1. Borkau
      30.07.2023 15:54
      +2

      Из моих собесов только половина hr с резюме ознакомилась (держа распечатанный листок на столе), что становится понятно в ходе беседы

      О, да.
      Сначала "Мы очень внимательно ознакомились с Вашим резюме и нам очень понравился Ваш опыт, не могли бы вы написать в телеграм %randomUser%, чтобы продолжить общение?".

      А потом: "У меня осталось пара вопросов:
      1. На каком языке вы пишите?
      2. Ваш пол, возраст, место жительства?"

      Классика.


      1. radtie
        30.07.2023 15:54
        +2

        А еще очень обижаются:

        Как вы не знаете что мы за компания? Вы могли бы подготовится и прочитать про нас в интернете!

        Мы, вообще то, входим в тысячу крупнейших производителей пластиковой посуды юго-восточной Африки.


      1. laatoo
        30.07.2023 15:54
        +2

        Не стоит к этому слишком серьезно относиться. Этот ответ просто шаблон, читай как "ну да, давай поговорим".


    1. mayorovp
      30.07.2023 15:54

      "отлично поговорили, мы вам перезвоним"

      Да тут и так понятно что уповать не стоит. Но вот что даже фраза "мы готовы предложить вам работу, только нужна подпись гендиректора" ещё не означает оффера...


  1. Georrg Автор
    30.07.2023 15:54
    +4

    @latooИзвините, я не туда нажал и случайно отклонил ваш комментарий (а может быть и не ваш, я уже сам не уверен))) Там было что-то вроде "почему я хочу работать в больших компаниях, а не одиночкой" насколько я успел запонить. В целом я и в том и в другом варианте вижу для себя плюсы. Каждый из них приносит свой опыт и развивает меня в какую-то новую сторону. В большой корпорации ты видишь кухню изнутри и это неплохо, чтобы потом построить свою кухню, взяв у них лучшее. К тому же в больших компаниях ты редко урабатываешься до потери пульса. С другой стороны, в маленькой компании, у тебя развязаны руки - ты сам определяешь вектор развития проекта и нужный стек. Ты не просто муравей исполнитель, но автор и творец и это здорово. У меня нет предвзятости, я могу быть и тем и другим, если компании хорошо платит


    1. MichaelSkirda
      30.07.2023 15:54

      Не хватает очень опции автоматически принимать все комментарии под статьей. Я когда первые статьи писал даже не знал, что некоторые нужно в ручную принимать.


      1. mayorovp
        30.07.2023 15:54

        И не должно быть, потому что комментарии не просто так скрываются. На авторов постов так "повесили" обязанность определения адекватности участника.


        Если что, 10 принятых разными участниками комментариев дают участнику возможность писать комментарии без премодерации.


        1. Areso
          30.07.2023 15:54
          +1

          если автор долго не "одобряет", это делает дежурный модератор (на усмотрение модера, конечно).


  1. Abobcum
    30.07.2023 15:54
    +2

    Так в итоге сколько из этапов заключалось в решении задачек из егэ по информатике и финальный оффер вам тоже дали за задачки?


    1. Georrg Автор
      30.07.2023 15:54
      +4

      Задачки спрашивали в Яндексе, Озоне, Exness, Tango me и Avito. Большинство по моему опыту обходятся без них. Компания, в которую я пошел задачек не давала. Лучшие из проверяющих по моему опыту стараются заставить кандидата говорить и думать, проектировать что-то новое, не связанное с их целевым продуктом (!). Это действительно важно, потому как в итоге думают оба и получается диалог. Средней руки интервьюеры предлагают спроектировать часть их собственного продукта, что на мой взгляд не честно, ведь они имеют преимущество в своем продукте и заранее знают, если не единственно правильный, то один из лучших ответов. В таком случае кандидат всегда стоит на ступеньку ниже и должен угадать, какое же решение авторы придумали? Задачки, положа руку на сердце, я считаю рудиментом - они никак не показывают уровень разработчика, если его работа не писать алгоритмы. С таким же успехом мы могли бы играть в шахматы или шашки: человек с МС уделывал бы всех любителей, только потому что он потратил 10 тысяч часов на свое хобби (тут должен быть смайлик, разводящий руками). Кому-то алгоритмы нравится, кто-то с них торчит, я к ним совершенно холоден. Задачки я решил во всех фирмах, в Яндексе правда со второго раза.


      1. Abobcum
        30.07.2023 15:54
        +1

        Спасибо, интересный опыт.


      1. avost
        30.07.2023 15:54
        -9

        никак не показывают уровень разработчика, если его работа не писать алгоритмы.

        какое удивительное высказывание. А в чем же, по-вашему, состоит работа разработчика, как не в написании алгоритмов решения задач на подходящем алгоритмическом (хм, снова это слово - может быть оно здесь неспроста?) языке программирования?
        Нет, ну, положим, джун действительно в некоторых случаях может просто кодировать чужие алгоритмы, но слышать такое от сеньора по меньшей мере странно.


        1. thevlad
          30.07.2023 15:54
          +38

          И давно последний раз приходилось бинарное дерево переворачивать? Реализовывать приоритетную очередь или сортировку кучей? Кратчайший путь в графе находить?

          Людей бомбит не от алгоритмов, а от тех алгоритмических задачек, что обычно спрашивают на собеседованиях, позаимствованных из около олимпиадного программирования. И часто имеющих довольно мало отношения к тому, чем приходится заниматься. (перекладывать джейсоны)

          Тем более, что их еще и приходится решать на время, что очень далеко от реальности, даже сложной алгоритмической или математической разработки.


          1. venanen
            30.07.2023 15:54
            +15

            Проблема даже не в алгоритмах в целом - а в конкретных задачах. Мне, например, нравятся задачки про различные операции с массивами, вроде изи-левела собеса в ФААНГ, они позволяют послушать рассуждения, мысли, пути оптимизации. Иными словами, что кандидат не просто вызубрил литкод, а способен осмысленно решать различные задачи. Но самое главное - эти задачи должны быть решаемы без предварительного знания ответа. Чтобы кандидат мог их сам понять, без сложных абстракций и глубоких знаний ответа, иначе это ничем не отличается от того, чтобы просто на собеседовании спрашивать матмодель квантового компьютера, цитаты Ницше, характеристики автотрасс - не зная ответа, тут и рассуждать нечего.


          1. avost
            30.07.2023 15:54
            -4

            И давно последний раз приходилось бинарное дерево переворачивать? Реализовывать приоритетную очередь или сортировку кучей?

            Такие простые только на собеседованиях. Алгоритмы большинства моих бизнес-задач существенно сложнее, их реализация занимает тысячи строк кода.

            Кратчайший путь в графе находить?

            Такое было частью одной из задач. Самой простой её частью.

            Людей бомбит не от алгоритмов

            А вы прочли то на что я отвечал? А я повторю, мне не трудно, - "никак не показывают уровень разработчика, если его работа не писать алгоритмы." если работа разработчика не в том, чтобы писать алгоритмы, значит он кодер чужих алгоритмов. Это абсолютно нормально, но это означает, что ему не стоит браться за работу, которой он не хочет либо не умеет заниматься. Я не умею танцевать балет и меня совершенно не расстраивает, что на собеседованиях артистов балета просят сделать что-то для меня запредельное.

            а от тех алгоритмических задачек, что обычно спрашивают на собеседованиях

            Если кандидат не в состоянии написать бинарный поиск или сортировку пузырьком, стоит ли от него ждать способности решить реальную бизнес-проблему?

            Тем более, что их еще и приходится решать на время

            Да, бросьте, реализация пузырьковой сортировки - три строки. Бинарного поиска - пять.

            перекладывать джейсоны

            Да, про джунов я тоже специально упоминул. Но пассажир же позиционирует себя сеньором.

            спрашивают на собеседованиях

            Это самое адекватное что спрашивают на собеседованиях. Гораздо более непонятно зачем на всех собеседованиях спрашивают работу гарбадж коллектора (ну, у меня был ЕДИНСТВЕННЫЙ раз когда это знание было действительно полезно для последующей работы и тогда заранее предупредили об этом). Или вот ещё очень "актуальный" вопрос - какие есть методы у класса Object? Помните, что там есть такой - finalize()? А когда-нибудь использовали его? :) Вооот! А вот алгоритмы я каждый день "пишу". Именно в этом и состоит моя работа разработчика.


            1. Leetc0deMonkey
              30.07.2023 15:54
              +7

              Если кандидат не в состоянии написать бинарный поиск или сортировку пузырьком, стоит ли от него ждать способности решить реальную бизнес-проблему?

              Если кандидат вдруг ни с того ни с сего выдаёт бинарный поиск или сортровку пузырьком, хотя специфика его работы вроде бы никак не пересекалась с написанием подобного кода с нуля, то значит кандидат просто подготовился. Ну и какой мне смысл проверять кто как хорошо подготовился к собесу? А способности решать бизнес-проблемы видны по резюме, с диалогом по-душам.


              1. avost
                30.07.2023 15:54

                Если кандидат вдруг ни с того ни с сего выдаёт бинарный поиск или сортровку пузырьком

                Не знаю что вы подразумеваете под "вдруг ни с того ни с сего выдаёт", но если кандидат за пол часа не может написать трёх строк кода по заданному алгоритму, то зачем вам такой нелепый "пограммист"? Нет, ну, правда, зачем?

                значит кандидат просто подготовился

                Не представляю зачем заучивать реализации настолько простейших алгоритмов, но предположим, так и случилось. Ну, и что? Собеседование на этом только началось - дальше спросите как перекладывать эти ваши жысоны, если считаете подобную способность релевантной. Но если "не щмогла" и в пузырёк, то ведь дальнейший разговор не имеет смысла? Зачем тратить своё и чужое время?


                1. Leetc0deMonkey
                  30.07.2023 15:54
                  +1

                   не может написать трёх строк кода

                  Ну напишет он эти три строки кода. А протестировать всё, а предусмотреть все edge-cases? И реализовать их отработку системно, а не россыпью if-костылей? Это работа не на полчаса даже в рамках типичного рабочего процесса, не то что в формате собеса. Нормальный здоровый человек не напишет всё это за полчаса, кроме случаев когда он уже недавно делал это.


                  1. wataru
                    30.07.2023 15:54
                    +2

                    А протестировать всё, а предусмотреть все edge-cases?

                    В алгоритмических интервью на это очень пристально смотрят.


                    И реализовать их отработку системно, а не россыпью if-костылей

                    Да! Качество кода — основной сигнал качества программиста. Его же берут код писать! Что может быль лучше, чем посмотреть, как кандидат пишет код? Но давать что-то большое нецелесообразно — больше времени кандидата тратится, дольше проверять, сложнее выдумывать задания. Вот были бы какие-нибудь небольшие задания, требующие кандидата писать 10-15 строк не тривиального broilerplate кода… А погодите ка, это и есть easy-medium задачки с литкода.


                    Нормальный здоровый человек не напишет всё это за полчаса, кроме случаев когда он уже недавно делал это.

                    Есть проблема волнения и стресса на интервью, ну с это неизбежное зло. А дальше, если кандидат не может за пол часа воспроизвести тривиальный алгоритм, то он вряд ли хороший программист (никто не просит писать сортировку пузырьком. Просят в правильной последовательности вызвать встроенный в язык sort и как-то пройтись по массиву)


                    1. Leetc0deMonkey
                      30.07.2023 15:54

                      Вот были бы какие-нибудь небольшие задания, требующие кандидата писать 10-15 строк не тривиального broilerplate кода… А погодите ка, это и есть easy-medium задачки с литкода.

                      Не эффективнее ли из Жиры надёргать тасок, поубирать пропиетарные ньюансы и скормить кандидатам? Сразу видно будет кто как справляется со вполне реальной задачей, а не надуманными алгоритмами, не имеющими к вашей работе никакого отношения.


                      1. wataru
                        30.07.2023 15:54
                        +1

                        Нет, не эффективнее. Это очень сложно из Жиры выделить что-то самодостаточное, чтобы кандидат смог 10-15 строк кода с нуля по этому набросать. Ибо там в основном тикеты вида "Когда пользователь делает вот так, вон в той подсистеме что-то не так работает". Или "Надо протянуть вот это вот значение из вон той подсистемы вон в эту через N уровней абстракции, и там на него реагировать". Или что-то более высокого уровня вроде "запилите вот такую вот фичу". И там такое количество контекста что вы его будете кандидату два часа только рассказывать.


                        А те куски-функции, которые можно выделить — они чаще всего уровня FizzBuzz. Опять же, если у вас десятки кандидатов на место, оно не работает. А если у вас откликов на вакансию итак нет, то испытательный срок — лучший вариант (после любого тривиального интервью, чтобы уж совсем неадекватов отсеить). А если можно из жиры выделить что-то посложнее, то это те же самые Алгоритмические Задачки и получаются. Хорошо, когда они из вашего проекта и растут. Я такую задачу на интервью и задаю, кстати. Но редко когда можно что-то настолько абстрагировать и упростить, чтобы в интервью влезть и чтобы оно при этом не стало точно таким же "не практичным" как произвольная задача с литкода.


                  1. uuger
                    30.07.2023 15:54

                    россыпью if-костылей

                    вспомнил, как переделывал за предшественником кусочек с 20+ вложениями такого вида

                    if company == 'ООО «Ромашки»':
                      company = 'ООО Ромашки'


                    1. TsarS
                      30.07.2023 15:54

                      И как переделали?


                      1. Areso
                        30.07.2023 15:54

                        company = company.replace("«","").replace("»","")


                      1. uuger
                        30.07.2023 15:54

                        Сначала просто очищал от лишних символов (как быстрое решение), потом подтянул внешний справочник по ключу "ИНН|КПП", чтобы наименования всегда одинаковые были вне зависимости от источника


                    1. Areso
                      30.07.2023 15:54
                      +1

                      Однажды переписывал похожий код за предшественником.
                      Когда за "кружечкой чая" я рассказал ему об этом, он сказал что я дурак, и меня там больше кормить пирожками не будут. Незачем, работает же теперь само, "тыжпрограммист" больше не нужен =)


            1. panzerfaust
              30.07.2023 15:54
              +9

              Если кандидат не в состоянии написать бинарный поиск или сортировку пузырьком, стоит ли от него ждать способности решить реальную бизнес-проблему?

              Свидетели святого литкодинга забывают такой нюанс, что никто не решает реальные бизнес-проблемы под стрессом перед незнакомыми типами в незнакомом редакторе и на время. Вы сравниваете несравнимое.


              1. avost
                30.07.2023 15:54
                -8

                никто не решает реальные бизнес-проблемы под стрессом

                Ой ли? :)

                Вы сравниваете несравнимое.

                Это вы натягиваете сову на глобус. Никто не говорит про или-или. Лайвкодинг никак не связан с проверкой способности решать бизнес-проблемы. Он проверяет способность кандидата кодировать простейшие задачки. Про решение бизнес-проблем будут последующие вопросы. Но к ним нет смысла приступать, если кандидат не способен написать кода из трёх строк. Нет смысла спрашивать про интегралы, если персонаж не владеет умножением и теорией пределов. Что-то зазубренное он может рассказать, но толку от этой зубрёжки как от козла молока.


                1. mayorovp
                  30.07.2023 15:54
                  +3

                  Написание кода из трёх строк — это про FizzBuzz, а не про поиск кратчайшего пути в графе.


                  И говорю как человек способный этот самый поиск написать: проще всего его именно что зазубрить чем на ходу придумать. По крайней мере, лучшие олимпиадники все алгоритмы именно что зубрили (да, думать на олимпиадах тоже надо — но если ты начал думать над базовым алгоритмом, ты уже проиграл).


                  Так зачем вы проверяете способность кандидатов зубрить алгоритмы, если сами же говорите что толку от зубрёжки нет?


                  1. avost
                    30.07.2023 15:54

                    И говорю как человек способный этот самый поиск написать: проще всего его именно что зазубрить чем на ходу придумать.

                    зачем? у нас на факультете была одна барышня, которая на первом семестре считала, что проще заучить полугодовой курс матана, чем понять, как всё устроено. Очень упорная барышня - с 12го раза сдала. Но поняла, что разобраться и выводить доказательства куда проще, чем их заучивать. Зачем учить реализацию, если быстрее её реализовать?

                    По крайней мере, лучшие олимпиадники все алгоритмы именно что зубрили (да, думать на олимпиадах тоже надо — но если ты начал думать над базовым алгоритмом, ты уже проиграл).

                    Мы же не на олимпиаде, нам не нужна скорость. Олимпиадники, кстати, в большинстве не особо хороши в разработке. По крайней мере те, что мне встречались. Но один, впрочем, был очень хорош!

                    Так зачем вы проверяете способность кандидатов зубрить алгоритмы

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


                    1. Leetc0deMonkey
                      30.07.2023 15:54

                      а что если нам нужно найти не заданное число, а третье бОльшее после него? А если на вход подали предпоследнее?

                      Вы правда считаете что если для человека все эти алгоритмы не его повседневная работа, то он раз и за полчаса выдаст абсолютно правильное решение? А если я задам встречный вопрос - найдите наибольшее число в списке, пополняемом параллельным потоком, lock-free?

                      Задача обратная и состоит в том, чтобы ещё на раннем этапе отсеять тех, кто даже этого не осилил. Зачем тратить время на бессмыслицу?

                      Вы нанимаете прокачанных алгоритмистов? Или тех кому по факту надо сджойнить пару таблиц?


                      1. avost
                        30.07.2023 15:54
                        -2

                        задам встречный вопрос - в чём вы видите проблему написать реализацию по заданному алгоритму? Речь ведь только о реализации. Я НИГДЕ и НИКОГДА не говорил о выводе самого алгоритма. Перечитайте.

                        А если я задам встречный вопрос - найдите наибольшее число в списке, пополняемом параллельным потоком, lock-free?

                        "Я не знаком с этим алгоритмом, напомните мне его пожалуйста."

                        Вы нанимаете прокачанных алгоритмистов?

                        Синьор девелоперов. Которые умеют писать код.
                        Нет, тех, кто не умеет писать код мв не нанимаем. А вы нанимаете? А зачем?

                        Или тех кому по факту надо сджойнить пару таблиц?

                        "На сегодня приём джунов закрыт, вы ошиблись вакансией, не будем тратить ваше и своё время, возможно, когда вы научитесь писать код мы сможем побеседовать подольше."


                1. panzerfaust
                  30.07.2023 15:54

                  Но к ним нет смысла приступать, если кандидат не способен написать кода из трёх строк

                  Ну а другой скажет, что нет смысла приступать, если теория event loop от зубов не отскакивает. Чем ваше кунг-фу лучше вот этого кунг-фу? Тем, что самомнение пухлее?

                  Вы пытаетесь оценить комплексное качество - скилл - простым измерением. Это типа как линейкой мерить и длину, и температуру, и давление. Я, к слову, не против кодинга на собесах. На наших собесах и кодинг, и ревью, и теория, и систем дизайн. И я смотрю на человека в комплексе и раньше времени желтую звезду ему на грудь не вешаю.


                  1. avost
                    30.07.2023 15:54
                    -2

                    Ну а другой скажет, что нет смысла приступать, если теория event loop от зубов не отскакивает.

                    А что в этом плохого? Если его работа подразумевает плотную работу с/в event loop, то работник должен разбираться в этом.

                    Чем ваше кунг-фу лучше вот этого кунг-фу?

                    Ничем не лучше. Мне знание ивент лупов ни к чему, я спрошу что-нибудь другое, что используем мы. После того, как кандидат покажет свою способность к написанию кода. До этого просто нет смысла.

                    Тем, что самомнение пухлее?

                    Самомнение состоит в том, чтобы узнать способен ли будущий разработчик писать код по готовому алгоритму? Гм, не знал, что это настолько выдающийся скил, что не часто встречается у "синьор девелопер". А вам правда нужны синьор девелоперы не способные писать код? А зачем, позвольте поинтересоваться?

                    Вы пытаетесь оценить комплексное качество - скилл - простым измерением.

                    Ни в коем разе. Я пытаюсь сэконономить своё время и не пытаться принять на работу "девелопера" не способного к написанию кода. Входной фильтр. Про условия необходимые и достаточные вы же знаете? Это - необходимое. Но с чего вы взяли, что достаточное?

                    И я смотрю на человека в комплексе и раньше времени желтую звезду ему на грудь не вешаю.

                    Всё пытаюсь понять, зачем вам нужен разработчик у которого огромные скилы в ревью, теории и систем дизайн, но которые не способен писать код. Вы его поставите в парадный угол и будете на него любоваться? Стирать с него пыль и спрашивать теорию? Или у вас есть позиция выделенного ревьюера, который не пишет код, а только его ревьюит? - ну, если условия позволяют, то это годный вариант, но это не позиция синьор девелопер, это другая позиция.


                    1. panzerfaust
                      30.07.2023 15:54

                      Вы сами придумали что "литкодить на скорость" == "писать боевой код" и теперь размахиваете этим тезисом с великим восторгом. Заявление уровня "не служил - не мужик", короче. А для меня это не абсолютная истина, а так, частный случай. Можно хорошо литкодить и плохо писать боевой код. А можно плохо литкодить и хорошо писать боевой код. И остальные 2 комбинации тоже бывают. Так что выдохните уже.


                      1. avost
                        30.07.2023 15:54

                        Вы сами придумали что "литкодить на скорость" == "писать боевой код" и теперь размахиваете этим тезисом с великим восторгом

                        А давайте вы, для начала, приведёте цитату, где я утверждал, что "литкодить на скорость" == "писать боевой код"? А то как-то неловко получается - вы знаете где я это сказал, а я нет. У меня РОВНО противоположная позиция - если человек не может написать "программу" в три-пять строк по ЗАДАННОМУ алгоритму, то мне не о чем с ним разговаривать.


            1. JustMoose
              30.07.2023 15:54
              +2

              "если работа разработчика не в том, чтобы писать алгоритмы, значит он кодер чужих алгоритмов" не все разработчики придумывают/кодируют алгоритмы. Есть много других способов потратить рабочее время. У меня, к примеру, большую часть времени занимает раскопка недр Хромиума, и чуть-чуть времени на поправить необходимое. Кто-то пишет гуй. Кто-то сети. Кто-то системным программированием занимается. Кто-то, внезапно, дистрибутивы кодирует. Скрипты на питоне. SQL запросы.

              Алгоритмы - это лишь малая часть айти.


        1. Georrg Автор
          30.07.2023 15:54
          +10

          На мой субъективный взгляд хорошо проверить задачкой можно только джуна - он все равно ничего не знает, а понять как он мыслить с помощью задачки можно. Другое дело когда вы задаете эту же задачку сеньеру. Я вот пишу алгоритмы 1-2 раза в год - они редкость в андроиде. Но т.к. некоторые компании требуют их на собесе, приходится тратить свое время на "натаскивание". Куда грамотнее было бы проверить сеньера по его знаниям и умениям проектировать. Достаточно попросить его решить практическую задачу, чтобы понять хороший он программист или нет (даже если описание будет устным). Казалось бы и первый и второй вариант дает один результат, но нет: любой джун может натаскаться на задачках, набить руку на собесах и пройти в крупных бигтех мидлом, приписав себе 2 года опыта работы. С проверкой на проектирование так сделать не получится. Когда у Яндекса случилась утечка кода, мы все увидели немалое кол-во велосипедов, а ведь они проверяют всех алгоритмами. Получается, авторы этих костылей хорошо решают задачки, но плохо выполняют свою работу, значит умение решать задачки != хороший программист


          1. wataru
            30.07.2023 15:54
            +1

            На мой субъективный взгляд хорошо проверить задачкой можно только джуна — он все равно ничего не знает

            В случае ФААНГА все кандидаты — как "джуны": там своя кухня, свои технологии. Их на стороне не знают толком. Только по основам языка и можно гонять кандидатов — это грустное занятие. На мидлов-сеньеров ФААНГ проводит дополнительные интервью (system design, domain-specific knowledge).


            Достаточно попросить его решить практическую задачу

            Практическую задачу практически очень редко можно впихнуть в рамки интервью. Максимум получится поболтать на тему архитектуры и это и проверяют в design interview.


            Это интервью смогут проводить только опытные сеньеры, ибо там гораздо больше субъективности. Если у вас пол кандидата на место, то вы можете пожертвовать их временем. Если, как в ФААНГе, десятки человек на место, то уже приходится привлекать к интервью мидлов и давать задачки всем.


          1. event1
            30.07.2023 15:54

            На мой субъективный взгляд хорошо проверить задачкой можно только джуна

            Вы смотрите со стороны кандидата. Со стороны нанимателя несложная задачка позволяет дёшево отфильтровать негодных кандидатов. Которых немало и среди ведущих (по должности) разработчиков. Естественно задача должна быть такая, решение к которой реально придумать за время интервью. Быстрая сортировка или перебалансировка красно-чёрного дерева не подойдёт.

            Когда у Яндекса случилась утечка кода, мы все увидели немалое кол-во велосипедов, а ведь они проверяют всех алгоритмами. Получается, авторы этих костылей хорошо решают задачки, но плохо выполняют свою работу, значит умение решать задачки != хороший программист

            Как-будто, если бы они не проверяли всех алгоритмами, то код был бы идеально вылизан. Генезис костылей и велосипедов в большой и хорошо выдержанной кодовой базе несколько сложнее.


            1. panzerfaust
              30.07.2023 15:54

              Как-будто, если бы они не проверяли всех алгоритмами, то код был бы идеально вылизан.

              Скажем там, если бы давали хоть что-то, кроме алгоритмов, то результат мог быть другой. Недавняя история с 6 задачками на 3 собесах в Небиус (экс-Яндекс) это же чисто буффонада.


              1. event1
                30.07.2023 15:54

                Скажем там, если бы давали хоть что-то, кроме алгоритмов, то результат мог быть другой

                Не мог. Во-первых, никакая методика найма не даёт 100%-го результата. Во-вторых, костыли и велосипеды появляются на стыке бизнеса и архитектуры при их развитии. Например: сегодня мы создали архитектуру из бизнес-требований и запилили решение. Через год, развитие приложения больше не финансируется, но надо поддерживать текущих клиентов. При этом инфраструктура плывёт, а клиентам иногда всё-таки удаётся пробить новые возможности. По уму приложение надо переписать, но ресурсов на это нет. По-этому команда выкручивается как может. То есть ставит костыли и строит велосипеды. Хороший разработчик тут поставит крепкий костыль и напишет большой комментарий: "ОСТОРОЖНО!!! Это костыль. Сделали, потому что иначе нельзя. У самих сердце кровью обливается." Плохой разработчик поставит хлипкий костыль и не оставит комментария.


        1. Abobcum
          30.07.2023 15:54

          А в чем же, по-вашему, состоит работа разработчика, как не в написании алгоритмов решения задач на подходящем алгоритмическом (хм, снова это слово - может быть оно здесь неспроста?) языке программирования?

          Оптимальные алгоритмы хорошо изучены и давно эффективно реализованы на всех языках. Кроме того, необходимые и достаточные условия применения этих алгоритмов также хорошо исследованы, что позволяет реализовывать гибридные оптимальные алгоритмы (и структуры данных тоже). Любой самописный алгоритм, скорее всего, будет точечным.

          В результате имеем, что разработчик должен не заниматься высшей математикой, а грамотно применять алгоритмические библиотеки в различных кейсах.

          Но главная задача разработчика, что и отличает сеньора от джуна - решать проблемы бизнеса.


          1. PuerteMuerte
            30.07.2023 15:54
            +1

            В результате имеем, что разработчик должен не заниматься высшей математикой, а грамотно применять алгоритмические библиотеки в различных кейсах.

            Алгоритмы - это не высшая математика. Разработчик не должен будет руками сортировать массивы и балансировать деревья, но в большинстве случаев делать штуки вроде "выбрать клиентов, которые сделали не больше двух заказов в течении последнего года, добавить им персональную скидку 5% и отправить каждому рекламное сообщение" он будет должен. А это тоже очень даже алгоритмы, и ни в каких библиотеках их нет.


            1. Leetc0deMonkey
              30.07.2023 15:54

              "выбрать клиентов, которые сделали не больше двух заказов в течении последнего года, добавить им персональную скидку 5% и отправить каждому рекламное сообщение" он будет должен. А это тоже очень даже алгоритмы, и ни в каких библиотеках их нет.

              Это делается одним SQL запросом, не считая взаимодействий с рассылщиком.


              1. wataru
                30.07.2023 15:54

                Не всегда и не везде всю логику можно засунуть в базу данных. Потом, если уж говорить про ФААНГ, то там эти самые базы данных часто и разрабатывают.


            1. Abobcum
              30.07.2023 15:54

              Возможно, и задачи тогда следует давать про штуки вроде вашей, а не про big data алгоритмы и структуры из говна и палок?


  1. ArkadiyShuvaev
    30.07.2023 15:54
    +8

    Буквально сегодня подумывал, а что же лучше: практиковаться в алгоритмах на leetcode или развиваться, делая свой pet проект?

    Как я вижу уже из второй статьи, реальность такова, что навыки решения задач с leetcode гораздо важнее. С ними как-то уверенней в завтрашний день смотришь.


    1. powerman
      30.07.2023 15:54
      +25

      Навык прохождения собесов почти никак не связан с навыками, которые нужны в работе. А вот пет-проект полезен и для Вашего собственного развития, причём задачи в нём обычно приходится решать более близкие к реальной работе, чем алгоритмические задачи с литкода. Вот если это не ради собесов, а с целью подтянуть собственные знания алгоритмов - тогда другое дело.

      Кроме того, у автора свой опыт как соискателя, а у меня свой как собеседующего: и я лично всегда прошу кандидатов показать пример кода (в идеале - на гитхабе), всегда выделяю полчаса перед собесом на изучение этого кода, и на собесе мы обсуждаем в т.ч. отдельные места в этом коде под углом "почему сделано так а не иначе" и "в какой ситуации эта часть корректно работать не будет", плюс читая код я выявляю потенциально слабые места в знаниях и задаю по ним дополнительные вопросы, чтобы понять причину (если это просто невнимательность то норм если такого не очень много, если чего-то конкретного не знает то вообще не проблема, а вот если это фундаментальное недопонимание природы вещей то стоит разобраться насколько случай запущенный). А если своего кода нет - тогда я обычно выдаю тестовое задание, чтобы всё-таки получить пример кода (при этом не всегда критично, особенно если это позиция джуна, чтобы тестовое было корректно и полно реализовано, мне важнее чтобы был пример любого кода чем корректное решение). Всё это позволяет на порядок корректнее оценить квалификацию соискателя, чем любые другие известные мне подходы.

      А как соискатель я отправляю ссылки на свой гитхаб и хабр, после чего обычно тупых вопросов ко мне на собесе уже нет, разговариваем за жизнь/архитектуру. А если кто-то начинает задавать такие вопросы, в частности показывая что мой гитхаб смотреть поленились - ну, это их проблема, на собесе не только они меня оценивают но и я их, так что это сильный довод в пользу того, чтобы в эту компанию не идти.

      Честно говоря, мне кажется странной статистика автора. Возможно дело в том, что он немного переоценивает свою квалификацию как лида и сениора. Или в том, что искал работу в крайне неудачный период для разработчиков уехавших из РФ. Или в том, что у него были собственные завышенные требования к компаниям. Ну или ситуация на рынке действительно изменилась в последний год, и найти работу среднему сениору стало намного труднее.

      Лично у меня за всю жизнь (а код я пишу уже 34 года) именно "заваленных" собесов было… не хочу соврать, может и был один, не помню точно. Более того, на то, чтобы получить работу у меня в среднем уходило заметно меньше 2-х собесов, причём если не складывалось то обычно отказывался я, причём с мотивацией "уже устроился в другое место". Лайвкодинг на собесе я попробовал один раз из любопытства, и нет, мне не понравилось (субъективно я бы сказал, что я его завалил, но это был "бонусный" раунд собеса чисто из любопытства, обратную связь по нему мне не дали, и он не помешал моему найму в ту компанию), так что повторять этот опыт я не буду - кому нужен мой код пусть смотрят на гитхабе, а если им лень, то я не нужен им а они - мне.

      При всём этом я спокойно мог и полгода сидеть без работы, лениво ожидая пока работа найдёт меня сама, занимаясь в это время своими проектами на гитхабе или написанием статей на хабр. Меня такое времяпровождение между проектами всегда полностью устраивало, потому что во время работы найти на всё это время довольно сложно, а своими личными проектами заниматься тоже хочется.


      1. Georrg Автор
        30.07.2023 15:54

        Я смотрю на вас снизу вверх) У вас в 6 раз больше опыта чем у меня и конечно же вы не испытываете тех трудностей, что испытываем мы, свежевыкошенные сеньеры. в моем понимание сеньер - это разработчик, способный качественно и самостоятельно выполнять большой объем работы без лишнего контроля и проверок. Я этими качествами обладаю, но я не знаю всего и не успел попробовать и пытакать все технологии, что must have на текущий день в android (опять же rxjava и kmm). При этом я принимаю правилы игры и постоянно закрываю такие пробелы - в июне я самостоятельно разорбрался с MVI, вывел для себя оптимальную формулу и отладил ее на пет-проекте. У компаний в РФ на мой взгляд - с одной стороны дефицит кадров, а с другой стороны завышенные ожидания при низкой зарплате. Я просил у всех компаний в РФ зп от 350к, что вполне соответствует сеньерской позиции. У компаний зарубежом я просил от 6k$. И та и другая цена на мой взгляд довольно справедлива.


        1. powerman
          30.07.2023 15:54
          +3

          Не надо на меня так смотреть - я таким опытным не родился и когда-то и у меня тоже было 6 лет опыта. :) Правда, и собесы в те времена были другие, сложно сравнивать.

          По деньгам в РФ если в среднем - да, у меня такое же впечатление, но это вполне ожидаемо после ухода и западных заказчиков и западных компаний (нет необходимости конкурировать с их зарплатами), но это коснулось далеко не всех компаний.

          Тем не менее, для джуна такая статистика собесов ещё понятна, я бы не удивился такой и для миддла через пару лет (ChatGPT не дремлет!), но сейчас и для сениора по востребованной технологии, к тому же не ограничивающего себя компаниями только в одной стране - ну не знаю, на мой взгляд это всё-таки странно. Очень интересно понять, это Вы такой особенный, или это сейчас такая ситуация на рынке стала.


          1. Georrg Автор
            30.07.2023 15:54
            +1

            Не думаю, что особенный. Из 25 компаний - 19 были иностранными, а значит перегружены кандидатами, а 6 из топ-листа по РФ. Думаю, у большинства разрабов примерно такие же проблемы. К числу чемпионов, с азартом изучающих содержимое контекста или вью, я себя не отношу. Для меня это просто работа.


        1. IonDen
          30.07.2023 15:54

          в моем понимание сеньер - это разработчик, способный качественно и
          самостоятельно выполнять большой объем работы без лишнего контроля и
          проверок.

          Хм, хм. Это никак не тянет на сеньера. В серьезных конторах - это миддл разработчик. Сеньер это не просто чувак что много и качественно работает, это еще и тот кто улучшает процессы, учит других разработчиков, умеет говорить с бизнесом и т.д. и т.п.


          1. Georrg Автор
            30.07.2023 15:54
            +1

            По-моему, это вы путаете сеньера с лидом - сеньеру нет дела до остальных, он не должен никого учить и думать за всех. Его цель - тот фронт работы, что ему выделила команда. Там он предлагает, думает и решать, а как дела у всего проекта и всей команды - ему по-большому счету всеравно. Для этого есть тим-лиды и тех-лиды. В конце-концов, что получится за хаос, где 30 человек лезут со своими идеями и новшествами ко всем где надо и не надо? Звучит неправдоподобно


            1. arheops
              30.07.2023 15:54

              Это вы мидла описали.
              В большистве компаний сеньйор имеет как минимум код ревью и менторство.


              1. Georrg Автор
                30.07.2023 15:54

                В моем понимании всегда грейды выглядят примерно так:

                • Лид - организует работу команды. Вместе с командой определяет дальнейшее развитие проекта. Несет ответственность за выбранный путь.

                • Сеньер - самостоятельная единица, способная выполнять задачи любого уровня сложности.

                • Мидл - разраб с опытом, но не достаточной силы. Способен решать большинство задач, к архитектуре обычно не допускается или допускается с оглядкой. В случае чего может запросить SOS у коллег, и те ему помогут. Нуждается в наблюдении.

                • Джун - талантливый, трудолюбивый, что-то умеет, знает недостаточно для самостоятельной работы. Нуждается в постоянном контроле/менторстве

                Ревью - это касается всех вне зависимости от грейда. В нашей команде оно было круговым - каждый поверял каждого по кругу. Менторство опционально - если сотрудник имеет к этому предрасположенность и желание, он может быть ментором


                1. IonDen
                  30.07.2023 15:54

                  В крупных компаниях обычно нет такого чувака как лид. Есть что-то вроде Senior -> Staff -> Principal -> Distinguished -> Fellow. И обычно уже с сеньера ожидается куча работы вне своей команды, менторство, ревью, комьюнити проекты и пр.


                  1. Georrg Автор
                    30.07.2023 15:54

                    Хорошо, спасибо) Переосмыслю)


                1. IonDen
                  30.07.2023 15:54

                  По нашему грейду ваш мидл - подвид джуна)


                1. arheops
                  30.07.2023 15:54
                  +2

                  Если человек требует "допуска с оглядкой" — он джун, извините.
                  Мидл самостоятельноа единица.
                  Архитектура в нормальных компаниях выбирается на митинге всех девов, и в большистве случаев уже выбрана к моменту вашего прихода. Куча мелких тасков с нуля — нетипичная картина


                1. Neikist
                  30.07.2023 15:54

                  Я бы все таки вниз сместил. Стажер — тот кто у вас джун. Джун — тот кто у вас мидл, и т.д.


    1. PuerteMuerte
      30.07.2023 15:54
      +2

      или развиваться, делая свой pet проект?

      Для общего развития - почему бы и нет. Но если вы рассчитываете, что наличие пет-проекта на гитхабе как-то избавит от ряда вопросов на собеседовании, то это с высокой вероятностью сработает, только если пет-проект достаточно известен. В остальных случаях собеседующих, которые имеют время и желание сколь-нибудь серьёзно ковыряться в вашем коде перед собеседованием, немного, и обычно это сравнительно молодые ребята, которые ещё не особо часто собеседовали. Ну потому что оценивать человека по совершенно незнакомому коду, это занимает много времени, плюс, все равно надо и вживую увидеть, и вопросы позадавать, поэтому нет смысла вместо "провести собеседование" делать "смотреть гитхаб, а потом все равно провести собеседование".


      1. mmMike
        30.07.2023 15:54
        +5

        Мне кажется, что задачки во время собеседование - это скорее стресс тест. Да еще и рулетка. Знает ли кандидат ответ на этот конкретный вопрос сразу. Типичные вопросы на таких собеседования - это как спрашивать таблицу логарифмов, а не сам принцип логарифмической функции, например.

        Мне всегда проще оценивать кандидатов именно по его коду. Что такого в том, что бы посмотреть код и сразу понять общий стиль. Многие концептуальные ошибки/проблемы ну просто сами в глаза бросаются.
        Ну и опять же.. мне потом в его коде уже на работе разбираться. Лучше я сразу оценю ряшливость/неряшливость, понятность кода, что комментирует в коде и пр.


        1. PuerteMuerte
          30.07.2023 15:54

          Если попрограммировать во время собеседования, все равно же интернет под рукой есть, можно посмотреть, если не знаешь/забыл. По-большому счёту, не так уж важно, насколько там у человека код неряшливый в пет-проектах. Всё это исправляется, к тому же лдно дело, когда ты пишешь сам для себя, другое дело, когда для других и по принятому в команде стандарту. Вот увидеть, умеет ли человек и думать головой, и искать информацию - это как раз важно.


          1. mmMike
            30.07.2023 15:54
            +2

            По-большому счёту, не так уж важно, насколько там у человека код неряшливый в пет-проектах.

            Важно. Так не бывает. Что бы щелк и переключалось в голове "я тут дома пишу/я тут на работе".

            Вот увидеть, умеет ли человек и думать головой, и искать информацию - это как раз важно.

            Во время интервью?! В жутком стрессе (для большинства).

            Я вот терпеть не могу, когда кто то просто за плечом стоит и т.п. когда я работаю.
            Зачем я буду отсеивать кандидатов в свой отдел по критерию "он не может быстро писать код и тупит в условия стресса". Потому что представлю как я сам будут чувствовать в таких условиях.
            Ситуации "ой все сломалось, срочно найди ошибку по логам и что бы пач вышел через 15 минут" бывают регулярно. Но они мне очень не нравятся.

            Если кому то нужны разработчик, который как фильмах про хакерах быстро быстро "долбять" по клавиатуре взламывая сайт "пентагона" когда у них за спиной стреляют из пулемета - ну пусть устраивают стресс тесты с решением алгоритмических задач типа "сортировка извращенным пузырьком наоборот" за 5 минут в блокноте.

            А мне нужно что бы мои подчиненные могли:

            1. Написать код не 5 минут дистанции, а на 3-5 дней на промежуточный/окончательный вариант.

            2. Я мог легко разобраться (читаемый код C++/Java/ReactJs/python) в проблеме и внести мелкие исправления, в случае "в отпуске сотрудник и пр." или перепоручить это кому то, не беспокоясь что это вызовет проблемы "что за хрень тут написана"

            Для всего этого лично мне лучше оценивать по примерам кода, а не по идиотским задачам, которые к жизни/работе разраба, как правило, прямого отношения не имеют.


            1. PuerteMuerte
              30.07.2023 15:54

              Важно. Так не бывает. Что бы щелк и переключалось в голове "я тут дома пишу/я тут на работе".

              "Щелк" происходит обычно после первого-второго неудачного кодеревью естественным образом. В моей истории был только один обратный случай, и это реально исключение. Обычно, если человек вообще научился программировать и ему меньше этак 60 лет, он достаточно компетентен, чтобы следовать гайдлайну, который ему покажут. Пусть даже если ему это и не нравится.

              Во время интервью?! В жутком стрессе (для большинства).

              Ну да. Не знаю насчёт жуткого стресса для большинства, обычно, если это не первое-второе в жизни интервью, оно проходит всё-таки безболезненно для большинства.

              Зачем я буду отсеивать кандидатов в свой отдел по критерию "он не может быстро писать код и тупит в условия стресса"

              Так вы же сами ответили на свой вопрос:

              Ситуации "ой все сломалось, срочно найди ошибку по логам и что бы пач вышел через 15 минут" бывают регулярно

              Вот как раз за этим. Если у вас бывают аварии, требующие срочных фиксов, зачем вам разработчик, который не сможет это сделать?


      1. 0xd34df00d
        30.07.2023 15:54

        Но если вы рассчитываете, что наличие пет-проекта на гитхабе как-то избавит от ряда вопросов на собеседовании, то это с высокой вероятностью сработает, только если пет-проект достаточно известен.

        Совершенно необязательно.


        У меня раньше нередко ничего не спрашивали по плюсам, когда я активно писал пет-проект на плюсах. Сейчас нередко ничего не спрашивают по хаскелю (впрочем, и в гитхаб не смотря — иногда ограничиваются некоторыми интересными словами в резюме).


    1. edogs
      30.07.2023 15:54
      +2

      что же лучше: практиковаться в алгоритмах на leetcode или развиваться, делая свой pet проект?

      Смотря куда Вы устраиваетесь. Где-то и до задач можно не дойти, если нет своего проекта на гитхабе или хотя бы коммитов в чужой опенсорс.


    1. Georrg Автор
      30.07.2023 15:54
      +1

      Солидарен в этом вопросе с @powerman: задачки для интервью, пет проект для души и свободной практики


  1. MyWave
    30.07.2023 15:54
    +1

    Выражаю личную поддержку, но статья написано косноязычно.

    Занялся бизнесом, и? Опыт 6 лет, не мог тех собес пройти? Ты мобильный разработчик и было тестовое на перегонку wav в mp3, зачем ты вообще взялся? Кто в здравом уме вообще полезет смотреть код кандидата на Гите?

    Складывается впечатление что ты неорганизованный человек.


    1. Areso
      30.07.2023 15:54
      +3

      Ну я смотрю код кандидатов на гите.
      Это, правда, мало о чем говорит, но тему беседы задать может.


  1. IsUnavailable
    30.07.2023 15:54
    +5

    Очень интересный опыт. Побольше бы такого на Хабре)


  1. atoro
    30.07.2023 15:54
    +1

    У меня по вашему конспекту создалось впечатление(возможно очень ошибочное), что вы слишком сильно рассчитывали, что при вашем резюме и гитхабе спрашивать вас теорию в принципе никому в голову не придет, а разговор сразу пойдет за системный дизайн или алгоритмы, а если вдруг, то вы сходу ответите. Лично мне он чем-то мои первые наброски напомнил, когда я 1.5 года назад в ит вкатывался при 0 коммерческого опыта. Недели 2 назад начал потихоньку к собесам готовиться, поднимать старые доки и что-то такое промотал до конца и снес - просто потому, что 90% инфы оттуда за 1.5 года кодинга уже в подкорку въелось, по крайней мере на уровне начальных формулировок.


    1. Georrg Автор
      30.07.2023 15:54

      Каждый по готовиться своему) Мне кажется лучше пропустить вопрос, который ты уже выучил (при чтении), чем не записать и не разобраться в том, в котором ты еще плаваешь. К тому же такой конспект читается проще и быстрее. Ну, это каждому свое


  1. varton86
    30.07.2023 15:54

    Спасибо за столь подробное изложение, в некоторые компании сам когда-то проходил собесы, очень похожее впечатление от них) Будет интересно почитать, как всё сложится в ОАЭ.


    1. lovermann
      30.07.2023 15:54
      +1

      Тоже интересно. Оффер минимально на 8К+ чистого должен быть, ибо, например, с 5К долларами в Дубае, например, - это как в Москве с 50К рублей пытаться выжить.


  1. cadovvl
    30.07.2023 15:54
    +2

    Мой богатый опыт наблюдения за собой помогает мне предсказать "выгорание" заранее. За год или типа того. Поэтому я начинаю разбрасываться резюме заранее, и проходить 1-2 собеса в месяц, отказываться от неинтересного, не сильно обращая внимание на "нужду".

    По итогу, опыт собеседований примерно такой же, но он растянут по времени и не так сильно бьет по настроению. А кроме того, наступающее "выгорание" переносится легче. Когда тебя уже задолбало происходящее вокруг, но ты видишь какое-то светлое будущее: оферы, которые кажутся лучше окружающей действительности, но пока еще недостаточно лучше.


    1. Georrg Автор
      30.07.2023 15:54

      Спасибо за совет, интересный подход!


  1. olekl
    30.07.2023 15:54
    +3

    Сдать паспорт в начале февраля - это вот реально про "не повезло" :( Но хорошо то, что хорошо заканчивается! Удачи на новом месте!


    1. Goupil
      30.07.2023 15:54

      У автора похоже есть гражданство иной, более "удобной" страны,вместе с соответсвующим загранпаспортом, так что можно за него порадоваться.


      1. Areso
        30.07.2023 15:54
        +3

        Если человек получал гражданство России, то он должен был сдать казахстанский паспорт; за обратное предусмотрена нехилая ответственность.

        в начале февраля 2022 сдал паспорт РК

        что человек и сделал.

        По закону РК, человек получивший гражданство другой страны, лишается прав на гражданство Республики Казахстан.


        1. Goupil
          30.07.2023 15:54
          +1

          Тогда интересно - если его приобретенного гражданства РФ лишают по тем или иным причинам - он становистя апатрид?


          1. Georrg Автор
            30.07.2023 15:54
            +1

            в таком случае я стану лицом без гражданства, да) Шансы как никогда высоки))


          1. lovermann
            30.07.2023 15:54

            Я сейчас не скажу точно, что за конвенции, но просто так "в никуда" из гражданства не выпускают ни в какой стране. Вообще апатридство, - это неимоверный гемор при путешествиях.


    1. Georrg Автор
      30.07.2023 15:54

      да ладно, бывает)) Спасибо)


  1. bratkrr
    30.07.2023 15:54
    -4

    • А чего ваша Галя всё не замужем?

    • Да дюже разборчивая она.

    Два варианта. Автор слишком много хочет или преувеличивает свои компетенции. Но я бы как наниматель с таким не стал связываться.


  1. Platow
    30.07.2023 15:54
    +1

    Рынок мобильных приложений уже не так растет, поэтому понятно,что теперь критерии выше и нет такой острой потребности


  1. Wan-Derer
    30.07.2023 15:54

    Что-то какая-то жесть с собесами на Андроид. Когда я искал первую работу на Java, я посоветовался с опытным товарищем и он сказал: на Java не найдёшь, требования высокие, народу много. Я подумал: да, наверно и попробовал поучить Котлин и Андроид, но мне вообще не зашло. В итоге устроился таки на Java. И такой жести не было ни поначалу, ни через год когда я решил сходить на рынок вакансий. Правда, я, конечно, на джуна подавался....


    1. Georrg Автор
      30.07.2023 15:54

      Думаю, у меня просто получился очень длинный путь. Надеюсь у остальных это займет меньше времни ;)


  1. Shmele
    30.07.2023 15:54

    В списке компаний значительная часть - кипрские. Можно узнать в каких источниках Вы искали вакансии? Для себя, чтобы понимать где есть много кипрских вакансий, и ещё интересно почему такое распределение проектов в списке в статье.


    1. Georrg Автор
      30.07.2023 15:54
      +2

      Добрый день! В начале февраля я собрал резюме на linkedin и стал рассылать резюме. Кипрские компании писали сами, я их даже не искал. Я основном кидал заявки в Германию (бабка была немкой и мне казалось логично, что если не Россия, так Германия). Всего по планете я разослал около 200 заявок, что довольно много. Треть из них ответила вежливым отказом, 2/3 не ответили совсем. Из этого я делаю вывод, что рынок кандидатов перегрет чудовищно за рубежом. Т.ч. лучше не повторять моих ошибок и бросать работу, раньше чем у вас появится хороший, более-менее надежный план ;)


  1. antonmd
    30.07.2023 15:54
    +2

    Собеседовался в кипрскую компанию с релокейтом, на финальном общении с командой оказалось что они больше не релоциют, а HR просто забыла об этом. Мы все так глупо выглядели :).

    Кстати вопрос, так уж плохо что в сегодняшней ситуацию многие ждут от компании в первую очередь релокейт и зп не в рублях, работа же почти всегда в первую очередь была возможностью жить лучше чем до неё.


  1. UncleAndy
    30.07.2023 15:54

    Спасибо за такое подробное описание! Должно воодушевить тех, кто пока не может найти работу. Я последний раз тоже искал работу довольно долго - два месяца примерно. Прошел около 10 интервью. Где-то прощались после интервью с HR, где-то после технического. В Yandex тоже собеседовался, но показал себя не очень хорошо. Хотя, не скажу что собеседование было адекватным.

    В общем, согласен с выводом что надо не опускать руки и продолжать проходить собеседования - обязательно найдете свою работу.