
Всем привет!
Не так давно вышла статья о том, как @misterzsm нанял джуна в свой open source проект. Я и есть тот самый джун Рома (на самом деле я Рамазан).
В этой статье я бы хотел рассказать вам эту же историю, но со своей стороны. В частности, расскажу вам немного о своём бэкграунде, о том, почему я решил согласиться на это предложение, а также отвечу на некоторые комментарии из статьи Валика.
Предыстория
Начну чуть издалека. Обучаясь на Физическом Факультете в Петербурге и занимаясь теоретической физикой, я однажды задался вопросом: откуда брать деньги, чтобы жить и семью кормить? В теоретической физике, как бы я её ни любил, денег либо нет, либо за них приходится бороться так, что на семью и личные дела не остаётся никакого времени.
Так я вспомнил, что когда-то любил программирование. После некоторых поисков, проб и ошибок я решил начать с чего-то, как мне казалось, простого (ох, как же я ошибался) - Frontend-разработки. В этом направлении мне нравилось, что я могу видеть результат работы практически сразу. Такой роскоши в теор. физике у меня не было - там можно работать над одним вопросом месяцами, а затем утешать себя тем, что отрицательный результат - это тоже результат.
Таким образом началось моё приключение в мире Frontend-разработки. Поначалу я прошёл несколько курсов на Степике по этой теме, сделав несколько простых пэт-проектов. Параллельно много читал MDN, документацию по инструментам и различные туториалы - всё как у обычного самоучки. Но всегда меня гложило чувство нехватки чего-то важного. Я чувствовал себя одинокой рыбкой в бескрайнем океане информации, мнений, вакансий с заоблачными требованиями и быстро меняющихся технологий. В голове была каша и не было чёткого понимания, что есть хорошие паттерны, а что антипаттерны. И тут я понял - мне не хватает ментора, грамотного товарища или хорошей команды с интересными задачами.

Решение проблемы
Искать себе ментора оказалось довольно сложно - у обычного Senior-разработчика одна часовая консультация стоила около 3-4k рублей в то время, а таковых консультаций мне явно нужно было немало. С учётом стипендии около 2k - перспектива не очень. Поэтому я решил пойти на один из самых крупных форумов в Петербурге и поискать там стажировки, вакансии или просто знакомства.
Не помню, как я наткнулся на IT-сообщество Валика, но именно там я узнал о сходке, которую он собирался провести на форуме Найти IT. Я пошёл туда после пар на ФизФаке, поэтому пришёл под самый конец. Тем не менее я успел найти Валика и задать ему пару дефолтных вопросов по карьере и дальнейшему треку, на которые он вполне хорошо ответил. Он также написал мне и дал ещё несколько рекомендаций, благодаря которым у меня появилось чуть больше ясности в моих приоритетах в IT-сфере.

Но потом, читая о его работе над mlut, я подумал, что мог бы предложить ему свою помощь. О деньгах я особо не думал именно на этом этапе - планировал это как парт-тайм взаимодействие, основанное на бартере. Он бы мне давал консультации, а я бы помогал по разработке инструмента. Ему бы это было выгодно, чтобы разгрузиться, а мне - чтобы получить опыт и экспертизу опытного разработчика. И удивительно, но на следующий день он мне написал с предложением даже лучше моего! Обсудив с ним все условия и мои обязанности, я почти сразу согласился.
Процесс работы
Так как оффер Валик уже подробно описал, в этом разделе я поделюсь своим впечатлением о процессе работы, который у нас сложился.
Я вполне комфортно чувствую себя в режиме фуллтайм работы на удалёнке. У нас есть дедлайны, но у нас никогда не было проблем с тем, чтобы их пересмотреть при необходимости. Определённого графика у нас, естественно, нет - и у этого есть как плюсы, так и минусы. Всё взаимодействие, как Валик и говорил, основывается на доверии, и, к счастью, мы друг друга ещё не подводили. Но за рамками нашего случая джунам/мейнтейнерам, наверное, стоит быть внимательными, чтобы их потенциальный начальник/работник их не кинул, пользуясь отсутствием каких-либо договоров. Например, даже при взаимодействии "самозанятый-физик" можно оформить договор, если есть какие-то сомнения в надёжности человека. У меня же таких нет.
Также у нас в общении нет каких-то формальных ограничений по типу "Пиши только с понедельника по пятницу в рабочее время". Мы друг другу пишем и отвечаем в любое удобное время, а с обратной связью стараемся не затягивать, потому что скорость взаимодействия выгодна нам обоим. Меня такой формат полностью устраивает.
Так что же из этого получилось
Этапы нашей работы и их результаты Валик тоже вполне хорошо описал в своей статье, поэтому в этом разделе я сосредоточусь на том, чему научился я. Могу ли я после 4-х месяцев сотрудничества сказать, правильным ли было моё решение соглашаться на эту работу?
Я бы уверенно сказал - да! И сейчас я объясню, почему.

Hard навыки
За время работы с Валиком над mlut я приобрёл немало чисто профессиональных скиллов.
Во-первых, я в принципе освоил Atomic CSS подход, с которым даже издалека не был знаком до этого. Сейчас я усвоил некоторые его паттерны и антипаттерны, возможности и кейсы, в которых его удобно применять. И я рад, что познакомился с подходом именно через mlut, потому что мне как физику-теоретику очень нравится единообразие и согласованность правил. В этом фреймворке, в отличие от того же Tailwind, есть чёткие правила, выучив и поняв которые можно строить практически любые утилиты у себя в голове. Это к тому же очень удобно и при расширении функционала инструмента, ведь тебе не приходится гадать, как именно построить синтаксис своей кастомной утилиты - все правила уже есть.
Во-вторых, я познакомился с шаблонизатором Eleventy и синтаксисом шаблонов EJS. До этого я работал только с Vue в чистом SFC подходе, и для меня было очень полезно изучить эти интрументы. Я убедился, что для многих простых кейсов использовать Vue - это стрелять из пушки по воробьям, и там не только можно, но и нужно использовать менее громоздкие решения.
В-третьих, я начал изучать подход с Web-компонентами как в ванильном JS, так и в контексте фреймворка Lit. Я и до этого слышал о таком подходе, но он для меня звучал сначала, как что-то страшное, а потом - как что-то синонимичное подходу SFC во Vue. Но ни одно, ни другое не верно полностью. Меня поразила возможность создавать свои собственные HTML-элементы с помощью нативных возможностей JS. А если добавить немного сахара от Lit, то можно и довольно просто создавать стек-агностик реактивные компоненты!
Наконец, я освоился с возможностями SCSS и современного CSS. Изучая Frontend самостоятельно, я смотрел на CSS примитивно - буквально, как на то, что помогает просто красить кнопки. Но во время работы над mlut, а особенно при работе в соц. сетях и создании лендинга с галереей артов, я стал осознавать, насколько мощные возможности CSS я упускал. Во многих случаях, где раньше я бы подключил JS-библиотеку, сейчас я скорее применю возможности современного CSS, который уже обретает черты полноценного языка программирования.
Интересный творческий опыт
А ещё я научился делать логотипы - один я сделал для IT-сообщества Валика. Занимаясь этим я наконец чуть-чуть расслабился и отдохнул от изучения новых технологий. Тогда я подключил свои творческие способности, чтобы воплотить все наши задумки в одной картинке. И, как мне кажется (и не только мне), получилось классно. Жаль только, что в резюме не напишешь об этом.
Soft навыки
Возможно, для читателя этот раздел окажется даже полезнее и ближе предыдущего. Здесь я расскажу о том, какие soft скиллы я приобрёл в течение работы в open source.
Я научился ошибаться и признавать недочёты своей работы. Так как у инструмента не такое большое коммьюнити, как хотелось бы, а дёргать Валика по каждой мелочи малопродуктивно, с некоторыми вопросами в mlut я разбирался самостоятельно и импровизировал. Иногда я делал это неправильно, нагородив кучу ненужного кода там, где это можно сделать проще. Например, я не думал, что, работая в Atomic CSS подходе, не обязательно всё задавать атомарными классами - иногда можно упростить себе (и другим) жизнь и написать ту же палитру сайта просто в Sass-конфиге. И мне приятно было не огорчиться из-за своей ошибки, а порадоваться тому, что можно жить проще.
Также я стал чаще проявлять инициативу и отстаивать свою позицию. То, что я работаю в open source действительно позволяет мне влиять на результат на многих уровнях продукта без лишней бюрократии. Любые мои идеи мы обсуждаем: какие-то принимаем, другие отправляем на доработку - и вне зависимости от результата это прекрасный опыт. Не уверен, что у джуна на галере и тем более в бигтехе есть такая возможность делать серьёзный вклад в ключевые вещи в его проекте. Вряд ли у всех начинающих разработчиков есть возможность так легко общаться напрямую с создателем используемого инструмента и обсуждать с ним идеи по его развитию. И это очень ценно для меня.
Я начал справляться с тенденцией к оверинжинирингу. Вы наверняка уже знакомы с этим навязчивым желанием предусмотреть как можно больше возможных случаев, чтобы сделать код "более универсальным" или проект "более расширяемым". Я этому желанию поддавался, и поэтому для простого лендинга мог нагромоздить такую файловую структуру, какую имеют не все SPA. И всё, чтобы предусмотреть возможное расширение лендинга в будущем, расширение базы компонентов и ещё много чего. Только это по большому счёту борьба с ветряными мельницами, и спасибо этой работе, что она открыла мне глаза на мою ошибку.
Ещё много чего я развил в себе благодаря этой работе: ответственность, решительность, умение договариваться, терпение и открытость в общении. Но чтобы разобрать каждый апгрейд, уйдёт слишком много времени, поэтому оставим это на потом, если кому-то будет интересно.
Минусы работы
У любой работы, как бы она ни была полезна, есть и недостатки. Таковые есть и здесь.
Непрофильные обязанности
Мне как разработчику хотелось бы в первую очередь заниматься разработкой и смежными делами. Поэтому работа в Твиттере и активность на соответствующих площадках меня не очень сильно привлекали. Я вообще до этого был не очень активным участником социальных сетей. Но это входит в мои обязанности, поэтому я постарался найти что-то хорошее и здесь. Конечно, это просто приятно, что тебе платят за сидение в соц. сетях. Но по итогу это ещё и очень расширило мой кругозор в области Frontend-разработки и помогло увидеть, какие мнения и тенденции присутствуют в сообществе.
Да, чуть не забыл самое важное: ещё я научился делать мемы! В этом мне очень помог сайт с огромным количеством классных шаблонов. Но заниматься этим мне как разрабу было не очень интересно. Ещё меньше мне нравилось запрашивать ревью постов в соц. сетях и мемов - это иногда занимало больше времени, чем хотелось бы.
О разнице поколений
Особенно интересно было наблюдать за тем, как мы, будучи из разных поколений, совершенно по-разному понимали одни и те же мемы. Некоторые из них я даже гуглил, чтобы узнать источники, контекст, их смысл. В общем, я ещё и культурно просвещался, пока работал, и в итоге стал Middle мемологом.

Финансовая составляющая
Да, 230 руб./час - это не очень много по сравнению с зарплатами джунов в бигтехе. Для обеспечения семьи, например, этого не хватает - помочь могут только стипендии и семья. А ребятам, лишённым финансовой поддержки, при таком окладе приходится волей-неволей задумываться о других подработках с окладом побольше, но с более типовыми задачами.
К тому же есть в такой работе некоторая зависимость от начальника: если проблемы с зарплатой у него, то скорее всего такие же проблемы будут и у тебя, потому что он по сути платит тебе из своего кармана. В нашем случае, правда, таких проблем не было.
Технологический стек
В open source проекте стек, на котором придётся работать, может быть не самый распространённый и востребованный на платформах типа hh.ru . Например, я не так много вижу вакансий, где указан Lit, а ещё меньше, где есть Eleventy и EJS. Но эти технологии идеально подошли под наш кейс, поэтому я их изучил и применил. К тому же, они могут пригодиться, если меня захантят в ещё один недефолтный проект. И, наконец, это просто полезный навык - быстро учиться чему-то незнакомому - он точно везде пригодится.
Однако любому джуну стоит оценивать свои приоритеты. Изучение технологий требует немало времени и сил, а если на время работы придётся со своего привычного стека переключиться на новый менее востребованный, то старый может забыться со временем. А для джуна это может быть критично.
График
Хотя свободный график удобен тем, что я могу распределять время, как мне удобно, у него есть недостаток. Работая из офиса ты отрабатываешь свои 8-9 часов каждый рабочий день с учётом обедов и всех перерывов, а когда наступает конец рабочего дня ты в идеале останавливаешься и идёшь по своим делам, имея полное право не думать о работе. И за это ты получаешь всё ту же полную зарплату за фуллтайм работу.
На удалёнке и без фиксированного графика ты фиксируешь время именно работы, а обеды, перерывы длительностью дольше 15 минут в идеале не учитываются. Поэтому в течение недели тяжело набирать 40 часов чистой работы. И, честно говоря, я давно не видел у себя хотя бы один день, когда я просто занимался бы своими делами и не включал хотя бы раз рабочий трекер. Это тяжело. Может, конечно, проблема и в моём неумелом тайм-менеджменте, но я всё же оставлю этот пункт здесь, потому что уверен, что у большинства джунов проблема с управлением временем та же.
Рубрика ответов на комментарии
В этом разделе я отвечу на понравившиеся мне комментарии к статье Валика.
Я так же думаю, что Рома используют какую-нибудь LLM. Иначе я себе не могу представить даже студента согласившегося на full time за 230р/час в Питере.
Делал ли я задачи через LLM? Смотря что под этим подразумевать. Я не использовал ИИ, чтобы генерировать код, который должен пойти в прод для лендинга, песочницы и уж тем более самого mlut. Но я использовал ИИ как справочник для ответов на небольшие вопросы. Честно говоря, не вижу смысла использовать ИИ для генерации кода, учитывая, что я хотел научиться самостоятельно писать нормальный код и делать интересные вещи. К тому же, мне повезло с тем, что многие задачи у меня были действительно увлекательными, и обидно было бы эти возможности терять, просто генерируя код в ИИ. Но тут кому как - всё зависит от приоритетов.
Как я мог согласиться на такую небольшую зарплату в Питере? Поверьте, студенческая стипендия в Питере и зарплата в НИИ, где я работал по специальности, куда ниже, чем здесь, поэтому для меня это карьерный рост! К тому же у меня на этом этапе была другая цель - найти ментора. А тут не только менторят меня и дают мне интересные задачи - мне ещё и платят за это. Искал медь - нашёл золото! К тому же, как в комментариях некоторые подмечали, работа в open source проекте - очень хорошая строчка в резюме.
<div class="-Ctx Bgc#000 Bgc#000*50p_h D-f Fld-c Jc-c Ai-c">
<div class="P2u;0 Js-fe ^:h_Js-fs">...</div>
<div class="C-#fff ^:h_C-red">...</div>
</div>
Ужис кокой!
И у джуна потом ПТСР
Будет ли у меня ПТСР после mlut? Нет. Мне понравился сам инструмент и его задумка: чем больше открывал возможностей, тем больше он мне начинал нравиться. Удобный для меня самосогласованный синтаксис - это прямо мёд для моего мыслительного процесса. А то, что сокращения с первого взгляда выглядят страшно - это дело привычки. В любом случае, скорость написания кода и удобство его поддержки лично в моём случае только возросли по сравнению с рукописным CSS.
Бедный Рома.
А лошадка не сдохнет? (С)
Сама по себе работа очень классная и интересная. Я действительно буду вспоминать её с улыбкой, когда мы закончим запланированное. Но, как я уже говорил выше, работать в режиме свободного графика и при таких условиях трекинга времени, когда при необходимости любой твой день может стать рабочим, а обеды в рабочее время не входят - для меня дело не очень простое.
Я хотел бы всё же иметь границу в ходе дня, когда работа кончается. Но тут скорее дело не в работе как таковой, а в моей дисциплине. А свободный график - это та самая большая сила, которая требует большой ответственности. Таким графиком нужно уметь пользоваться, а значит, нужно учиться грамотному тайм-менеджменту и правильной расстановке приоритетов. Здесь мне есть, над чем работать, чтобы стать идеальным джуном в плане дисциплины.

и чего джуна засрали то?
сейчас рынок перегрет настолько, что опытные спецы ищут работу месяцами (а особо привередливые годами). Человек с около нулевым опытом нашел ОПЛАЧИВАЕМУЮ работу причем не галеры. Это огромный успех!
С точки зрения работодателя, для него я думаю это больше благотворительность и вкладывание на перспективу потому как спец на фрилансе обойдется столько же но без лишнего времени на дообучение и перепроверки. Можно только уважать такой поступок.
За этот комментарий просто хочу сказать спасибо. Согласен со всем, что тут сказано!
Заключение
В завершение своей статьи хотел бы ещё раз сказать, что свой опыт работы в open source проекте я оцениваю очень положительно. Порекомендовал бы я джунам подаваться в open source? Если джун имеет очень мощную базу, ему нужны деньги, и его с удовольствием заберут к себе tier-1 компании с зарплатами 100+k, я бы скорее посоветовал им пойти в эти компании. Но если брать человека менее выдающегося, типа меня, или сильного джуна, у которого проблем с деньгами нет, то open source проект с надёжным начальником - очень хороший способ увеличить свой опыт, поучаствовать в чём-то интересном и загореться новыми идеями, да ещё и за деньги.
Спасибо, что дочитали мою дебютную статью до конца!
Оставляйте своё мнение в комментариях, делайте апвоуты и ставьте звёзды нашему проекту на гитхабе. Если поделитесь статьёй с джунами, находящимися на перепутье, я буду ещё больше рад!
cmyser
Себя принижать - очень вредная привычка. Очень советую избавиться, поможет достигать целей более эффективно
RamazanMI Автор
Да, спасибо большое за совет.
Есть у меня такое. Просто на ФизФаке насмотрелся на очень умных ребят, поэтому вот так сравниваю)