Новиков > путь в 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
Сентябрь 2021:

Продолжается работа в лаборатории EPAM над веб-приложением на ASP.NET (стек, на которой хочу перейти со временем). В сентябре подключали базу данных MS SQL Server к текущему проекту. Постоянно откладывал изучение SQL, но вот теперь на живом примере пришлось экстренно все поднимать. Как итог: рабочий прототип залит на GitLab и ждет ревью от ментора. Также пройдено 2 тренинга по Soft skills (подготовка к интервью и работа в команде) в лаборатории EPAM + 1 тренинг на Hard skills (Jenkins и CI/CD).

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

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

#результаты
У меня был план и я хотел ему придерживаться, но что-то пошло не так…

Компания, где стажировался, предложила оффер на позицию junior .NET developer (стек - ASP.NET). В прошлом году, когда я планировал свое становление как разработчик, моим вторым пунктом был именно этот заветный оффер, а к концу текущего года трудоустройство в настоящую IT-компанию. Что изменилось сейчас?

В июне я устроился в проектную компанию, как программист “на удаленке”, избавив себя от ненавистного мной шлейфа - специалиста по информационным технологиям в строительстве, которым являлся долгие годы и к которому многие обращались за экспертизой… но избавление оказалось фейковым: я все еще работаю в строительной области, все еще приходится консультировать по вопросам BIM и, что самое главное, я каждый день запускаю то же самое ПО (Autodesk Revit), от которого все пытаюсь тщетно уйти. Но сейчас появился выбор.

#процесс #выбор
Вариант 1: Хочешь уйти - останься:
- В компании хорошие условия, приятный коллектив, удаленная работа, но что меня пугает? Как программист (по крайней мере, так записано в трудовой), я понимаю, что сижу на древней технологии (.net framework + wpf), перспективы которой ограничены и весьма туманны, но за которую рынок готов платить весьма неплохие деньги даже человеку с моим опытом работы в разработке ПО. Какие я делаю из этого выводы? Вероятность того, что изменится мой стек или задачи на текущем месте работы, стремится к нулю, так как здесь я нужен именно на этом стеке. Нагрузка по задачам уже сейчас есть на год вперед, а руководство не заинтересовано, чтобы я занимался чем-то иным. В лучшем для меня случае, отдел, в котором сейчас несколько человек, будет расширяться с увеличением компании, а мне через год или два предложат должность в менеджменте.
- Решение “остаться” может быть расценено как здравый поступок, когда человек выбрал стабильность и доход “прямо сейчас”, но без понимания как может сложиться в будущем (будет ли такой человек также востребован через несколько лет?).
- С другой стороны, я смогу лучше изучить текущий стек, смогу смело закрыть гештальт по автоматизации в проектных и строительных компаниях, так как теперь у меня уже будет довольно весомая строчка в резюме, которую уже не изъять и которая всегда будет меня кормить, в случае чего. Да, у меня не будет года опыта на проде джуном в реальной It-компании, но будет 1.5 года опыта инженером-программистом, что можно также обернуть себе на пользу, если параллельно с работой буду изучать активно современные технологии и делать проект.

Вариант 2: Хочешь уйти - уйди и не оборачивайся:
- Оффер выглядит привлекательным исключительно из-за потенциального опыта на интересном стеке. Говоря прямо, я потеряю сильно в деньгах, если соглашусь. Для меня это будет ощутимо, по крайней мере первые 1-2 года.
- Однако, если принять оффер, то мой стек может (!) начать расширяться значительно, а это конкурентное преимущество на рынке труда. Привлекательнее то, что компания предлагает прозрачный карьерный рост. То есть, трудоустроясь туда, я без проблем смогу двигаться согласно своему плану (прикреплял выше) и в 2022-23 годах буду уже мидлом. А с таким опытом работы (год на проде), можно уже или продолжать развиваться внутри компании, или находить более интересные варианты, возможно даже, попробовать себя в работе на западного Заказчика за валюту.

#процесс #выбор
Таблица плюсов и минусов обоих вариантов

#процесс #выбор
Октябрь 2021:

Было принято очень сложное для меня решение -> я отказался от оффера на позицию junior .NET developer в пользу текущего места работы, где я работаю инженер-программистом и получаю неплохую компенсацию за свои плагины… Это решение обусловлено не столько “комфортными” условиями труда сейчас, сколько стратегической мыслью - в следующем году претендовать на должность мидла (задел на это уже будет хороший + нужно будет проделать определенную работу по подготовке).

Несмотря на отказ продолжить карьеру в Epam’е в качестве джуна, я решил завершить стажировку и защититься. В октябре заключающей задачей было написание фронта к своему REST-сервису (JS/Angular) + деплой в облаке (Azure), свою работу также планирую выложить на гитхабе (которым тоже нужно заняться активнее).

Изучение фронта на стажировке подтолкнуло меня к интересной задумке: сверстать себе резюме и захостить на Github Pages (бесплатный хостинг). Подобное резюме сможет подтянуть мои знания в веб-разработке + сразу “упадет” в Портфель выполненных проектов, который легко сможет элементарно подтвердить мои знания JS. // CV будет доступно по адресу: novikov-ai.github.io (на текущий момент представляет собой сырую заготовку, которую планирую сделать красивой и функциональной визитной карточкой).

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

Защитил проект на ASP.NET (стажировка в EPAM), отказался от предложенного оффера и попрощался с данной компанией на текущий момент. Суммарно тренинг-центр Епама занял у меня 8 месяцев (обучение + стажировка), за которые я существенно увеличил свои знания по .NET, приобрел навыки по разработке веб-приложений. Также стоит упоминуть, что благодаря обратной связи от менторов, код стал чище, архитектура построения приложений и организации кода - лучше. Небольшим бонусом идет теперь также рекомендация от этой компании (не знаю насколько мне это пригодится).

Наметил дальнейшие шаги к саморазвитию. В приоритете: Computer Science, SQL, JavaScript и создание сильного портфолио для дальнейшего выхода на рынок труда, но уже как специалист в сфера IT, а не строительство/проектирование.

#результаты
Новиков > путь в Big Tech
Шел 14-ый день новогоднего марафона (advent of code). То ли от недостатка времени, то ли от нехватки знаний, а возможно совпало оба фактора, но сейчас мой результат 17/28 всех доступных задач. Обидно, что схожу с дистанции, но в любом случае буду пробовать…
Поздно вспомнил про крутой адвент-календарь, который в прошлом году собирался проходить (https://adventofcode.com/2021). Было бы полезно сравнить результаты с мои совсем зеленым навыком программирования в 2020 и текущим. Возможно, смогу выкроить себе время на решение задачек уже после окончания марафона - на выходных.

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

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

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

#мысли
1
Декабрь 2021:

Улучшил свои навыки в WPF для построения красивых оконных приложений.

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

Принял важное для себя решение: поступать в Computer Science Center (https://compscicenter.ru/syllabus/se/) для получения академического образования по разработке ПО. Конечно, оно не заменит классического обучения в университете длительностью 5-6 лет, но поможет мне заложить тот фундамент, на котором планирую строить профессиональную карьеру.

#результаты
Новиков > путь в Big Tech
Цели на 2021: 🎯 Официально переквалифицироваться в разработчика-программиста на языке C# в среде .NET (с занесением соответствующей записи в трудовую книжку) // junior .NET developer 🎯 Прочитать >3 книг по разработке в среде .NET 🎯 Пройти 3 курса по Алгоритмам…
Итоги 2021:

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

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

Не удалось прочитать сколько-нибудь книг по программированию.

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

Результаты

Удаленно трудоустроился в крупную проектную компанию, как инженер-программист.

Открыл ИП для выполнения потенциальных заказов на разработку ПО и успешно выполнил часть из них, часть перенеслась на 2022.

Выпускник тренинг-центра EPAM, по окончании которого получил оффер на позицию junior ASP.NET developer (отказался). На тренинге получил очень качественный фидбек по своему коду, что помогло мне его улучшить.

Захостил на Github Pages свое CV, которое планирую значительно улучшить за этот год.

#итоги
😱1
Цели на 2022:

🎯 Поступить в CSC.

🎯 Пройти курс C# Professional и Паттерны проектирования от А. Шевчука.

🎯 Прочитать минимум 4 книги: 2 - по чистоте и качеству кода, 1 по C# и еще 1 по среде .NET.

🎯 Отобраться в ВШПСБ и пройти минимум 1 курс.

🎯 Пройти курс по frontend-разработке (html, css, JS + Angular)

🎯 Пройти курс по SQL или прочитать книгу «Изучаем SQL" Алан Бьюли».

🎯 Обновить CV на Гитхабе так, чтобы его было не стыдно отправлять рекрутеру.

🎯 Пройти курс по ASP.NET или прочитать 1 книгу по теме.

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

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

#цели
🔥1🤩1
Освежил CV стилями, которые удалось найти в открытом доступе. Знаний по html/css хватает пока только на это.

К концу года планирую этот пробел знаний закрыть и уже нормально оформить свою страничку: novikov-ai.github.io

#процесс
👍2
Январь 2022:

В рамках ИП сделал небольшой заказ, завязанный на MS Office. Научился: создавать службы Windows, работать с реестром, делать *bat файлы для развертывания написанных приложений.

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

Нашел несколько интересных компаний в РФ, который пишут на C# и в которые потенциально интересно будет попробовать трудоустроиться в будущем.

⭕️ Приступил к чтению "Чистого кода" Роберта Мартина, книга очень крутая, настоятельно рекомендую всем.

#результаты
🔥2
Принял непростое для себя решение - отказаться от поступления в Computer Science Center в этом учебном году.

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

Меня стало психологически и физически изматывать количество направлений, на которые я себя бросил:
1. Работа full-time
2. ИП
3. Подготовка к CSC
4. Прочее обучение по изучению компьютерных наук

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

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

#процесс
👍1
Февраль 2022:

В рамках подготовки к поступлению в CSC отзанимался 7 раз с преподавателем по математике. К сожалению, подготовку пришлось свернуть и отказаться в этом году от поступления.

По стороннему заказу, как ИП, изучил основы взаимодействия с CRM MS dynamics 365. Научился получать и создавать данные в CRM.

⭕️ Приступил к книге Изучаем SQL" Алан Бьюли.

#результаты
👍1
Интересный пакет курсов по SQL: https://stepik.org/course/61247 - минимум теории, максимум практики. Помогает погрузиться в тему и освоить работу с реляционными БД на базе MySQL.

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

Уже сейчас это приносит свои плоды: на текущем месте работы пришлось разворачивать MS SQL Server, проектировать БД, а также непосредственно работать с ней при помощи Entity Framework (EF), что является обязательным знанием для backend разработчика .NET.

#процесс
👍1
Март 2022:

Прошел половину курса по SQL. Нравится подача материала, а также обилие практики.

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

Опубликовал свое резюме на hh и за 2 недели получил 5 приглашений на собеседование в неплохие компании (2 международные с потенциальным релокейтом). Замечу, что откликов не отправлял, а просто открыл резюме для всех. Оформил CV на английском и дополнилил всеми актуальными навыками с фокусом в программирование. В связи с тем, что официальный стаж у меня около 2х лет теперь, то могу претендовать на мидловскую позицию, но нужно хорошо подготовиться по теории, чтобы пройти все этапы собеса.

Наметил план по переходу в “настоящее IT”, где я смогу создавать полезный продукт с серьезной инфраструктурой. Сильно чувствую свою ограниченность в программировании, пока создаю плагины под Autodesk Revit, как будто я все сильнее и сильнее погружаюсь в специфику конкретной программы, но не развиваюсь как программист в целом.

В качестве ИП есть некая неоднозначность: появился потенциальный заказ на разработку, где задействован Docker, язык Go, но проект сейчас встал на паузу. В любом случае, мне пришлось получить базовые знания по Докеру и познакомиться с новым ЯП - Go (golang). К слову, язык мне так понравился, что я серьезно задумался перейти на него с C#.

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

#результаты
👍1
Спустя чуть больше чем 2 года на C# и платформе .NET, решил попробовал другой язык программирования.

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

Материалов для обучения множество. Сейчас прохожу гугловский туториал по языку:
https://go.dev/tour/welcome/1

Для сравнения Go и C# прикрепляю классический вывод строки в консоль (Go - слева, C# - справа).

Интересный факт: в конце прошлого года был презентован .NET 6.0, где “hello world” можно написать одной строкой. Поэтому из прикрепленной картинки не нужно делать вывод, что на Go можно писать программы в 2 раза короче, чем на C#. Microsoft активно развивает свою платформу и я думаю, что еще сможет серьезно нас удивить в будущем.

Не исключаю, что текущие знания C# мне так или иначе пригодятся в последующей работе, но CV с опытом на 2-х языках выглядит в 2 раза круче, чем на одном, а собственный GitHub с проектами на разных языках - бесценен.

#процесс
👍1
Апрель 2022:

Отобрался в ВШПСБ (https://vk.com/lambda_brain) и записался на курс по Чистому Коду, который сейчас прохожу (параллельно читаю Роберта Мартина "Чистый код").

Получил сертификат о прохождении 80% курса SQL, планирую пройти на 100%, охватив оставшиеся модули. На мой взгляд, хороший фундамент уже заложил для ориентирования в любой реляционной БД.

Официально ушел с full-time и еще немного приблизился к своей формуле, которую описывал в феврале: 1 главное направление деятельности (работа) + 1 второстепенное, которое способно дополнить первое (обучение/хобби/собственный проект). На текущий момент осталась работа в качестве ИП, а также обучение: SQL, ВШПСБ и курс по Go, о котором далее.

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

Принял решение сфокусироваться на изучение Go и его особенностей, так как вижу большой потенциал у языка. Сейчас мое использование ЯП выглядит так: 70% - C# (заказы в качестве ИП + прохождение курсов в ВШПСБ), 30% - Go (курсы OTUS + самообучение). За 2022 год планирую распределение по ЯП приблизить к следующему: C# - (0-15)%, Go - (85-100)%.

#результаты
👍2
Новиков > путь в Big Tech
Цели на 2022: 🎯 Поступить в CSC. 🎯 Пройти курс C# Professional и Паттерны проектирования от А. Шевчука. 🎯 Прочитать минимум 4 книги: 2 - по чистоте и качеству кода, 1 по C# и еще 1 по среде .NET. 🎯 Отобраться в ВШПСБ и пройти минимум 1 курс. 🎯 Пройти…
Из 10 целей на 2022 год:
- 3 достигнуты
- 3 пришлось скорректировать (цели завязанные на .NET стек принял решение заменить на Go стек)
- 1 убрана из списка (от поступления в CSC отказался в марте, а потом еще узнал, что они в этом году набор не проводят из-за ситуации в мире)
- добавлен эпик (основная цель, ради которой выполняются другие)

Итого:

💫 К концу года официально работаю на позиции Go developer.

✔️ Отобраться в ВШПСБ и пройти минимум 1 курс.
✔️ Пройти курс по SQL или прочитать книгу «Изучаем SQL" Алан Бьюли».
✔️ Обновить CV на Гитхабе так, чтобы его было не стыдно отправлять рекрутеру.

🎯 Закрыть все обязательства перед Заказчиками по ИП, при этом сохранив их лояльность минимум на прежнем уровне, а также увеличив прибыль по сравнению с 2021 годом более чем в 3 раза.
🎯 Решить минимум 5 алгоритмических задачек (leetcode) и выложить результаты на Гитхаб.
🎯 Пройти курс по frontend-разработке (html, css, JS + Angular).

📝 Прочитать минимум 4 книги: 2 - по чистоте и качеству кода, 2 по Go (ранее: C# и еще 1 по среде .NET).
📝 Пройти курс по Go от OTUS+Avito (ранее: C# Professional и Паттерны проектирования от А. Шевчука).
📝 Пройти курс по Linux или прочитать 1 книгу по теме (ранее: курс по ASP.NET или прочитать 1 книгу по теме).

Поступить в CSC.

#процесс #цели
👍1
Стажировка в Яндекс

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

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

Что касается задач, то мне удалось приступить к решению 2 из 5, так как остальные уж слишком показались “со звездочкой”.

Я писал решения на Go, к изучению которого приступил в прошлом месяце… Одно из решений заняло 100+ строк кода, а это для меня определенная веха в освоении нового ЯП и уже этому я безумно рад.

В итоге я решил 0 задач. При чем, одна была правильно, но из-за ограничения по времени (время работы алгоритма должно быть 2 секунды) ее не засчитали. Мое решение занимало, увы, 2.08 секунды.

Выводы:
- Хотите в Яндекс готовьтесь к олимпиадным задачам по программированию и под готовьтесь я подразумеваю прорешайте хотя бы десяток задач прошлых лет.
- Пишите тесты к решаемым задачам (да, кажется, что лишнее время, но по сути, оно поможет сэкономить время при отладке).
- Попадание в Яндекс - целый квест и тут все зависит от вашей личной цели и мотивации. Если мотивация слаба и вы туда подаетесь “ради интереса”, как я в этот раз, то результат будет весьма предсказуемым, но, если озадачиться и начать планомерно готовиться, то все возможно.

#опыт