Новиков > путь в Big Tech – Telegram
Новиков > путь в Big Tech
184 subscribers
94 photos
192 links
От зеро-кодинга на стройке до написания высоконагруженных сервисов в Big Tech. 

Пишет SWE в Avito.ru (backend), в прошлом: .NET developer и сертифицированный специалист по использованию BIM.

Написать автору: @nvkv_ai

Книги: https://boosty.to/time2code
Download Telegram
Бывает, включишь что-то случайно на ютубе и оторваться не можешь.

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

Про CS50, мне кажется, я знал, когда еще не интересовался программированием. Это уникальный проект Гарварда, который по сути является введением в Computer Science для студентов, но он получил настолько большую популярность, что теперь ежегодно транслируется в онлайне на весь мир.

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

Одной из целей на 22 год было освоение базы по HTML, CSS, JavaScript. Остается 2 месяца и я прекрасно понимаю, что на полноценный курс меня точно не хватит, но цель как-то закрыть хочется… и тут неожиданно натыкаюсь на лайв CS50, лекция 8, как раз по желанной теме: https://www.youtube.com/watch?v=alnzFK-4xMY
- думал посмотрю 20 минут, а потом досмотрю запись, но не тут-то было.

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

Если бы можно было бы пройти только 1 курс по теме программирования, то я бы однозначно посоветовал бы вдумчиво пройти CS50.

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

#обучение
👍2
Октябрь 2022:

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

Тем не менее, без дела в октябре не сидел:

Активно погрузился в микросервисную архитектуру. Очень полезными оказались курсы по внутренней бэкенд-архитектуре всего сервиса Авито, где наглядно демонстрируется как переходили с монолита на микросервисы, зачем это делали и почему теперь работа идет гораздо лучше. Прочитал 1/5 книги “Микросервисы” Криса Ричардсона, чтобы закрепить материал, - продолжаю изучение.

Подтянул свои знания в Agile и частности Scrum. Просмотрел немало видео-курсов по теме + читал профильные статьи. За следующий год обязуюсь прочитать 1-2 книги по гибким методологиям.

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

⭕️ В рамках обучения языку Go (OTUS + Avito): 14/15 ДЗ проверены менторами и приняты. Осталось доделать 15-ую и, самое сложное - финальный проект. До 7 октября не успел, но, к счастью, можно за небольшие деньги сдвинуть срок до 7.12 - чем я и воспользуюсь.

⭕️ Книга “Чистая архитектура” на стопе, обещаю “добить” ее до конца года.

💬 Собираюсь сделать ноябрь ударным месяцем: жестко самоорганизоваться, отладить распорядок дня и по максимуму закрыть остатки, которые переносятся с месяца на месяц.

#результаты
Ноябрь 2022:

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

Освоился с моками! Это такие заглушки, которые имитируют, например, подключение к базе данных, которым ты задаешь ожидаемое поведение и проверяешь логику своего кода - чаще всего ветвление (if и прочие конструкции). Каждый разработчик обязан писать тесты на свой код, я это чувствую на собственном опыте - почти каждый тест подсвечивает недостаток в коде, который упустил из виду во время разработки. Больше тестов => выше качество кода и быстрее рефакторинг.

⭕️ Не получается заставить себя сесть и закончить обучение в Otus, в ноябре был весь в работе + нет большой мотивации заканчивать, к сожалению. Но я обязательно закончу (платный срок сдачи очередной раз продлили, теперь до 7 января).

💬 Зависшее обучение, брошенные на половине книги - это все, конечно, важно, чтобы чувствовать себя прилежным. Буду очень стараться "хвосты" закрыть до конца года, но основной мой фокус сейчас на работе - через пару недель кончается испытательный срок и мне важно показать себя эффективным и влиться в команду.

#результаты
👍1
В Авито нет классических джунов, мидлов, синьоров, а есть понятная система грейдов от E1 - E8.

За 3 месяца работы, пообщавшись с ребятами, я нарисовал себе такое соответствие:
- E1 - trainee
- E2 - junior
- E3 - middle
- E4 - middle+
- E5 - senior
- E6-8 - senior+++

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

Чтобы взять хотя бы E5 мне потребуется минимум 2-3 года, одна из следующих целей - промо до E4.

На собеседованиях часто спрашивают: кем вы видите себя через 5 лет? Я для себя определил: 2-3 года - это будет рост до крепкого синьора (E5) по меркам Авито, а затем, скорее всего, буду уходить в менеджерскую ветку, так как мне интересно общаться с людьми и строить эффективное взаимодействие внутри команды для создания лучшего продукта.

Подробнее про грейды можно почитать здесь: https://github.com/avito-tech/playbook/blob/master/developer-profile.md
Декабрь 2022:

Событие декабря, на который был основной фокус - прохождение испытательного срока в компании. 26 декабря я стал полноценным членом компании. И пускай это была некоторая формальность и так называемый “адаптационных период” я все равно стремился зарекомендовать себя хорошо в работе над задачами и как командный игрок.

Ключевой задачей декабря стало знакомство с Graphite и освоение нового инструмента для работы с метриками - Grafana. Научился создавать дашборды и настраивать алерты через Moira в mattermost (корпоративный мессенджер).

Сроки по обучению в Otus я зафейлил. Проектную работу сдать не удалось, как и 15-ое задание (буду фоном заканчивать, как пет-проект). Результат обучение, в целом, считаю превзошедшим все ожидания. Я не только освоил новый ЯП, но и смог трудоустроиться в крутую компанию с ним!

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

#результаты
Новиков > путь в Big Tech
5📚 | 3г | 👨‍💻 SE [E3]
Так как уже полноценно занимаюсь коммерческой разработкой ПО, то считаю верным подвести итог своего обучения (инженер -> программист).

👨‍💻 2.5 года потребовалось, чтобы с нуля зайти в бэкенд разработку на популярный язык программирования на позицию middle (при этом я начинал обучение с C# и написания десктопных приложений; спустя 2 года сменил язык на Go, а десктоп на веб).

💵 65.000 рублей суммарно потрачено за весь срок обучения, включая: премиум подписку на ITVDN + платные курсы на Stepik + книги + курсы в ВШПСБ + репетитор по математике для подготовки к школе, в которую не стал поступать.

📚5 книг прочитано за все время. Безусловно книги очень помогли уложить в голове некоторые особенности алгоритмов, изучаемых платформ и программирования в целом, но без постоянной практики - они были бы бесполезны.
🔥2
Итоги 2022:

Достижение поставленных целей

Уже более 3-х месяцев работаю на позиции Go developer в крупнейшей IT-компании РФ и компании №1 среди классифайдов в мире.

Отобрался в ВШПСБ и прошел 1 курс по Чистой архитектуре.

Прошел курс по SQL на Степике (продвинутый SQL + проектирование БД).

Обновил CV на Гитхабе и создал страничку в Notion, которую отправлял рекрутерам, где было резюме в разных форматах и ссылка на Гитхаб.

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

Решил 15 алгоритмических задачек (leetcode) и выложил результаты на Гитхаб.

⭕️ Прочитал 2 книги: 1 - по чистоте и качеству кода и 1 по Go (планировал в сумме 4).

⭕️ Не прошел до конца курс по Go от OTUS+Avito. Сдано 14 из 15 ДЗ, финальный проект практически сделан, но не сдан. Прекрасный был курс, жаль не хватило сил его завершить - сложная осень выдалась.

Не прошел курс по Linux.

Не поступил в CSC (отказался от подготовки к экзаменам в процессе, а потом оказалось, что школа в 22-м году закрылась).

Не прошел курс по frontend-разработке (html, css, JS + Angular).

Что еще было за год

✔️ Получил 2 отказа на позицию C#-разработчика и 5 отказов на позицию Go-разработчика. Это отказы после собеседований и тестовых заданий, здесь я не упоминаю еще более 20 неудачных откликов на hh.

✔️ Уволился с работы, где являлся инженер-программистом, автоматизируя проектирование/строительство, в никуда, чтобы учиться новому.

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

✔️ Был забанен навечно в ВШПСБ за то, что просрочил очередной дедлайн и не догадался "заморозить обучение". Это было очень обидно, но я нашел в себе силы вынести из этого полезные уроки.

✔️ Улучшил свои навыки с Linux и пониманием фронтенда за счет статей и лекций CS50.

✔️ За счет книги System Design Interview стал лучше понимать как проектируются веб-системы.

✔️ Поднял и настроил собственный VPN-сервер, что сильно облегчило мне жизнь.

✔️ И, конечно же, прошел 6 собеседований в Авито, из которых 3 - технических и 3 - финальных, на которых оценивали мои софт скиллы и пытались подобрать подходящую команду.

#итоги
🔥1
Цели на 2023:

💫 Закрепиться на позиции «крепкий middle / middle+» (формально - промоут с E3->E4 в текущей компании).

🎯 Сделать полезный (как минимум 1-му человеку принесет пользу) проект, который будет развернут в докер-контейнере на собственном VPS-сервере.

🎯 Прочитать минимум 4 книги: 2 - по проектированию архитектуры, 1 по специфике Go, 1 - по гибким методологиям.

🎯 Улучшить свои знания по кибер-безопасности (как минимум, пройти корпоративный курс по теме).

🎯 Освоить базу по фронтенд-разработке (JavaScript).

🏅 Значительно улучшить разговорные навыки английского + чтение тех. литературы (важнейший в IT-навык).

🏅 Решить 15 алгоритмических задачек (leetcode) и выложить результаты на Github.

🏅 Прочитать книгу по проектированию БД и SQL.

🏅 Улучшить резюме на: github, linkedin.

🏅 Изучить TDD (+ иные техники).

🏅 Пройти курс по Linux.


💫 - эпик | 🎯 - цель, приближающая к эпику | 🏅- побочная цель (будет круто, если достигну)

#цели
Новиков > путь в Big Tech pinned «Цели на 2023: 💫 Закрепиться на позиции «крепкий middle / middle+» (формально - промоут с E3->E4 в текущей компании). 🎯 Сделать полезный (как минимум 1-му человеку принесет пользу) проект, который будет развернут в докер-контейнере на собственном VPS-сервере.…»
Новиков > путь в Big Tech pinned «Так как уже полноценно занимаюсь коммерческой разработкой ПО, то считаю верным подвести итог своего обучения (инженер -> программист). 👨‍💻 2.5 года потребовалось, чтобы с нуля зайти в бэкенд разработку на популярный язык программирования на позицию middle…»
Новиков > путь в Big Tech pinned «Так как уже полноценно занимаюсь коммерческой разработкой ПО, то считаю верным подвести итог своего обучения (инженер -> программист). 👨‍💻 2.5 года потребовалось, чтобы с нуля зайти в бэкенд разработку на популярный язык программирования на позицию middle…»
Январь 2023:

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

Начал делать небольшой проектик, на котором хочу качественно освоить деплой своего приложения в докер контейнере на удаленном сервере.

В рамках развития своих софт-скиллов (не все же технику изучать) вдохновил свою скрам-команду для участия во внутреннем корпоративном антихакатоне. Если на обычном хакатоне нужно разработать проект с нуля, то на таком - нужно презентовать свою работу за прошлый год, которой особенно гордишься. В итоге: заполнили заявку, кратко презентовали свой проект и прошли в финал!

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

#результаты
Личный бренд [Часть 1]

Странно в 2023 году размышлять на тему важности собственного бренда. Еще в 2017 заметил, что специалисты, которые выступают на профильных конференциях, ведут свои блоги и подкасты - всегда на голову выше остальных. У них нет проблем с поиском работы, их готовы забирать практически без собеседований и единственным вопросом зачастую может служить "сколько вы хотите зарабатывать?" и "когда готовы приступить?".

В IT, конечно, это не правило и пресловутый Гугл звездному кандидату сходу не даст оффер. Но таким кандидатам определенно проще проходить отбор: им первыми пишут HR, предлагая проскочить первые секции, на которых обычно 90% отсеивают, поэтому, очевидно, и здесь плюс.

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


#бренд
Личный бренд [Часть 2]

Я решил начать пока с малого и развивать Гитхаб. На днях наткнулся на интересный помогатор в оформлении собственной странички. Фактически инструмент - это просто опросник, ответы из которого в конце превращаются в файлик README формата markdown.

Прикольно, что этот инструмент бесплатный и можно за 5 секунд сделать себе страничку. Но у меня ушло порядка полутора часов, как это обычно бывает. Я стал разбираться в кодовом файлике, стал подбирать цвета, по-другому компоновать блоки уже руками исправляя код, в итоге прикрепляю "ДО" и "ПОСЛЕ".

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

Есть некоторые идеи по развитию профиля, в общем, stay tuned ;)

#бренд
Не прошло 1 дня, как моя статистика на Гитхабе частично отвалилась.

Но оказалось все просто: статистика собиралась через сервис, на которой рейт-лимитер (да-да, тот, который я не реализовал в финальном проекте Otus) заблокировал мои запросы к нему. Видимо, прилично людей разместили статистику таким же образом и случилось слишком много запросов.

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

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

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

#инструменты
Февраль 2023:

📌 Зима у меня выдалась интересная: основной фокус был на прокачку софт-скиллов, проявления лидерских компетенций. Также случилось множество публичных выступлений. Все это классно и полезно, но нельзя забывать про основной профиль (backend-разработка) - с марта начинаю уходить в хард-скиллы.

Прошел боевое крещение в качестве бэкендера - замедлил прод в 3 раза примерно на 15 секунд. Выводы сделал, планирую также написать пост про опыт, который получил // (формально это произошло в конце января, но не попало в прошлый отчет)

Познакомился с крутейшим инструментом для создания заметок - Obsidian, а также системой Zettelkasten // обязательно сделаю пост о том, как адаптировал ее под себя

Немного прокачал гитхаб, создав главную страницу и добавив красивой статистики на нее.

Занял с командой 2-е место в финале антихакатона с проектом, в который мало кто верил по началу. Выступил с питчингом проекта в 2-х номинациях в качестве спикера.

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

Завершил курс на софт-скиллы под названием "Эффективный театр"; было много практики на концентрацию, импровизацию, а также работы с постоянно меняющимся контекстом на базе обычного 2-х минутного выступления.

Втянулся в занятия английским - занимаюсь дважды в неделю с ДЗ, present perfect continuous'ами и прочими радостями.

⭕️ Напоминание будущему себе: займись уже серьезным программированием!

#результаты
🔥1
Новиков > путь в Big Tech
Резюме: - Александр - 26 лет - Инженер - Санкт-Петербург
Пролетело 3 года! Хочется отметить основные вехи, чтобы зафиксировать достигнутое и двигаться дальше:

2020 год
👷‍♂️ Весной я решил поменять свою жизнь и стать программистом. Я был ведущим инженером и придумал как делать свои задачи быстрее при помощи C#. Это был мой первый ЯП, с которого я начал.

📈 В течение всего года я демонстрировал непосредственному начальству результат своей деятельности и как это ускоряет работу коллег. Компания меня поддержала и заверила, что со временем сможет постепенно переводить на другие - более программистские задачи.

* * *

2021 год
👷‍♂️+👨‍💻 В начале весны мне официально обновили должность в трудовой, за которой потянулись и новые задачи.

🎓 Параллельно с основной работой я прошел отбор на стажировку в крупнейшую IT-аутсорс компанию по стеку .NET, что меня очень драйвило. Было обучение и крутой ментор, мне это очень помогло понять каким должен быть хороший код.

👨‍💻 Ближе к лету мне удалось трудоустроиться официально инженер-программистом в новой компании! На старом месте меня тяготило, что остается инженерная рутина + не было полноценной команды и серьезных задач в программировании.

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

* * *

2022 год
👨‍💻 Мне нравится чем я занимаюсь, но не покидает ощущение, что за мной тянется шлейф инженера в строительстве...

🚪 В начале весны принимаю судьбоносное решение уйти из компании в никуда и максимально погрузиться в обучение. Меняю стек с .NET на Go.

🤩 Спустя полгода мне удается трудоустроиться в крупнейшую продуктовую IT-компанию в качестве бэкенд инженера на новом стеке, где работаю по текущее время.

* * *

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

#результаты #карьера
👍3
Новиков > путь в Big Tech pinned «Пролетело 3 года! Хочется отметить основные вехи, чтобы зафиксировать достигнутое и двигаться дальше: 2020 год 👷‍♂️ Весной я решил поменять свою жизнь и стать программистом. Я был ведущим инженером и придумал как делать свои задачи быстрее при помощи C#.…»
Постепенно возвращаюсь к решению Литкода.

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

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

#процесс #алгоритмы
Почему я стал меньше писать кода?

Это размышление не про качество.
Хотя, очевидно, что опытный разработчик может написать в 5 раз меньше строк кода для достижения лучшего результата.

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

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

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

Очевидно, что весь фокус смещается с вопроса "как написать фичу?" на вопрос "где написать?". И на вычитку всего проекта и поиск подходящего места с учетом разделения ответственности и всех лучших практик проектирования может уйти много времени. У меня уходило несколько дней только для того, чтобы разобраться в каком сервисе и в каком файле я должен буду добавить 1 строку кода!

Вот так и получается, что для добавления ифчика и закрытия 1 задачи может уйти полспринта. Пример решения заурядной задачи:
1) знакомство с кодовой базой сервиса и поиск места для нового условия;
2) добавление нового юнит-теста на свой ифчик;
3) деплой в дев-окружение;
4) тестирование QA (при необходимости)
5) код-ревью от ответственных сервиса или всех заинтересованных;
6) выкатка в продакшн с последующим мониторингом и готовностью быстро откатить изменения.

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

#опыт
👍1