Интересный пакет курсов по SQL: https://stepik.org/course/61247 - минимум теории, максимум практики. Помогает погрузиться в тему и освоить работу с реляционными БД на базе MySQL.
Курс удалось купить по акции за 5тыс. рублей, чему я крайне рад и о потраченных деньгам не жалею.
Уже сейчас это приносит свои плоды: на текущем месте работы пришлось разворачивать MS SQL Server, проектировать БД, а также непосредственно работать с ней при помощи Entity Framework (EF), что является обязательным знанием для backend разработчика .NET.
#процесс
Курс удалось купить по акции за 5тыс. рублей, чему я крайне рад и о потраченных деньгам не жалею.
Уже сейчас это приносит свои плоды: на текущем месте работы пришлось разворачивать MS SQL Server, проектировать БД, а также непосредственно работать с ней при помощи Entity Framework (EF), что является обязательным знанием для backend разработчика .NET.
#процесс
Stepik: online education
SQL с нуля до PRO
Освойте SQL с нуля до уровня профи! Полное погружение в три этапа: основы, проектирование баз данных и продвинутый SQL.
Интерактивный тренажер с 300+ заданиями и персональная поддержка преподавателя. Превратитесь из новичка в специалиста по данным!
Интерактивный тренажер с 300+ заданиями и персональная поддержка преподавателя. Превратитесь из новичка в специалиста по данным!
👍1
Март 2022:
✅ Прошел половину курса по SQL. Нравится подача материала, а также обилие практики.
✅ Принял решение уйти из компании, где был трудоустроен инженер-программистом. Проработав 10 месяцев, значительно улучшил свои навыки в разработке десктопных приложений, а также плагинов для Autodesk Revit. Сохранил хорошие отношения с работодателем - это важно для потенциальных заказов в будущем (никто не знает, как жизнь повернется, любые деловые контакты идут на пользу так или иначе).
✅ Опубликовал свое резюме на hh и за 2 недели получил 5 приглашений на собеседование в неплохие компании (2 международные с потенциальным релокейтом). Замечу, что откликов не отправлял, а просто открыл резюме для всех. Оформил CV на английском и дополнилил всеми актуальными навыками с фокусом в программирование. В связи с тем, что официальный стаж у меня около 2х лет теперь, то могу претендовать на мидловскую позицию, но нужно хорошо подготовиться по теории, чтобы пройти все этапы собеса.
✅ Наметил план по переходу в “настоящее IT”, где я смогу создавать полезный продукт с серьезной инфраструктурой. Сильно чувствую свою ограниченность в программировании, пока создаю плагины под Autodesk Revit, как будто я все сильнее и сильнее погружаюсь в специфику конкретной программы, но не развиваюсь как программист в целом.
⭕ В качестве ИП есть некая неоднозначность: появился потенциальный заказ на разработку, где задействован Docker, язык Go, но проект сейчас встал на паузу. В любом случае, мне пришлось получить базовые знания по Докеру и познакомиться с новым ЯП - Go (golang). К слову, язык мне так понравился, что я серьезно задумался перейти на него с C#.
❌ Получил 2 отказа после собеседований. На одном мне элементарно не хватило опыта веб-разработки, а на втором завалился на тех. скрининге и не прошел в следующий этап. Обиды нет, так как нормально не успел подготовиться, но зато теперь есть понимание - во что нужно вникать в первую очередь и чего у меня не хватает сейчас.
#результаты
✅ Прошел половину курса по 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 с проектами на разных языках - бесценен.
#процесс
Выбор упал на 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)%.
#результаты
✅ Отобрался в ВШПСБ (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.
#процесс #цели
- 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 секунды.
Выводы:
- Хотите в Яндекс готовьтесь к олимпиадным задачам по программированию и под готовьтесь я подразумеваю прорешайте хотя бы десяток задач прошлых лет.
- Пишите тесты к решаемым задачам (да, кажется, что лишнее время, но по сути, оно поможет сэкономить время при отладке).
- Попадание в Яндекс - целый квест и тут все зависит от вашей личной цели и мотивации. Если мотивация слаба и вы туда подаетесь “ради интереса”, как я в этот раз, то результат будет весьма предсказуемым, но, если озадачиться и начать планомерно готовиться, то все возможно.
#опыт
Время от времени известная компания проводит набор на стажировку по разным направлениям. Чтобы на нее попасть нужно:
1) Заполнить анкету, где нужно рассказать про себя, прикрепить CV и все в этом духе.
2) Пройти контест, состоящий из решения 5 алгоритмических задач (уровень задач - ближе к олимпиадному).
3) Пройти 2 или 3 технических интервью с представителями компании.
С заполнением анкеты проблем не возникло. Самое интересное ждало на следующем этапе - алгоритмический контест, где за 5 часов нужно успеть 5 задач на языке программирования из списка.
Что касается задач, то мне удалось приступить к решению 2 из 5, так как остальные уж слишком показались “со звездочкой”.
Я писал решения на Go, к изучению которого приступил в прошлом месяце… Одно из решений заняло 100+ строк кода, а это для меня определенная веха в освоении нового ЯП и уже этому я безумно рад.
В итоге я решил 0 задач. При чем, одна была правильно, но из-за ограничения по времени (время работы алгоритма должно быть 2 секунды) ее не засчитали. Мое решение занимало, увы, 2.08 секунды.
Выводы:
- Хотите в Яндекс готовьтесь к олимпиадным задачам по программированию и под готовьтесь я подразумеваю прорешайте хотя бы десяток задач прошлых лет.
- Пишите тесты к решаемым задачам (да, кажется, что лишнее время, но по сути, оно поможет сэкономить время при отладке).
- Попадание в Яндекс - целый квест и тут все зависит от вашей личной цели и мотивации. Если мотивация слаба и вы туда подаетесь “ради интереса”, как я в этот раз, то результат будет весьма предсказуемым, но, если озадачиться и начать планомерно готовиться, то все возможно.
#опыт
Май 2022:
✅ Прошел курс по Чистому коду в ВШПСБ (результаты: https://github.com/novikov-ai/clean-code).
✅ Получил сертификат с отличием о прохождении курса SQL (https://stepik.org/course/51562/syllabus).
✅ Получил сертификат с отличием о прохождении курса по основам Go (https://stepik.org/course/54403/syllabus).
✅ В рамках обучения языку Go (OTUS + Avito) проверено ментором и принято 3/3 ДЗ (всего 15).
✅ Прошел бесплатный курс от Хекслета “Введение в веб-разработку”.
❌ Не прошел отборочный контест на стажировку в Яндекс.
#результаты
✅ Прошел курс по Чистому коду в ВШПСБ (результаты: https://github.com/novikov-ai/clean-code).
✅ Получил сертификат с отличием о прохождении курса SQL (https://stepik.org/course/51562/syllabus).
✅ Получил сертификат с отличием о прохождении курса по основам Go (https://stepik.org/course/54403/syllabus).
✅ В рамках обучения языку Go (OTUS + Avito) проверено ментором и принято 3/3 ДЗ (всего 15).
✅ Прошел бесплатный курс от Хекслета “Введение в веб-разработку”.
❌ Не прошел отборочный контест на стажировку в Яндекс.
#результаты
👍3
Почему иногда полезно нерешаемую в моменте задачу отложить на следующий день, особенно, когда уже ночь?
Прикладываю наглядный пример - почему.
На скриншоте реализация метода - получение элемента из LRU кэша, основанного на двунаправленном связном списке. Здесь присутствует очевидная логическая ошибка (которые порой трудно отловить).
Такой метод должен делать 2 вещи:
1) Если элемент есть в кэше, то вернуть его значение и переместить элемент в начало очереди.
2) Если элемента нет, то вернуть пустую ссылку.
Остановитесь, попробуйте сами найти проблемное место.
Ближе к вечеру опубликую продолжение.
#задача
Прикладываю наглядный пример - почему.
На скриншоте реализация метода - получение элемента из LRU кэша, основанного на двунаправленном связном списке. Здесь присутствует очевидная логическая ошибка (которые порой трудно отловить).
Такой метод должен делать 2 вещи:
1) Если элемент есть в кэше, то вернуть его значение и переместить элемент в начало очереди.
2) Если элемента нет, то вернуть пустую ссылку.
Остановитесь, попробуйте сами найти проблемное место.
Ближе к вечеру опубликую продолжение.
#задача
Так почему же ночью лучше спать?
- Вчера я потратил порядка 30-60 минут, чтобы понять в чем проблема, почему, очевидно, простой метод отказывается корректно работать. Я написал еще больше юнит-тестов, я стал проверять дважды то, что до этого прекрасно работало, но ответа не находил.
- На следующий день первое, что я сделал, проанализировал: что должен делать метод и что он сейчас делает и обнаружил…
Согласно п.1 (того, что должен делать метод) мы должны переместить элемент в начало очереди, если он найден. Реализовано ли это? Накануне я полагал, что да, но разве PushFront( ) перемещает элемент в начало? Отнюдь, в текущей реализации мы добавляли новый элемент в начало, то есть создавали дублирование, а то, что нам было нужно, - это MoveToFront( ).
Итого: диагностика + исправление ошибки заняли не более 5 минут против 30-60 и отсутствие результата прошлой ночью.
Невнимательность - довольно плохое качество, с которым мне только предстоит бороться.
#решение
- Вчера я потратил порядка 30-60 минут, чтобы понять в чем проблема, почему, очевидно, простой метод отказывается корректно работать. Я написал еще больше юнит-тестов, я стал проверять дважды то, что до этого прекрасно работало, но ответа не находил.
- На следующий день первое, что я сделал, проанализировал: что должен делать метод и что он сейчас делает и обнаружил…
Согласно п.1 (того, что должен делать метод) мы должны переместить элемент в начало очереди, если он найден. Реализовано ли это? Накануне я полагал, что да, но разве PushFront( ) перемещает элемент в начало? Отнюдь, в текущей реализации мы добавляли новый элемент в начало, то есть создавали дублирование, а то, что нам было нужно, - это MoveToFront( ).
Итого: диагностика + исправление ошибки заняли не более 5 минут против 30-60 и отсутствие результата прошлой ночью.
Невнимательность - довольно плохое качество, с которым мне только предстоит бороться.
#решение
Крутая книга по проектированию высоконагруженных веб-систем: System Design Interview (Alex Xu).
Отличная подача, последовательное изложение.
Несмотря на то, что прочитал только четверть книги, она уже сильно прокачала мое понимание как должны проектироваться простые и сложные веб-системы.
#чтение
Отличная подача, последовательное изложение.
Несмотря на то, что прочитал только четверть книги, она уже сильно прокачала мое понимание как должны проектироваться простые и сложные веб-системы.
#чтение
👍1
Удивительно, насколько полезным стало изучение второго ЯП.
В Go очень распространены анонимные функции, сохранение функции в переменную и последующая ее передача в качестве аргумента методу.
В C# также есть такой функционал, реализуемый через делегаты: Func<T, TResult> и Action<T>. Работа с делегатами всегда для меня была одной из самых непонятных тем - я их использовал, так как без них никак, но с некоторым подозрением и осторожностью. Не было легкости при работе с ними.
Сейчас появилась необходимость переиспользовать апишную функцию, но для разных элементов. Конечно, под такое можно выделить приватный метод и, возможно, это будет оправдано (если он будет часто использоваться), но мне захотелось сделать с использованием делегатов.
Раньше я бы полез читать msdn, а затем и stackoverflow в поисках примера - перетянул бы решение в свой код и двинулся дальше. Но сейчас я просто написал функцию по наитию, как это можно было бы сделать в Go, Ide, очевидно, заругалась на синтаксис - я немного подправил - и все заработало!
Таким образом, могу подтвердить тезис, что после изучение одного из языков программирования, второй, третий и все последующие - будут даваться куда проще, а знание одних будет дополнять знания о других.
#наблюдения
В Go очень распространены анонимные функции, сохранение функции в переменную и последующая ее передача в качестве аргумента методу.
В C# также есть такой функционал, реализуемый через делегаты: Func<T, TResult> и Action<T>. Работа с делегатами всегда для меня была одной из самых непонятных тем - я их использовал, так как без них никак, но с некоторым подозрением и осторожностью. Не было легкости при работе с ними.
Сейчас появилась необходимость переиспользовать апишную функцию, но для разных элементов. Конечно, под такое можно выделить приватный метод и, возможно, это будет оправдано (если он будет часто использоваться), но мне захотелось сделать с использованием делегатов.
Раньше я бы полез читать msdn, а затем и stackoverflow в поисках примера - перетянул бы решение в свой код и двинулся дальше. Но сейчас я просто написал функцию по наитию, как это можно было бы сделать в Go, Ide, очевидно, заругалась на синтаксис - я немного подправил - и все заработало!
Таким образом, могу подтвердить тезис, что после изучение одного из языков программирования, второй, третий и все последующие - будут даваться куда проще, а знание одних будет дополнять знания о других.
#наблюдения
На скриншоте функция, записанная в переменную, про которую говорилось выше.
Создаем делегат Func<Element, double>, который принимает аргумент типа Element и возвращает значения типа double.
Теперь с ним можно работать как с функцией, но в рамках текущего метода. Вызов выглядит как обыкновенная функция, например:
double volume = getVolume(element);
// записываем в переменную volume результат выполнения функции, вызванной с переменной element
#пример
Создаем делегат Func<Element, double>, который принимает аргумент типа Element и возвращает значения типа double.
Теперь с ним можно работать как с функцией, но в рамках текущего метода. Вызов выглядит как обыкновенная функция, например:
double volume = getVolume(element);
// записываем в переменную volume результат выполнения функции, вызванной с переменной element
#пример
Приобрёл 3 книжки:
- для более глубокого погружения в Go
- для улучшения навыков дизайна систем
- для души
В моем случае, практика показывает, что приобретение бумажной книги повышает вероятность ее прочтения в несколько раз, но, к сожалению, все же не гарантирует 100% результата.
План минимум: вдумчиво прочитать 2 любые книги из 3. Вероятнее всего, Чистая архитектура уйдет на следующий год, так как сейчас в процессе System Design Interview, про которую писал выше.
#чтение
- для более глубокого погружения в Go
- для улучшения навыков дизайна систем
- для души
В моем случае, практика показывает, что приобретение бумажной книги повышает вероятность ее прочтения в несколько раз, но, к сожалению, все же не гарантирует 100% результата.
План минимум: вдумчиво прочитать 2 любые книги из 3. Вероятнее всего, Чистая архитектура уйдет на следующий год, так как сейчас в процессе System Design Interview, про которую писал выше.
#чтение
Июнь 2022:
✅ В рамках обучения языку Go (OTUS + Avito) отправлены на проверку 6/6 ДЗ (приняты 5 из них, 1 ожидает проверки).
✅ Пройден мини-курс на ютубе “Основы веб-разработки”.
✅ Постепенно отхожу от C# и плагинов под Revit, поэтому фиксирую свой опыт в Гитхабе. Полезно для резюме + может оказаться полезным другим людям (https://github.com/novikov-ai/revit-ribbon-builder).
⭕️ В процессе 2 книги: System Design Interview (Alex Yu) и Golang для профи.
#результаты
✅ В рамках обучения языку Go (OTUS + Avito) отправлены на проверку 6/6 ДЗ (приняты 5 из них, 1 ожидает проверки).
✅ Пройден мини-курс на ютубе “Основы веб-разработки”.
✅ Постепенно отхожу от C# и плагинов под Revit, поэтому фиксирую свой опыт в Гитхабе. Полезно для резюме + может оказаться полезным другим людям (https://github.com/novikov-ai/revit-ribbon-builder).
⭕️ В процессе 2 книги: System Design Interview (Alex Yu) и Golang для профи.
#результаты
👍1
Чтобы прокачивать свои навыки в веб-разработке, решил обзавестись своим VPS-сервером для пет-проектов и заодно поднять VPN, чтобы спокойно пользоваться линкедином и прочими радостями.
Делал по инструкции:
https://vc.ru/dev/66942-sozdaem-svoy-vpn-server-poshagovaya-instrukciya#7 - получилось со второго раза, очевидно, что-то упустил в первый раз 🙂
Цена вопроса - 6 рублей в день (180 в месяц), за которые я получил собственный безлимитный по скорости VPN-сервис + полноценный сервер для небольших проектов.
#полезности
Делал по инструкции:
https://vc.ru/dev/66942-sozdaem-svoy-vpn-server-poshagovaya-instrukciya#7 - получилось со второго раза, очевидно, что-то упустил в первый раз 🙂
Цена вопроса - 6 рублей в день (180 в месяц), за которые я получил собственный безлимитный по скорости VPN-сервис + полноценный сервер для небольших проектов.
#полезности
👍1
SQL-задачка:
В таблице ниже содержатся данные по продажам за 2020 и 2021 годы. Наша задача построить прогноз продаж на 2022 год и если в задаче для вычисления процента мы будем сравнивать между собой аналогичные месяцы 2020 и 2021 года, при этом будем брать не один месяц, а три: текущий и два предыдущих.
Например, чтобы посчитать ожидаемый доход за апрель 2022 года, мы берем 590000 (апрель 2021) и умножаем на (AVG(590000 + 520000 + 470000) / AVG(490000 + 410000 + 380000)) (AVG(апр. 21 + мар. 21 + фев. 21) / AVG(апр. 20 + мар. 20 + фев. 20)), что дает 728281.25 рублей:
590000 x (AVG(590000 + 520000 + 470000) / AVG(490000 + 410000 + 380000)) = 728281
Выведите ожидаемые доходы на весь 2022 год (12 месяцев). Первый столбец итоговой таблицы должен называться month и содержать порядковый номер месяца. Второй столбец (plan) должен содержать величину планируемого дохода с округлением до целого.
#задача
В таблице ниже содержатся данные по продажам за 2020 и 2021 годы. Наша задача построить прогноз продаж на 2022 год и если в задаче для вычисления процента мы будем сравнивать между собой аналогичные месяцы 2020 и 2021 года, при этом будем брать не один месяц, а три: текущий и два предыдущих.
Например, чтобы посчитать ожидаемый доход за апрель 2022 года, мы берем 590000 (апрель 2021) и умножаем на (AVG(590000 + 520000 + 470000) / AVG(490000 + 410000 + 380000)) (AVG(апр. 21 + мар. 21 + фев. 21) / AVG(апр. 20 + мар. 20 + фев. 20)), что дает 728281.25 рублей:
590000 x (AVG(590000 + 520000 + 470000) / AVG(490000 + 410000 + 380000)) = 728281
Выведите ожидаемые доходы на весь 2022 год (12 месяцев). Первый столбец итоговой таблицы должен называться month и содержать порядковый номер месяца. Второй столбец (plan) должен содержать величину планируемого дохода с округлением до целого.
#задача
Завершил очередной курс на Степике “Продвинутый SQL”. Задачи порой были нетривиальные и приходилось потратить час-другой на их решение. К слову, задач было более 100.
В предыдущем посте последняя задача в курсе (не самая сложная из всех, просто символически последняя). Прикладываю свое решение на нее.
#решение
В предыдущем посте последняя задача в курсе (не самая сложная из всех, просто символически последняя). Прикладываю свое решение на нее.
#решение
Постепенно начинаю готовиться к собеседованиям, а именно - к алгоритмической секции, где зачастую без использования сторонних библиотек необходимо решать различные задачи.
Существует немало площадок, где можно потренироваться в этом, для себя выбрал - leetcode, на которой сегодня решил первую задачку (https://github.com/novikov-ai/leetcode/tree/master/easy/roman-to-integer).
В задаче необходимо входную строку, состояющую из последовательности римских цифр перевести в арабский эквивалент. Удалось написать довольно шустрое решение, но, как оказалось, затрачиваю на него много памяти, что не очень здорово.
Надеюсь со временем натренироваться находить эффективные решения как в плане скорости, так в плане памяти.
#алгоритмы
Существует немало площадок, где можно потренироваться в этом, для себя выбрал - leetcode, на которой сегодня решил первую задачку (https://github.com/novikov-ai/leetcode/tree/master/easy/roman-to-integer).
В задаче необходимо входную строку, состояющую из последовательности римских цифр перевести в арабский эквивалент. Удалось написать довольно шустрое решение, но, как оказалось, затрачиваю на него много памяти, что не очень здорово.
Надеюсь со временем натренироваться находить эффективные решения как в плане скорости, так в плане памяти.
#алгоритмы
Чем отличается трудоустройство в 90% компании от IT-компании? - Количеством собеседований!
Когда я устраивался в строительные / проектные компании в 2016-2022 года, то зачастую хватало 1 собеседования, чтобы сотрудник компании принял решение о твоем трудоустройстве.
Справедливости ради, в последние годы намечается тендеция двух-этапного отбора:
1) интервью с тех. специалистом касательно твоей проф. пригодности (иногда еще дают тестовое)
2) интервью с непосредственный руководителем, где вы обсуждаете зарплату, команду и прочее
—
Итого: 1-2 интервью
Когда проходил отбор в EPAM (международный аутсорс), то у меня было:
1) телефонный скрининг (+🇺🇸)
2) собеседование с HR-ом (+🇺🇸)
3) собеседование с синьор-разработчиком
— [ремарка: отбор был на стажировку] —
Итого: 3 интервью (с проверкой английского)
А вот пример того, что проходят инженеры в Авито (продуктовая компания):
1) скоринговое интервью (основные вопросы по CS) - 30 мин.
2) секция программирование (задачки на алгоритмы ) - 1.5 часа
3) секция платформа (теория + практика по выбранному ЯП) - 1.5 часа
4) секция проектирование (синьорский уровень - здесь оценивают архитектурные навыки) - 1.5 часа
5) финальное интервью (обсуждение рабочего процесса + оценка soft skills) - 1 час
—
Итого: 4-5 интервью
В компаниях топ-уровня (например, FAANG) думаю можно умножать этапы отбора Авито на 1.5, чтобы получить сопоставимую картину. Но, очевидно, по-другому высококлассных спецов не нанять при большой конкуренции.
Конечно, такую гонку в формате множества интервью в топовые компании выдержит не каждый, но ведь и награда в финале ждет соответствующая.
Как бы то ни было, меня это безумно драйвит - ты знаешь к чему стремиться и каждый день пытаешься стать лучше, чем был вчера. Если бы меня спросили - что самое крутое в IT? Моим ответом было бы: количество испытаний, которое тебе оно предлагает и самое захватывающее, что нет верхней границы, есть только предел твоих возможностей.
#интервью
Когда я устраивался в строительные / проектные компании в 2016-2022 года, то зачастую хватало 1 собеседования, чтобы сотрудник компании принял решение о твоем трудоустройстве.
Справедливости ради, в последние годы намечается тендеция двух-этапного отбора:
1) интервью с тех. специалистом касательно твоей проф. пригодности (иногда еще дают тестовое)
2) интервью с непосредственный руководителем, где вы обсуждаете зарплату, команду и прочее
—
Итого: 1-2 интервью
Когда проходил отбор в EPAM (международный аутсорс), то у меня было:
1) телефонный скрининг (+🇺🇸)
2) собеседование с HR-ом (+🇺🇸)
3) собеседование с синьор-разработчиком
— [ремарка: отбор был на стажировку] —
Итого: 3 интервью (с проверкой английского)
А вот пример того, что проходят инженеры в Авито (продуктовая компания):
1) скоринговое интервью (основные вопросы по CS) - 30 мин.
2) секция программирование (задачки на алгоритмы ) - 1.5 часа
3) секция платформа (теория + практика по выбранному ЯП) - 1.5 часа
4) секция проектирование (синьорский уровень - здесь оценивают архитектурные навыки) - 1.5 часа
5) финальное интервью (обсуждение рабочего процесса + оценка soft skills) - 1 час
—
Итого: 4-5 интервью
В компаниях топ-уровня (например, FAANG) думаю можно умножать этапы отбора Авито на 1.5, чтобы получить сопоставимую картину. Но, очевидно, по-другому высококлассных спецов не нанять при большой конкуренции.
Конечно, такую гонку в формате множества интервью в топовые компании выдержит не каждый, но ведь и награда в финале ждет соответствующая.
Как бы то ни было, меня это безумно драйвит - ты знаешь к чему стремиться и каждый день пытаешься стать лучше, чем был вчера. Если бы меня спросили - что самое крутое в IT? Моим ответом было бы: количество испытаний, которое тебе оно предлагает и самое захватывающее, что нет верхней границы, есть только предел твоих возможностей.
#интервью
Июль 2022:
✅ Наконец, пройдены курсы: “Продвинутый SQL” и “Проектирование БД” (stepik). По SQL считаю заложил отличную базу. Теперь только практика + изучение других СУБД (в планах посмотреть PostgreSQL и нереляционные - MongoDB).
✅ В рамках обучения языку Go (OTUS + Avito) отправлены на проверку 4/4 ДЗ (2 приняты и 2 ожидают проверки). Постепенно курс завершается и в августе уже финальный проект.
✅ Прочитана книга “Golang для профи” (автор Михалис Цукалос). На мой взгляд, книга оказалась слишком поверхностна для своего объема (>700 страниц), но изобилует большим количеством практических примеров, которые могут быть полезны для практики.
✅ В рамках подготовки к собеседованиям (в частности алгоритмической секции) начал решать литкод. Немало времени уходит на это, но как будто прогресс есть. Адепты говорят, что уверенный уровень в решении алго-задач, - это минимум 200-300 на литкоде. Что ж, будем постепенно двигаться к этой цифре:
https://leetcode.com/novikov-ai/
⭕️ Отложил на половине книгу System Design Interview (Alex Yu). Планирую закончить, когда начну готовиться к собеседованиям по system design’у. Тем не менее, книгу считаю очень ценной - сильно помогла мне с пониманием “как работает веб”.
#результаты
✅ Наконец, пройдены курсы: “Продвинутый SQL” и “Проектирование БД” (stepik). По SQL считаю заложил отличную базу. Теперь только практика + изучение других СУБД (в планах посмотреть PostgreSQL и нереляционные - MongoDB).
✅ В рамках обучения языку Go (OTUS + Avito) отправлены на проверку 4/4 ДЗ (2 приняты и 2 ожидают проверки). Постепенно курс завершается и в августе уже финальный проект.
✅ Прочитана книга “Golang для профи” (автор Михалис Цукалос). На мой взгляд, книга оказалась слишком поверхностна для своего объема (>700 страниц), но изобилует большим количеством практических примеров, которые могут быть полезны для практики.
✅ В рамках подготовки к собеседованиям (в частности алгоритмической секции) начал решать литкод. Немало времени уходит на это, но как будто прогресс есть. Адепты говорят, что уверенный уровень в решении алго-задач, - это минимум 200-300 на литкоде. Что ж, будем постепенно двигаться к этой цифре:
https://leetcode.com/novikov-ai/
⭕️ Отложил на половине книгу System Design Interview (Alex Yu). Планирую закончить, когда начну готовиться к собеседованиям по system design’у. Тем не менее, книгу считаю очень ценной - сильно помогла мне с пониманием “как работает веб”.
#результаты
LeetCode
novikov-ai - LeetCode Profile
View novikov-ai's profile on LeetCode, the world's largest programming community.
👍1