Хочу отметить, что всё сказанное ниже — моё личное мнение и не даёт инсайта о том, как на резюме смотрят эйчары. Но может помочь людям, которые начинают карьеру в бэкенд-разработке.
Какие пет-проекты делать, чтобы было легче найти работу?
Тема этой статьи родилась из вопроса, заданного на вебинаре одним из студентов. Я посоветовал не тратить на это время, хотя интернет забит рекомендациями и примерами портфолио.
Под пет-проектом мы понимаем некий самостоятельный, написанный кандидатом от начала и до конца сервис. Это может быть доска объявлений, to-do-лист, социальная сеть для фотографий котиков и т. д. При создании такого проекта требуется написать архитектуру приложения, реализовать её и, возможно, написать фронтенд-часть, а также задеплоить проект на сервер. В теории звучит прекрасно, но есть проблема.
Как правило, начинающий разработчик не обладает достаточными навыками, чтобы создать такой проект полностью самостоятельно. Скорее всего, это будет воплощение созданного кем-то учебного проекта или туториала. Даже при наличии оригинальной идеи большая часть технических решений будет выбрана по принципу «так было написано».
Да и начинающий разработчик, скорее всего, не сможет создать проект, действительно достойный внимания. В итоге, с точки зрения интервьюера, мы получим проект, автор которого умеет следовать статьям. Это хорошо, но недостаточно.
Вторая проблема — необходимость удостовериться, что показанный пет-проект хотя бы работает. Хорошо, если его хотя бы можно потрогать, но бэкендеры часто не хотят тратить время и силы на фронтенд, а бэкенд — скрытая от глаз часть айсберга. В результате пет-проекты превращаются в работу в вакууме. Проект в лучшем случае запущен единожды, а в худшем — это просто код на GitHub. В результате проверить его работоспособность становится проблематично. В процессе интервью вряд ли у кого-то будет время просмотреть весь код, а у эйчаров просто нет для этого квалификации.
Альтернатива пет-проектам
Мне, как интервьюеру, гораздо интереснее кандидаты с записью в резюме о контрибуции в open-source-проекты. Open source даёт кандидату весомые преимущества в глазах нанимающего менеджера:
Идеальное замещение реального опыта работы. Open source даже лучше реального опыта, потому что то, что делал кандидат, доступно для просмотра, а не скрыто в приватных репозиториях и под кипами NDA. Тот факт, что за этот код не заплатили, меня мало волнует.
Вне зависимости от размера вклада (а это может быть лишь пара строчек) сам процесс — именно то, чем будет заниматься новый разработчик в своей будущей команде. Нужно взять большой и сложный проект, разобраться в нём, внести изменения, протестировать, получить одобрение команды. Отсутствует только шаг релиза, но вряд ли свеженанятого начинающего разработчика допустят релизить код в продакшен без присмотра.
Требует большей глубины навыков. И эти навыки будут ближе к коммерческой разработке: взаимодействие с инфраструктурой, запуск проекта, тестирование, создание пулл-реквеста, отработка замечаний. Как правило, внесение изменений требует обоснования, которое невозможно без глубокого понимания механизмов работы проекта и вовлечённых технологий. Это один в один то, чем занимаются разработчики в реальных проектах.
Показывает умение работать в команде. Начинающему разработчику никогда не поставят задачу создания чего-то с нуля. Приходить придётся на уже работающий проект, со своей историей, болезнями, кодстайлом, архитектурой, легаси. Внесённые изменения могут быть отправлены на доработку — умение адекватно реагировать на замечания может стать решающим фактором. Например, если в проекте делают отступы двумя пробелами, а не четырьмя, вы сделаете так же и не будете доказывать, что это неправильно.
Идеальная тема для интервью. Все изменения в проект с открытым исходным кодом, внесённые кандидатом, публичны и видны всем. Их корректность проверена сообществом с высокими требованиями к качеству кода, этой библиотекой или сервисом пользуются люди. Внесённые изменения требовали работы мысли, о которой мне захочется поговорить во время интервью. Мне интересно, почему было принято такое решение, какие альтернативы были рассмотрены, как была найдена причина данного бага.
Возможность посмотреть на код кандидата, написанный в комфортных условиях. Не умаляю важности кодинга на интервью, но он никогда не получается готовым к релизу в продакшен, тем более если лайвкодинг проходит джун. Временной лимит, стресс — всё это приводит к тому, что кандидат собирает код, который будет хоть как-то работать. Ключевое во время такого собеседования — посмотреть, как кандидат мыслит и подходит к задаче.
Во время лайвкодинга я не увижу, как код будет протестирован и как он был бы написан в спокойном состоянии. А ведь мы никогда не работаем под дулом пистолета, а сидим в спокойных, уютных офисах. У нас есть время и чашка кофе, и мы можем создать хорошее решение. Интервью — это стресс. Если у меня есть возможность посмотреть, что кандидат делает, когда спокоен, это идеально. Если нет — простите, но я принимаю решение из полученной во время интервью информации. Я приложу максимум усилий, чтобы сделать интервью комфортным, но не всё в моих силах.
Обязательно включайте в резюме проекты с открытым исходным кодом. Это реальный опыт работы, просто за него не заплатили. С моей точки зрения, open source будет смотреться на порядок весомее, чем портфолио из очередных CRUD-сервисов.
Как выбирать проекты для контрибьюшена
Чтобы выбрать проекты, в которых можно поучаствовать, зайдите на GitHub в раздел Explore.
В Explore зайдите в раздел Trending Repositories и выберите в нём язык коммуникации и язык программирования, на котором написан проект, например Java.
Так вы отфильтруете популярные, активные репозитории, где контрибьюторы общаются на английском и основной язык самого репозитория — это Java.
Дальше найдите репозиторий, который вам по душе, и зайдите в раздел Issues — это все открытые задачи на проекте. Выбирайте issue с максимально подробным описанием — идеально, если описаны шаги, необходимые, чтобы воспроизвести проблему.
Вот пример такого issue:
Также можно подписываться на топики по интересующим вас темам, инструкцию можно найти тут.
Дальше клонируйте этот репозиторий, попытайтесь воспроизвести проблему и решить её. Даже если решить не получится, вы прокачаете свои навыки. Даже первые несколько шагов — склонировать репозиторий и запустить его — уже хороший опыт, похожий на реальный проект. Об этом можно рассказать на собеседовании.
Возможно, имеет смысл отправиться в средние по популярности проекты — там будет меньше конкуренции и больше простых нерешённых задач. Если репозиторий за один день лайкнули 500 раз, то вокруг него крутится много контрибьюторов. Новичку лучше выбрать менее конкурентный проект.
В open-source-проектах джуну важно показать максимальную самостоятельность. Пройдя весь этот путь, он покажет, что знает, что такое Git, умеет создать pull request и достаточно знает про Java, чтобы запустить проект и внести в него какие-то значимые изменения. А если он чего-то не знал, то самостоятельно нашёл решение. Это максимум, который я могу требовать от джуна.
К кому обращаться за помощью, если пишешь для open source
В open source довольно доброжелательное комьюнити. Если вы правильно задаёте вопросы, вам всегда помогут. Навык задавать вопросы — тоже важен для IT, но обладают им далеко не все. Половина моих студентов после четырёх месяцев объяснений всё ещё периодически загружает не текст исключения и описание проблемы, а сообщение: «Помогите, что делать?»
Правильно сформулированный вопрос в IT состоит из таких пунктов:
- Описание состояния, которое вы пытаетесь достичь, например: «Пытаюсь библиотеку валидации ABC:1.2.3 заставить работать с фреймворком FooBar:3.2.1».
- Перечисление, что вы для этого делали, — пошагово.
- Описание, куда смотрели, что читали и пробовали.
- В идеальном случае достаточное количество информации, чтобы проблему можно было воспроизвести.
- Вопрос, какие шаги нужно предпринять дальше, чтобы приблизиться к решению.
Это и будет идеально заданный предметный вопрос. Если вопрос более абстрактного характера, то такой алгоритм тоже подходит, например: «Я смотрю на технологию A и технологию B. Мне кажется, что технология A имеет такие преимущества и недостатки, а технология B — такие, что я упускаю?»
Вопросы, заданные в таком формате, демонстрируют уважение к отвечающим:
- Избавляют от необходимости уточнять. Вы можете что-то упустить, но должны по крайней мере прилагать усилия, чтобы у отвечающего была полная информация. Человек может быть в другой временной зоне или ответить через неделю. Если ему надо переспрашивать, это увеличивает turnaround time до неприличия.
- Свидетельствуют о том, что вы не просто наткнулись на проблему и тут же подняли лапки. Вы копали по разным направлениям, у вас есть прогресс, и вам как минимум не нужно советовать то, что уже испробовано. Вы действительно потратили своё время и действительно в тупике.
Open source делает вас самостоятельной боевой единицей
С моей точки зрения (только с моей, не с позиции Amazon или Wise), джун — это самостоятельный разработчик, которому можно отдать на откуп компонент с довольно чётко прописанным ТЗ. А дальше, при минимальной помощи и поддержке от других членов команды, он должен довести работу до конца. Это человек, которому я могу сказать, в каком месте у нас баг, при каких условиях он появляется, и попросить решить. Джун сделает пусть не идеальное, но самостоятельное решение. Если не сделает, то это не джун, а человек, который ещё только учится.
Перейти из стадии «просто учится» в джуны можно как раз с помощью open source. Такие проекты — это доказательство, что человек стал самостоятельным. Следующей ступенью эволюции будет мидл — специалист, которому можно поручить дизайн компонента, работающего на уровне всего проекта. А следующая ступенька — уже синьор. Он видит много сервисов и может работать над их взаимодействием, над всей системой. Это довольно условные разграничения, но самостоятельность нужна в любом случае.
Нанимающая компания отдаёт себе отчёт, что вы будете задавать много вопросов, что джун — это инвестиция. Но в текущем рынке, где инвестиции сокращают и нанимать джунов боятся, предпочитают подождать или заплатить в три раза больше за синьора — лишь бы быть уверенными, что наняли человека с нужным уровнем знаний, соответствующего ожиданиям.
У джунов же горящие глаза и рудиментарные навыки, а будет ли из них толк — становится понятно через полгода. И часто оказывается, что толка не будет. Чем больше продемонстрируете доказательств вашей самостоятельности, тем лучше для вас.
Выводы
- С точки зрения работодателя, наём — это риск. Дорогой риск. Поэтому в найме false positive лучше, чем false negative. Лучше не взять потенциально хорошего программиста, чем нанять плохого.
- Джунов сложнее собеседовать и страшнее нанимать, потому что они стоят в найме не намного дешевле синьоров, пользы от них на порядок меньше и получает её компания гораздо позже. То есть какое-то время бизнес просто тратит деньги в пустоту.
- Понять про джунов на собеседовании тоже можно гораздо меньше — у них слишком мало опыта. Зачастую они не могут рассказать, что делали, какие ошибки допустили и чему научились. А это важно, чтобы оценить кандидата.
- Open source, на мой взгляд, идеальный вариант сэкономить ресурсы компании и заявить о себе. Этот вариант подойдёт и рекрутерам, и HR-специалистам — у них есть строчка, в которой указывается, какие проекты человек делал. И это идеально для меня как для нанимающего инженера. Ведь я могу посмотреть и реально увидеть код кандидата.
- Собеседование — это стресс, а работаем мы в спокойном состоянии. Мне интереснее посмотреть, как будет выглядеть код, написанный дома для реального проекта, чем на нервный лайвкодинг.
- Open source — это опыт, о котором можно заявить в CV и который даёт вам действительно полезные навыки коммерческой разработки. А пет-проекты показывают, в каких инструментах заинтересован человек, какие базовые действия он освоил в процессе учёбы.
Комментарии (18)
Akriosss47
05.04.2023 07:46Если сейчас начать учить весь стак джаваскрипт реакт и тд.Есть шанс что возьмут или зависит?Потому что как вы говорите берут только мидлов и выше,подавал на стажировку месяц назад,тех интервью рассылали, сдал- никто не взял.
vldmrmlkv
05.04.2023 07:46Джунов сложнее собеседовать и страшнее нанимать, потому что они стоят в найме не намного дешевле синьоров, пользы от них на порядок меньше и получает её компания гораздо позже. То есть какое-то время бизнес просто тратит деньги в пустоту.
Будет ли компания меньше бояться джунов если будет предлагать стажировку с нестрашной для них оплатой для дообучения с последующим трудоустройством?
AliKamil Автор
05.04.2023 07:46Это все равно инвестиция - тратится время имеющихся сотрудников на обучение. Зависит от положения кампании, но тот же Практикум начинался как школа для внутреннего обучения - когда вырастить оказалось легче чем найти.
vldmrmlkv
05.04.2023 07:46Не понимаю как может быть по другому. Даже опытному нужно время въехать в проект и он стоит дороже и точно также может уйти если что-то не понравилось и он это сделает намного быстрее т.к. он рискует меньше чем джун которому сложнее найти работу.
Встречал ещё такой вариант, когда сотруднику покупали курсы и заключали договор на то, что он вернёт стоимость если уволится в течении года после прохождения курсов, но это было с уже работающими сотрудниками т.к. проект был сложный и это сработало.
MrNutz
05.04.2023 07:46В одном месте написано про сеньора в 2-3 раза дороже джуна, где то про джуна, который не особо дешевле синьора. Это как?
В наших реалиях средний джун пускай будет 100, а синьор 250. Разница явно существенная. При чем джун это именно из статьи, который сам чего то могёт, а не прокладка между монитором и креслом, которую надо держать за руку после очередных недокурсов.
Что касается пет проектов и опенсурса, то это тоже ни о чем. Во-первых, все должны этим заниматься что ли? Ну вот реально. Людям больше заняться нечем, как делать что-то ради показухи? Сам люблю покорить что то для себя. Ключевое - для себя, а не для кого то ещё. И информационным эксгибиционизмом тоже не страдаю чтобы свое обязательно куда-нибудь выложить.
Во-вторых, человек может отлично владеть инструментом, т.е. средствами разработки, но совершенно не соображать как это применить в контексте бизнеса. Видел такое часто. Да, язык знает хорошо, но толку... В этом плане ни пет проект, ни опенсурс об этом не расскажут.
AliKamil Автор
05.04.2023 07:46+2Имею в виду стоимость найма для кампании. Предположим, что оба не проходят испыталку - зарплата за этот период составляет только часть общих затрат кампании.
По поводу пет-проектов и open source - нет, никто не обязывает этим заниматься, но это возможность получить конкурентное преимущество. Как раз open source позволяет увидеть применение навыков в контексте - а остальное выясняется на собеседовании.
kompilainenn2
05.04.2023 07:46добро пожаловать в OpenSource, но практика показывает, что даже те, кто хотели бы, пугаются и уходят сразу почти
saboteur_kiev
05.04.2023 07:46+2Проблема в том, что очень многие не понимают смысла термина "пет проект" думают, что это тестовый проект. А на самом деле, еще в школе можно делать кучу пет проектов, без знания архитектуры, кое-как, кое-что и получить несколько лет опыта разработки, причем пройдя по граблям, и потом почитав про архитектуру и код стайл, будешь отлично понимать разницу
open source - бывает очень очень очень разный. В хороший open source сложно войти с нуля, зато можно познакомиться с полным циклом разработки, с код ревью, с взаимодействием, с багтрекером и так далее.
А можно попасть в опенсорс пет-проект, где ничего не организовано вообще.
kompilainenn2
05.04.2023 07:46Вообще то я приглашал в конкретный проект, LibreOffice, видимо ссылка не работает
sshikov
05.04.2023 07:46+1Ну, тут прекрасно видна типовая проблема таких проектов (в качестве вклада в портфолио). Они обычно (те, что кому-то интересны) достаточно сложные, очень часто — сложнее того, что джуну дадут на типовом первом месте работы. Вот и ваш пример — если судить по гитхабу, у ядра LibreOffice более 1000 разработчиков. Это большой проект. По разработчикам — так раз в 10 больше любого из проектов, что я в жизни видел. Очень сложно туда войти со стороны.
пугаются и уходят
Ну так потому и пугаются, очевидно...
kompilainenn2
05.04.2023 07:46А что показывает количество контрибьютеров в проекте? Сложность проекта? Вряд ли. Ну и у нас есть список изи хаков для как раз начинающих кодеров. Но все же ищут что попроще, одни индусы ничего не боятся...
sshikov
05.04.2023 07:46Сложность проекта? Вряд ли.
Почему вряд ли? Конечно это не единственный параметр, но у простого проекта никогда не будет 1000 разработчиков. То есть, это не достаточный признак, но один из важных. Я не говорю что все проекты такие — я говорю, что выбор подходящего для начала деятельности проекта вещь непростая. В конце концов, я скажем был готов участвовать в проектах типа Apache Camel или там Karaf после того, как года три с лишним пользовался обоими — и имел опыт нетривиального применения. А без такого опыта — ну зачем там первый попавшийся джун? На рутину?
есть список изи хаков для как раз начинающих кодеров.
Ну так и в обычной работе начинающие кодеры будут делать ровно тоже самое — решать простые рутинные задачи. Какие смогут. То есть, в общем-то, в опен сорсе джуны это такие же риски, как и в бизнесе — они приносят мало пользы, и отвлекают более грамотных. И при этом будучи в команде из 1000 человек показать, что ты внес реальный вклад — весьма нетривиальная задача.
9982th
05.04.2023 07:46+1Вообще то я приглашал в конкретный проект
Это не совсем очевидно в такой форме. При виде фразы "добро пожаловать в OpenSource" у меня сработал детектор сарказма и по ссылке я ожидал, например, неадекватного майнтейнера, который отклоняет толковый PR по надуманным причинам.
Касательно самого приглашения — я испугался уже просто увидев название. У меня есть представление о LibreOffice как о большом и страшном проекте, который даже просто компилируется дольше, чем ядро Linux. И страница по ссылке, говорящая "The source is written in many different languages and formats — C, C++, Java, Bash, JavaScript, Python, Perl, SQL, XML — and consists of roughly 102,000 files (excluding all localizations) ", это представление только укрепляет.
Чтобы начать что-то делать с кодом, нужно разобраться со структурой проекта (те самые сто тысяч файлов), с системой сборки, как запускать тесты, для отправки патча придется заводить аккаунт во внутреннем трекере. Не факт, что впечатление, которое произведет на интервьюера, не поленившегося открыть гитхаб, коммит с заголовком "removed unused imports in UI tests", стоит потраченных вечеров и горы информации о конкретном проекте, которую сложно применить в других местах.
Polaris99
05.04.2023 07:46+1Если у джуна есть вклад в опенсорс или достаточно сложные пет-проекты - то это уже не джун. Хотя с этой вашей классификацией, когда через полгода опыта - уже мидл, а через два - полновесный сениор, и не такое, наверное, бывает.
buka_jaz
05.04.2023 07:46проекты для контрибьюшена >> не знала. Спасибо полезная статья, не только для разработчиков, но и для QA растущих в автоматизацию (где нужна JAVA). Тестировщику тоже нужно ориентироваться в инструментах разработчика и демонстрировать знания языка.
Guul
05.04.2023 07:46У меня одного пет проекты написаны левой пяткой где работает лишь happy path, а обработка ошибок реализована по минимуму? Просто если есть проблема, которую можно решить программным путем, то тратить лишний час на ошибки которые никогда не возникнут - это как-то такое себе удовольствие.
Я бы свой код из пет проектов в ынтерпрайз не пустил.
panzerfaust
А нанимают как раз Amazon, Wise и Яндекс, а не вы. И всем этим машинам просто наплевать на ваш вклад в опенсорс, пока вы не главный мейнтейнер либы из топов npm или maven central.
AliKamil Автор
Перефразирую - это не является официальным мнением кампаний, но отражает мое мнение как практикующего интервьюера в тот же Wise. Плюс это обсуждалось с нашими эйчарами и другими интервьерами. Так что нет, топа от начинающего не ждут.