Новиков > путь в 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
Чем серьезнее проект, тем больше информации приходится в нем хранить. Для удобной организации информации и ее обслуживания используются базы данных (сокращено - "БД").

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

Строительная сфера, в которой я работаю, не исключение и многие специалисты разных профилей в повседневной работе используют Excel для организации и хранения информации об объектах строительства, подсчета смет и пр.

В технологии информационного моделирования зданий (англ.: Building Information Modeling, сокращено - "BIM"), ядром является работа с информацией (хранение, обмен, изменение), а не просто создание красивой 3D модели будущего объекта строительства, из которой получаются картинки. Технология BIM стала инновационной благодаря неразрывной связи геометрии элементов с их атрибутивных наполнением (информацией), которую можно использовать на всех стадиях жизненного цикла здания.

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

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

#процесс #идеи
Главным нюансом при работе с внешними приложениями становится вопрос совместимости. Например, я могу написать рабочий инструмент для версии Excel 2003 года, но конечный пользователь может использовать Excel 2020, в котором изменилось API, через которое мы с ним взаимодействовали, и готовый плагин просто не заработает.

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

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

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

Мой Github похвастаться солидностью пока не может, сейчас там всего 2 репозитория: один с реализацией алгоритмов и базовых структур данных, второй был добавлен только сегодня, он состоит из решений к некоторым задачам из Advent of Code (в этом году планирую значительно улучшить свой результат по данному марафону). Также планирую выложить некоторые реализованные плагины, написанные для Autodesk Revit.

#процесс
Февраль 2021:

Закончил базовый видео-курс по C# // itvdn

Опубликовал свои решения задач на github в марафоне Advent of Code // к сожалению, только 10 из 25; в следующем году планирую значительно улучшить результат

Сделал CV на английском языке, а также обновил резюме на head hunter, чтобы откликаться на потенциально интересные вакансии

#результаты
06.03.2021 - исполнился 1 год с момента, когда решил поменять свой карьерный путь и стать полноценным разработчиком на C#. Краткая сводка и мысли за эти 12 месяцев:

1) Уверенность, что я двигаюсь в правильном направлении, лишь укрепилась. Несомненно я буду продолжать и обязательно брать и реализовывать более амбициозные проекты.
2) Немного о расходах. На платные видео-курсы было потрачено ~9 тыс. рублей, они помогли мне освоить азы языка C#, которых мне хватает, чтобы решать алгоритмические задачи и разрабатывать плагины среднего уровня для Autodesk Revit.
3) На курсы по решению алгоритмических задач было потрачено ~10 тыс. рублей. Мое мнение, что без фундамента в виде базовых алгоритмов и структур данных - никуда. Самостоятельная реализация простейших структур данных и алгоритмов помогли мне выработать определенный подход и тип мышления к решению задач, который несомненно нужно постоянно развивать и укреплять.
4) На книги по изучению программирования суммарно потрачено ~3 тыс. рублей. Не все книги были прочитаны, но о потраченных деньгах не жалею и с нетерпением жду момента, когда к ним приступлю.
5) Были написаны некоторые решения в виде плагинов для Autodesk Revit, которые значительно помогают специалистам в работе (получено небольшое вознаграждение за это, а также заказ на полноценный инструментарий для программы, состоящий из подобных плагинов, которые планирую реализовать в этом году).

Коротко о планах на обучение:
1) Для закрепления уверенного навыка владения C# я планирую дочитать 2-ую книгу Васильева А.Н об особенностях языка C# (крайне рекомендую обе книги под названием “Программирование для начинающих”) и пройти еще 2 видео-курса: профессиональный C# и паттерны проектирования - оба ведет замечательный преподаватель - Александр Шевчук, которому премного благодарен за все записанные им материалы (прекрасный стиль изложения). Если только начинаете изучать язык, то настоятельно рекомендую присмотреться к нему.
2) За 2021 год планирую пройти еще 3 курса по алгоритмам и структурам данных (продолжаем закладывать фундамент).
3) Также в планах на весну освоить азы HTML5 / CSS3, а также базу JavaScript. Минимальные знания по ним необходимы любому разработчику + встречаются во многих вакансиях, что расширяет нашу конкурентоспособность на рынке.
4) Обязательно: введение в базы данных - SQL и прочее, в планах пройти вводный курс по теме до середины лета.
5) Интересно присмотреться к Unity и gamedev, но понимаю, что это отдельная кухня, куда нужно погружаться с головой, а сейчас стоят другие задачи…

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

#результаты #планы
Март 2021:

После разговора с работодателем удалось пересмотреть мои обязанности и теперь я преимущественно занимаюсь разработкой решений для автоматизации работы с информационными моделями нашего отдела // карьера

Была подана заявка на прохождение тренинга по C# в крупнейшей аутсорсинговой IT-компании, а также пройдено 4 интервью, в том числе техническое, где проверялись знания языка (C# и английского) и ООП // результаты должны быть в этом месяце

С переменным успехом продолжаю реализовывать заказ на плагины от стороннего Заказчика

Перестал читать книги по теме // за апрель обещаю дочитать вторую книгу Васильева по C#

Гитхаб на текущий момент не развивается // планирую выложить один из своих плагинов

#результаты
Апрель 2021:

Отобрался на тренинг (!), про который писал ранее; предстоит 13 недель интенсивного обучения, после которого имею вполне реальные шансы получить свой первый оффер в IT-компанию // карьера

Основная работа + сторонний Заказчик + интенсивный тренинг с выполнением домашних заданий = нехватка времени на любую литературу (“Васильев Часть 2” - у меня так и подвис непрочитанным) // даю себе несколько недель, чтобы адаптироваться к нагрузке и дочитать книгу

#результаты
Что самое важное в любом интенсивном тренинге? Раньше мне казалось, что это лекционный материал, который тебе читают… Лекции действительно важны, но, к сожалению, полезны они бывают в редких случаях: только тогда, когда преподаватель умеет их грамотно рассказать (на моей практике, таких преподавателей из 15 наберется не больше 1-2 человек).

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

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

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

#процесс
Тренинг оказался интенсивнее, чем я планировал…

Когда вы работаете полный день в офисе, берете на себя какие-то сторонние задачи + еще вписывается в интенсивный тренинг, цель которого вырастить из вас джуниор специалиста, про здоровый сон 7-8 часов можно смело забыть. Понятное дело, что так очень легко перегореть, особенно, если что-то начинает не получаться.

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

Я полон решимости завершить данное обучение и получить от компании оффер, иначе зачем было начинать?

#процесс
1
Май 2021:

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

По мере сил продолжаю развивать плагин для стороннего Заказчика // интересный опыт, который пойдет в портфолио, как разработчика плагинов под Revit

Читаю статьи Сергея Бобровского про построение карьеры в IT, которые доступны за условные единицы (если ты когда-то успешно проходил курсы по Алгоритмам или другие из его школы) // выжимки очень полезного жизненного опыта

Все еще тяготит офисная рутина, когда ты обязан с понедельника по пятницу приезжать в офис и “быть эффективным сотрудником” с 08-17 (или 09-18, или 10-19) // но это меняется и скоро будет иначе

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

#результаты
Июнь 2021:

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

Так или иначе, тренингом и возможными перспективами в компании, которая это организует, все не ограничилось. В конце мая мне стало очень интересно, насколько я ценен на рынке труда в своей строительной сфере, но уже в новом качестве, как программист с 1 годом опыта. В одном из телеграм чатов было найдено привлекательное предложение о работе, но в другом городе. Недолго думая, обновил свое резюме с учетом новых знаний и отправил отклик. По мотивам своего интереса (все начиналось с изучения рынка и своего места на нем) и спустя 2 онлайн-собеседования в компании, я получаю неплохой оффер и причем полностью удаленно! Все тщательно взвесив, предложение я принял и уже активно вливаюсь в рабочий процесс на новом месте // карьера

Была сделана важная инвестиция - куплена весьма удобная IDE от прекрасной компании JetBrains - Rider. Цена вопроса ~13.000 рублей в год, но спустя то время, что я пользуюсь этим инструментом, могу сказать, что это себя уже окупило полностью // инвестируйте в свой комфорт и то, что экономит ваше время и преумножает деньги

Сильно сдал в обучении на тренинге, есть вероятность, что не успею сдать финальный проект

Книги так и стоят на паузе

#результаты
Новиков > путь в Big Tech
Резюме: - Александр - 26 лет - Инженер - Санкт-Петербург
Резюме:
- Александр
- 27 лет
- Инженер-программист
- Санкт-Петербург
Тренинг, который я прохожу и про который писал выше, называется “Основы разработки на платформе .NET” от компании EPAM (ссылка на тренинг: https://training.ru/#!/Training/2854?lang=ru).

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

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

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

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

Итог. Идеально такие тренинги подойдут:
a) выпускникам ВУЗов;
b) человеку, который пытается из одной сферы перейти в IT;
c) мечтателем о скорейшем релокейте в какую-нибудь страну Европы или по миру (но тут нужно понимать, что при этом необходимо также быть неплохим специалистом)

#процесс
Июль 2021:

EPAM training center: Удалось сдать в срок финальный проект (хоть и с недочетами). По результатам технического экзамена и моей работы на тренинге был переведен на следующий этап - в лабораторию, которая представляет собой разновидность неоплачиваемой стажировки, где можно продолжать черпать опыт // обучение

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

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

#результаты
Август 2021:

EPAM training center: в лаборатории с учетом твоих интересов тебя распределяют на проект... Мне все время было интересно разрабатывать веб-сервисы, потому что все, так или иначе, стремится к этому. Всем нужен сервис, который будет кросс-платформенным и доступным на своем смартфоне в любой момент времени без необходимости открывать ноутбук. Таким образом, мой проект будет на ASP.NET. К моему сожалению, на реальный проект студентов трейнинг-центра не подключили, а дали ментора, с которым ты должен работать над своим индивидуальным проектом (хотя, возможно, это мне неповезло или нашему .NET потоку или направлению) // обучение

Work: испытательный срок позади; я закрепился в проектной компании, как разработчик решений по автоматизации проектирования, на хорошем окладе для своей отрасли и к тому же на удаленке. Не могу избавиться от мыслей, что “настоящее” программирование в другом месте и максимум через год мне придется искать другое место, где смогу расти профессионально // карьера

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

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

Основной стек на проекте: .NET Framework 4.7* + WPF + GitLab + Jira/Conflience.

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

#процесс
Сентябрь 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 (на текущий момент представляет собой сырую заготовку, которую планирую сделать красивой и функциональной визитной карточкой).

#результаты