Русский
Русский
English
Статистика
Реклама

Развитие программиста

От джуниора до сениора как это было у меня

13.05.2021 18:23:09 | Автор: admin

В этом году будет 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. Только вот если кто-то меня теперь спросит, сеньор я или нет, то я отвечу что хрен его знает, кто такие, эти ваши сениоры.

Подробнее..

Из песочницы Мой путь к получению Oracle Certified Associate и Oracle Certified Professional

16.11.2020 20:18:08 | Автор: admin
Всем привет, меня зовут Руслан. Я работаю в крупном банке на должности team lead'a.

Хочу поделиться с вами моим опытом получения заветных званий Oracle Certified Associate, Java SE 8 Programmer (далее OCA) и Oracle Certified Professional, Java SE 8 Programmer (далее OCP).

image

Обновленный бейдж Oracle Certified Associate
image

Обновленный бейдж Oracle Certified Professional
image

Да, я знаю, что на Хабре уже есть достаточное количество статей на эту тему: раз, два, три, четыре. На мой взгляд, они хороши, но не отвечают на главный вопрос, возникший у меня уже после того, как я начал готовиться к первому экзамену OCA. Ответа на этот животрепещущий вопрос я так и не смог найти а зачем оно мне надо с точки зрения разработчика, какие профиты кроме бейджа и электронного сертификата на сайте я получу? Не будет ли это пустой тратой денег и времени?

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

Итак, мой бэкграунд на момент начала подготовки к экзамену:

  1. Прочтенная книга Философия Java авторства Брюса Эккель
  2. Около 1,5 лет работы с Java
  3. Базовые знание ООП и многопоточного программирования

На работе возникла некоторая стабильность, когда нет срочных и горячих задач, рутина начинает затягивать. Я находился в некотором расслабленном состоянии в плане сроков сдачи и дедлайнов. Вот тут мне и захотелось добавить какого-то перца. Про сертификацию в компании, где я работаю, вокруг то и дело возникали разговоры на эту тему, но это оставалось только разговорами и ни у кого руки до сдачи так и не дошли. Так бы жизнь шла спокойно и размеренно, пока судьба не столкнула меня с одним из лекторов Luxsoft'a, подтолкнувшим меня в пучину обучения.

image

Лектор, по счастливому стечению обстоятельств, является автором книги Nailing 1Z0-808: Practical Guide to Oracle Java SE8 Programmer I Certification по подготовке ОСА. Подготовка к первому экзамену (ОСА) заняла около месяца, практически все свободное время я проводил с книгой в руках либо за тренажером enthuware.

Процесс сдачи довольно прост:

  • вы бронируете себе экзамен в одном из сертифицированных центров в одном из городов на выбор, в моем случае Москва
  • платите порядка 150$
  • отправляетесь на экзамен в назначенное время.

Экзамен проходит в отдельной комнате, с кучей камер направленных на вас. Идею списать отбросьте сразу, на мой взгляд, это просто нереально. Время ограниченно, но для ОСА я считаю его достаточным при достаточном уровне подготовки. Результат вы узнаете довольно быстро, я, например, получил письмо на e-mail спустя 30-40 минут. И ура! Первый экзамен сдан с приличным результатом в 94%

Результат ОСА
image

Промежуточные итоги после сдачи ОСА, с точки зрения работающего разработчика. На первый взгляд некоторые темы затронутые в процессе сертификации кажутся игрушечными, но недооценивать их нельзя. Я считаю, что это те самые тонкости, которые отделяют одних разработчиков от других. Да, все из нас наверняка умеют создавать классы\интерфейсы, пользоваться наследованием и писать if statement. Но лишь малый процент людей заглядывает под капот инструмента, с которым работает. Все, чему я научился в рамках подготовки и сдачи ОСА, тут же начал распространять среди членов моей команды. Нет, я не кичился этим сертификатом, задирая свой нос, я никому ничего не сказал, а просто начал применять полученные знания и делиться ими. Без преувеличения, я бы сравнил это с курсами повышения квалификации.

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

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

Книги, которые я использовал:

  1. Java I/O, NIO and NIO.2
  2. OCP: Oracle Certified Professional Java SE 8 Programmer II Study Guide: Exam 1Z0-809
  3. OCP Java SE 7 Programmer II Certification Guide: Prepare for the 1ZO-804 exam

Ну и куда же без тренажeра enthuware.

В этот раз подготовка заняла 2,5 месяца. Я также почти все свободное время проводил либо за книгой, либо за тренажером. В ОСР темы более сложные и рассматриваются куда намного глубже, чем в ОСА. Повторяем процедуру регистрации, платим 150$ и едем сдавать. Я ради интереса выбрал другой центр для сдачи. На удивление помещение было почти таким же с той же кучей камер. В этот раз времени не хватало катастрофически, фрагменты, которые надо было прочесть, стали больше + усложнилась сама логика, которой надо было следовать. Несмотря на мою активную подготовку, я еле-еле успел ответить на все вопросы и сделать небольшое ревью. Как и в прошлый раз, ответ пришел в течение 30-40 минут. В этот раз результат был ниже, но я все равно считаю его достойным 85%.

Результат ОСР
image

Итак, что получилось в сухом остатке, времени на подготовку и сдачу я затратил около 4 месяцев, 300$ за сами экзамены + покупка книг и две лицензии на тренажер enthuware. Большие ли это затраты времени и денег в сравнении с полученными знаниями? Мой ответ нет. В процессе этого обучения мне удалось понять принцип работы Stream API, какой-то процент работы с многопоточностью и многое-многое другое. Можно ли было это все выучить, не сдавая никаких экзаменов, не покупая книг и прочего? Тут я отвечу да, но все не так однозначно. На личном примере могу сказать, что обучение вне временных рамок не так эффективно.

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

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

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

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru