В этом году будет 10 лет как я зарегистрирован на этом сайте и немногим больше я занимаюсь веб-разработкой, в основном фронтендом.
Кажется это хороший повод посмотреть как это было, может быть и вы заметите какие-то параллели со своим опытом.
Начало: веб-студия
На 4 курсе университета ИТМО я решил что пора бы перейти от случайных студенческих подработок на полноценную работу. К тому моменту я уже умел немного в программирование, git и linux. С таким набором навыков я попробовал откликнуться на предложение стажера в веб-студию и после тестового задания получил свою первую работу.
У студии был свой стартап, который должен был перевернуть рынок услуг. С технической точки зрения там был jQuery для внешней части сайта и ExtJS для админки. Я начал втягиваться в проект, брать на себя все более сложные задачи. В какой-то момент попалась особенно сложная задача, стилизовать ExtJS. Я решил поделиться своим опытом с сообществом, и так появилась моя первая статья на Хабре.
Проект развивался, а я набирался опыта. Было несколько редизайнов, при которых мы переписали большую часть кода с нуля, переехали с самодельного фреймворка поверх jQuery на AngularJS. Также я прочел "Совершенный код" Макконелла и книжку с носорогом, знал все самые трудные аспекты JavaScript, которыми так любят пугать новичков.
Со временем оказалось, что я уже один из старожилов в компании, мне достаются самые сложные задачи, и я сам обучаю других. Кажется, вот оно случилось, я дорос до сеньора.
Яндекс
Инвестиции в стартапе постепенно заканчивались, а продажи росли не очень. Перспективы для разработчиков были так себе. Так что я причесал свое резюме, расписал все технологии с которыми на тот момент работал, добавил профиль на Github со своими опенсорс-поделками и отправил всё это в Яндекс.
Собеседующим Яндекса понравилось, они пригласили меня на интервью, которое я прошёл и получил работу. Я оказался единственным фронтендщиком в команде, поэтому мои технические решения под вопрос никто не ставил. Оно и неудивительно, ведь у меня уже был огромный опыт с прошлой работы (как мне казалось).
Однако выяснилось, что в других областях я не разбираюсь совсем, а надо. Распределенные и высоконагруженные системы требуют особых подходов, в том числе и на фронтенде. Нельзя просто так добавить дополнительных данных в ответ сервера, если это требует дополнительного запроса в базу, который может положить производительность всей системы. Нужно проектировать UI исходя из структуры хранения данных и не все хотелки фронтенда получается реализовать. Так я научился проектировать API между клиентом и сервером.
Также мне пришлось познакомиться с автоматизацией тестов. Отдельных тестировщиков у нас в команде не было, нужно было делать это самому. Так я погрузился в Selenium Webdriver, разобрался с хорошими и плохими практиками, благо вокруг было много замечательных коллег, которые могли показать как надо.
И вот я уже мог добавить еще пару скиллов и ачивок в свое резюме.
Амазон
К 2016 году я решил, что в Яндексе уже расти некуда. Компания поменялась, это был уже не тот ламповый стартап как в 2013, когда я только туда пришел. Много коллег уже написали свои прощальные "я мухожук" письма. Пора двигаться дальше и обновить своё резюме, а значит снова встал тот самый экзистенциальный вопрос – сеньор я или нет?
К тому моменту у меня был уже приличный послужной список, в котором были и контрибьюшены в популярные проекты и даже наш собственный allure-framework, который мы выложили в опенсорс из Яндекса. По стеку технологий тоже всё было прекрасно, у меня уже был опыт на всех популярных в тот момент фреймворках (Angular, Backbone, React) а также новейшем ES6/ES2015. Прекраснейший набор, конечно я настоящий сениор!
Я решил податься в компанию Амазон. Собеседование прошло хорошо, я ответил на все их вопросы о том, как я решал трудные ситуации и укладывался в сроки по задачам, а также написал прекрасный и читаемый код на секции про кодинг. Через некоторое время мне позвонили и сказали, что я получил оффер.
Первое время в Амазоне всё казалось простым и понятным, это тот же Яндекс, только масштаб помноженный на десять. Достаточно было немного освоиться, и продвижение по карьерной лестнице обеспечено!
Однако после первых полугода испытательного срока выяснилось, что не всё так просто. Во-первых, наш проект очень маленький и незначительный в масштабах всего Амазона, поэтому настоящих сеньоров у нас в команде не было вообще. Во-вторых, даже в этой ситуации мои тиммейты были опытнее меня. В общем, по меркам моей команды, я ни то что не сениор, но и до мидл-позиции не дотягиваю. Моя картина мира в это время выглядела как-то так:
Да, у меня был обширный опыт с какими угодно технологиями, я мог построить супер-расширяемую архитектуру, используя все необходимые программные паттерны, но компании было нужно что-то другое. Оказалось, задача не кончается написанием кода и пушем его в продакшен, но ещё и обосноваванием своих решений. И ответ "так лучше, потому что я так знаю" совсем не котируется. Нужно было разворачивать и презентовать коллегам всю цепочку рассуждений, от исходной задачи до результата. Так я познакомился с не-технической частью разработки.
Проект наш тоже рос и развивался, и уже стал важной частью инфраструктуры Амазона. Цена наших решений тоже возросла. Мы разрабатывали внутреннюю библиотеку, поэтому тут важно было соблюдать версионирование и стабильное API. Так я познакомился с законом Хирама – о том, что любое поведение вашей системы будет так или иначе эксплуатироваться пользователями. Пришлось научиться работать и с этим тоже.
Я начал предлагать как нам зарефакторить наш продукт, чтобы фичи в него добавлялись быстрее. Наш менеджер убеждал меня, что на это времени нет, придется потерпеть. На что я показывал ему эту картинку:
Но на одних мемах аргументацию не построишь, нужно было еще подвести под это какие-то данные и цифры. Так мне пришлось копать в сторону планирования, собирать информацию и примеры, где мой рефакторинг мог бы принести пользу. И только когда собрался достаточный портфель доказательств, мне удалось получить добро (и время разработчиков) на переделки. Во время переписывания мы закономерно столкнулись с эффектом второй системы, с которым пришлось активно бороться и умерить свои хотелки, чтобы переписывание всё-таки добралось до финиша.
И вот, теперь у меня есть опыт не только написания новых проектов, но и переписывания старых. Появился опыт общения с стейкхолдерами, навыки оценки не только своего времени, но и всей команды. Важно было приоритизировать задачи на год таким образом, чтобы первая половина не вылилась в прокрастинацию, "ведь у нас еще весь год впереди".
Однажды, на очередном 1-1 разговоре, мой менеджер сказал, что по итогам проделанной работы меня повышают. Я теперь официально называюсь Senior Front-end Engineer. Только вот если кто-то меня теперь спросит, сеньор я или нет, то я отвечу что хрен его знает, кто такие, эти ваши сениоры.
Metotron0
Вот бы вживую на настоящего сеньора посмотреть, чтобы прикинуть, сколько до него расти. Есть подозрение, что угол наклона моего графика роста меньше, чем у сеньора, поэтому я со временем не только не приближаюсь, но ещё и удаляюсь.
С другой стороны, а оно надо? Это же наполовину менеджер, получается. Вообще другая профессия. Когда я 13 лет назад заинтересовался вебом, я и представить не мог, что развитие тут идёт в менеджера. Но также я тогда не знал, что программирование интересное, пока делаешь его не за деньги, а для творческих задумок. Стоит пойти работать — сиди крути фреймворки так, как тут у нас принято их крутить. Ничего не изобретай, потому что после тебя это нужно поддерживать. Если нужно сделать какой-то серьёзный выбор, позови старших, они не дадут выбрать не то. Тоскаа.
ReDev1L
Синьор может быть помидором но точно не менеджером. Сеньор это спец своего направления (backend к примеру) с мидловыми знаниями смежных направлений (frontend, devops, databases, service/platform architecture). Но не в коем случае не менеджер. Как только вы начинаете манагить - вы теряете фокус. Распыленный фокус = опускание деталей, а это может дорого стоить.
Менеджер - это уже тимлид, ПМ, CTO. Всё что вам рассказывают/навязывают сверху про менеджера - это экономия и хреновые процессы.
Metotron0
А как же разделение задач между работниками более низкого уровня, контроль их выполнения
sergey-gornostaev
А это задача лида. Можно быть сеньором и не быть при этом лидом.
justboris Автор
Каких-то особых "настоящих" сениоров не существует. У каждой компании своя линейка, по которой они измеряют сеньорность своих разработчиков.
При этом менджмент (в смысле управления людьми) – это уже отдельная ветка развития, в неё идти не обязательно, можно расти и по технической.
chapuza
Это так, но можно и самому прикинуть: по количеству твоего кода, одобренного сообществом, по количеству коммитов в используемые (илм просто перспективные) библиотеки, по количеству коммитов в корку основных языков.
Если твоя фамилия в сообществе никому ни о чем не говорит — это еще не синьёр; максимум — мидл.
Hivemaster
Мне ваша фамилия ни о чём не говорит.
chapuza
Естественно не говорит, у нас сообщества разные. Я имею в виду профессиональные сообщества тех языков, которые вы повседневно используете, а не говнопомойку типа хабра.
Но дело даже не в этом. Я и не синьёр, и не набиваюсь. Бернард Шоу об этом хорошо сказал, правда, применительно, к курицам и омлетам.