Подводные камни на пути к должности Senior: учимся на чужих ошибках

Салют! Меня зовут Евгений, и сегодня я поделюсь с вами главными подводными камнями на пути от Junior до Senior. Все написанное основано на моем личном опыте, так что приготовьтесь — будет интересно!

Евгений Корнеев
CTO MyGig.ru
Ex-techlead VK Play Cloud
ex-CTO Learn2Play

Вступление

С развитием онлайн-обучения рынок труда в IT сильно изменился. Найти работу специалистам junior-уровня все сложнее, а найдя ее, они боятся быть уволенными. При этом у senior-ов таких проблем не возникает: за них компании, наоборот, активно воюют, предлагая высокие зарплаты и бонусы — или просто переманивают у конкурентов.

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

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

Фундаментальные знания

Здесь речь пойдет даже не про алгоритмы и структуры данных, а про знание инструментов, с которыми вы работаете. Я давно уже не слышал на собеседованиях требований объяснить, что такое «полиморфизм» или «двудольный граф». Гораздо чаще вопросы находятся как раз в практической плоскости.

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

Убедитесь, что вы разбираетесь в том, как работают базовые сетевые протоколы: что такое TCP, HTTP, RPC, REST API и как это применимо к современным клиент-серверным приложениям. Например, что такое заголовки, cookies, базовая авторизация и SSL/TSL.

Если чувствуете пробелы в этих областях, то на помощь всегда придет самообразование. Интернет сейчас полон статей и видео в формате «IT для начинающих» — легкое гугление по любому из перечисленных мною терминов выдаст вам множество видео на YouTube.

То же касается и технологий, уникальных для вашей специальности. Программируете на JavaScript, например? Тогда обязательно разберитесь, что такое Event Loop, микро- и макро-таски, как передается контекст в функциях и т. д. Постарайтесь понять, как ваша технология работает «под капотом», хотя бы на базовом уровне: что происходит при запуске программы, а что в процессе ее выполнения.

Читайте. Да, все так просто. Книги по интересным и актуальным технологиям, блоги разработчиков и IT-компаний, да те же VC и Хабр. Если вы достаточно владеете английским, то вам сразу доступно сильно больше актуальной информации, но и на русском языке полно хороших текстов (особенно по основам разработки).

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

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

Я прекрасно осознаю, что сложно заставить себя штудировать книжки, YouTube и курсы просто так, но вот вам хороший совет, который поможет встроить постепенное обучение основам в ваш рабочий процесс: не полагайтесь слишком сильно на магию технологий, каждый раз выполняя практическую задачу. Задайте себе вопрос просто вопрос: понимаете ли вы, как выполняется ваш код от начала до конца? Если нет, то найдите ответ в интернете или задайте его своему ментору/лиду, или, на худой конец, ChatGPT.

Больше решенных задач – больше опыта – больше денег

Невозможно стать senior-разработчиком за 1–2 года, даже если вы вундеркинд. Дело в том, что специалистов высокого уровня отличает большая насмотренность, ведь они за свою карьеру повидали много проблем и много решений. Это позволяет им быстрее ориентироваться, допускать меньше ошибок, покрывать более крупные задачи и брать больше ответственности.

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

1. Пет-проекты

Pet-projects — главное оружие хорошего junior-а. Чтобы не застрять в рамках технологий, библиотек и архитектурных решений, принятых у вас на работе, нужно пробовать доделывать до конца свои небольшие проекты. Хотите научиться писать тесты — сделайте свой аналог твиттера, разработанный полностью по принципам TDD. Есть желание научиться работать с веб-сокетами — пилите свой простенький мессенджер.

Можно (и даже полезно) также пойти по другому пути: возможно, у вас давно есть идея какого-то своего проекта. Тогда просто попробуйте реализовать его упрощенную версию, самостоятельно решая возникающие по пути проблемы.

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

2. Попросить сложные задачи на работе

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

Если вы бэкендер, то это может быть небольшой микросервис, если фронт — рефакторинг раздела на сайте. А если работаете над мобильным приложением, то это будет перевод пары экранов iOS-приложения с UIKit на SwiftUI. Что угодно, лишь бы это было для вас вызовом, а не рядовой задачей. Как правило, в любом бэклоге есть задача, до которой просто ни у кого не добрались руки.

3. Коммиты в open-source

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

Однако сейчас есть много сайтов, на которых собирается информация по проектам, которым может понадобится ваша помощь. Хороший список таких агрегаторов вот тут. Выберите проект, выберите проблему с пометкой good-first-issue и попробуйте решить.

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

4. Хакатоны, митапы, конференции

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

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

От Senior-ов ждут более широкой зоны ответственности

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

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

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

Софт-скиллы

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

Поэтому я не хочу давать советы вроде «находите компромиссы», «будьте открыты для коллег» и т. п.: люди разные, и все они так или иначе находят свое место на рынке — при условии, что растут и развиваются как специалисты.

Поэтому главный мой совет — не будьте равнодушными. Ни к тому, над чем работаете, ни к своей карьере. Именно такие люди привлекают на собеседованиях.

Итоги

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

Старайтесь поглотить как можно больше информации и набраться как можно больше опыта любыми способами.

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

Спасибо, что были с нами! Напоминаю, что онлайн-школа ProductStar предлагает великолепные курсы по программированию (Python, Frontend, Fullstack и многое другое), где вы можете научиться кодить с нуля или прокачать свои скиллы под руководством опытных менторов.

0
Комментарии
-3 комментариев
Раскрывать всегда