Новиков > путь в 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
Август 2022:
✅ В рамках обучения языку Go (OTUS + Avito) отправлены на проверку и приняты все ДЗ до предфинального проекта, который подразумевает собой небольшое приложение на 3 микросервиса. В сентябре остается досдать это приложение + сделать финальный проект.
⭕️ Читаю книгу Роберта Мартина “Чистая Архитектура”. Очень легко идут книги автора, вероятно, еще лучше читать их в оригинале.
❌ Собеседование в Авито:
✔ пройдено скоринговое интервью на базовые знания сетей, CS и языка
✔ пройдена секция Программирование, где нужно было решить 2 алгоритмические задачи (как на литкоде) и оценить сложность алгоритмов
✔ пройдена секция Платформа, где проверялась теория на знание язка Go, его рантайма, а также практика на небольших примерах
✖ пройдено финальное интервью с одной из команд, где искали Senior Go-разработчика, но по результату без оффера, так как опыта коммерческой серверной разработки не было
✖ пройдено финальное интервью с другой командой, где также искали Старшего Go-разработчика, но по результату без оффера по той же причине
Меня удивило, что финальные интервью все были на Старшего разработчика, хотя весь мой прошлый опыт - это был исключительно десктоп + стажировка в Епаме. Вероятно, других вакансий на данный момент не было.
Как бы то ни было, я рад, что удалось дойти до финальных интервью, которые зачастую являются самой простой частью собеседований при наличии профильного опыта. Буду набирать необходимый опыт, деваться некуда.
❌ Параллельно начал проходить курс АСД в ВШПСБ на Go (пару лет назад проходил на C#). Успел реализовать только однонаправленный и двунаправленный связный список, так как закопался с другим курсом и не выдержал дедлайн. ВШПСБ имеет очень строгие правила к обучению и за любую провинность ты получаешь перманентный бан. Если бы лучше планировал время и следил бы за обновлениями правил (которые часто меняются), то, вероятно, смог бы продолжить учебу. Это стало очередным подтверждением того, что лучше себя не грузить большим количеством курсов/проектов и всегда иметь не более одного, чтобы всю концентрацию держать на нем.
❌ Также прошел около 5 собеседований на Go-разработчика, где получил 5 отказов. Везде требуют опыт коммерческой разработки на Go более 1 года, даже если в вакансии пишут что это необязательно 🤷♂️
—
Август для меня стал, наверное, самым непростым месяцем за весь мой программисткий путь. Взлетов было немного, но падений - достаточно. Сейчас нужно постараться взять всю волю в кулак, чтобы не опустить руки и продолжить. Обидно упускать возможности, в которые ты сильно веришь. Вероятно, секрет в том, чтобы не делать большую ставку на веру, чтобы при неудаче это не сказалось на твоей силе духа и желании продолжать.
Всегда есть две причины у неудачи: внешние, на которые ты повлиять не в силах, и внутренние, когда ответственность за провал полностью на тебе. Зачастую сложно однозначно сказать: ты потерпел неудачу потому, что не доработал сам или потому, что так решили другие люди по своим каким-то причинам? При любом ответе, рецептом успеха будет - продолжать работать с еще большим усердием, сделав выводы из прошлого опыта. При таком подходе внутренних причин для неудач будет становиться меньше, пока в конечном итоге они не исчезнут; а внешние - ты будешь трансформировать под свои обстоятельства и желания, достигая поставленных целей.
#результаты
✅ В рамках обучения языку Go (OTUS + Avito) отправлены на проверку и приняты все ДЗ до предфинального проекта, который подразумевает собой небольшое приложение на 3 микросервиса. В сентябре остается досдать это приложение + сделать финальный проект.
⭕️ Читаю книгу Роберта Мартина “Чистая Архитектура”. Очень легко идут книги автора, вероятно, еще лучше читать их в оригинале.
❌ Собеседование в Авито:
✔ пройдено скоринговое интервью на базовые знания сетей, CS и языка
✔ пройдена секция Программирование, где нужно было решить 2 алгоритмические задачи (как на литкоде) и оценить сложность алгоритмов
✔ пройдена секция Платформа, где проверялась теория на знание язка Go, его рантайма, а также практика на небольших примерах
✖ пройдено финальное интервью с одной из команд, где искали Senior Go-разработчика, но по результату без оффера, так как опыта коммерческой серверной разработки не было
✖ пройдено финальное интервью с другой командой, где также искали Старшего Go-разработчика, но по результату без оффера по той же причине
Меня удивило, что финальные интервью все были на Старшего разработчика, хотя весь мой прошлый опыт - это был исключительно десктоп + стажировка в Епаме. Вероятно, других вакансий на данный момент не было.
Как бы то ни было, я рад, что удалось дойти до финальных интервью, которые зачастую являются самой простой частью собеседований при наличии профильного опыта. Буду набирать необходимый опыт, деваться некуда.
❌ Параллельно начал проходить курс АСД в ВШПСБ на Go (пару лет назад проходил на C#). Успел реализовать только однонаправленный и двунаправленный связный список, так как закопался с другим курсом и не выдержал дедлайн. ВШПСБ имеет очень строгие правила к обучению и за любую провинность ты получаешь перманентный бан. Если бы лучше планировал время и следил бы за обновлениями правил (которые часто меняются), то, вероятно, смог бы продолжить учебу. Это стало очередным подтверждением того, что лучше себя не грузить большим количеством курсов/проектов и всегда иметь не более одного, чтобы всю концентрацию держать на нем.
❌ Также прошел около 5 собеседований на Go-разработчика, где получил 5 отказов. Везде требуют опыт коммерческой разработки на Go более 1 года, даже если в вакансии пишут что это необязательно 🤷♂️
—
Август для меня стал, наверное, самым непростым месяцем за весь мой программисткий путь. Взлетов было немного, но падений - достаточно. Сейчас нужно постараться взять всю волю в кулак, чтобы не опустить руки и продолжить. Обидно упускать возможности, в которые ты сильно веришь. Вероятно, секрет в том, чтобы не делать большую ставку на веру, чтобы при неудаче это не сказалось на твоей силе духа и желании продолжать.
Всегда есть две причины у неудачи: внешние, на которые ты повлиять не в силах, и внутренние, когда ответственность за провал полностью на тебе. Зачастую сложно однозначно сказать: ты потерпел неудачу потому, что не доработал сам или потому, что так решили другие люди по своим каким-то причинам? При любом ответе, рецептом успеха будет - продолжать работать с еще большим усердием, сделав выводы из прошлого опыта. При таком подходе внутренних причин для неудач будет становиться меньше, пока в конечном итоге они не исчезнут; а внешние - ты будешь трансформировать под свои обстоятельства и желания, достигая поставленных целей.
#результаты
👍1
Осень планирую посвятить поиску работодателя, который будет готов платить за мой опыт на Go.
Хотелось бы замахнуться на топовые компании, но везде нужен коммерческий опыт от года, чтобы тебя воспринимали серьезно.
Конечно, есть еще вариант попасть в крутую компанию через стажировку, но, как правило, тут сложно конкурировать с молодыми и дерзкими, которых очень много и из-за обилия которых компании вынуждены устраивать зубодробительные отборы на эти стажировки.
Какие мысли: поизучав немного рынок, делаю вывод, что сложно с наскока залететь на позицию +-middle на Go, если ты раньше не писал коммерцию на Go. Прошлый опыт (в моем случае десктоп на C# 2+ года + стажировка EPAM) несильно влияет, к сожалению. Вероятно, разрабатывай я веб-приложения на ASP.NET пару лет, то шансов было бы больше, но не намного.
Почему мидл на Go, если у меня мало опыта на нем? Потому что, на удивление, джунов на этом языке практически не ищут, они элементарно не нужны. Зачастую мидлы также мало интересуют компании и везде указывают при поиске “мидл+/синьор”. Очень занятная тенденция.
Что же делать? Есть варианты:
1) стажировка (долгий путь и довольно жесткий - нужно нарешивать олимпиадные задачки [конкретно сейчас про Яндекс, не вижу смысла распыляться на стажировку WB или что-то низкосортное - так как слишком долгая игра выйдет]).
2) как ИП / фрилансер, выполнение заказов на Go, чтобы набрать год опыта, а потом уже можно в любое место пробовать устраиваться (тут может возникнуть проблема в поиске Заказчика, опять же без опыта могут быть сложности, но при наличии знакомств в сфере - может сработать, если согласиться на какой-нибудь стартап без большой компенсации своей работы - для тебя опыт, для стартапа MVP)
3) продолжать искать работу и рассматривать любые варианты; уверен, что как минимум одна компания захочет схантить мой опыт
4) сделать крутой пет-проект (наверное, это самое сложное, так как несерьезный проект не будет иметь какого-то смысла и за коммерческий опыт считаться не будет, а если он будет серьезным, то в одиночку это займет слишком много времени…)
5) искать веб-разработку на .NET, а потом перейти на Go, спустя время…
Какой план? Для начала - завершить обучение по Go и защититься, одновременно с этим открыл резюме на hh. Также в сентябре Яндекс стажеров набирает и, кажется, Озон - закину туда удочки, а там поглядим.
#работа
Хотелось бы замахнуться на топовые компании, но везде нужен коммерческий опыт от года, чтобы тебя воспринимали серьезно.
Конечно, есть еще вариант попасть в крутую компанию через стажировку, но, как правило, тут сложно конкурировать с молодыми и дерзкими, которых очень много и из-за обилия которых компании вынуждены устраивать зубодробительные отборы на эти стажировки.
Какие мысли: поизучав немного рынок, делаю вывод, что сложно с наскока залететь на позицию +-middle на Go, если ты раньше не писал коммерцию на Go. Прошлый опыт (в моем случае десктоп на C# 2+ года + стажировка EPAM) несильно влияет, к сожалению. Вероятно, разрабатывай я веб-приложения на ASP.NET пару лет, то шансов было бы больше, но не намного.
Почему мидл на Go, если у меня мало опыта на нем? Потому что, на удивление, джунов на этом языке практически не ищут, они элементарно не нужны. Зачастую мидлы также мало интересуют компании и везде указывают при поиске “мидл+/синьор”. Очень занятная тенденция.
Что же делать? Есть варианты:
1) стажировка (долгий путь и довольно жесткий - нужно нарешивать олимпиадные задачки [конкретно сейчас про Яндекс, не вижу смысла распыляться на стажировку WB или что-то низкосортное - так как слишком долгая игра выйдет]).
2) как ИП / фрилансер, выполнение заказов на Go, чтобы набрать год опыта, а потом уже можно в любое место пробовать устраиваться (тут может возникнуть проблема в поиске Заказчика, опять же без опыта могут быть сложности, но при наличии знакомств в сфере - может сработать, если согласиться на какой-нибудь стартап без большой компенсации своей работы - для тебя опыт, для стартапа MVP)
3) продолжать искать работу и рассматривать любые варианты; уверен, что как минимум одна компания захочет схантить мой опыт
4) сделать крутой пет-проект (наверное, это самое сложное, так как несерьезный проект не будет иметь какого-то смысла и за коммерческий опыт считаться не будет, а если он будет серьезным, то в одиночку это займет слишком много времени…)
5) искать веб-разработку на .NET, а потом перейти на Go, спустя время…
Какой план? Для начала - завершить обучение по Go и защититься, одновременно с этим открыл резюме на hh. Также в сентябре Яндекс стажеров набирает и, кажется, Озон - закину туда удочки, а там поглядим.
#работа
👍1
Любой уважающий себя (и других) программист должен уметь разворачивать свои разработки в Докере.
Сейчас это уже стандарт деплоя любого продукта, поэтому требование "уметь работать с Docker” можно встретить почти в каждой вакансии.
Для меня тема любого компьютерного администрирования всегда была связана болью, с которой постоянно сталкивался, буксовал на ней и не любил разбираться.
Сейчас кончается интенсивный курс и скоро нужно сдавать финальные дз и проект. Очевидно, что их нужно упаковать с помощью Докера.
Чтобы победить прокрастинацию, которая всегда рядышком, когда есть что-то, с чем нужно усердно посидеть-поразбираться, нашел для себя рабочее решение…
1) Мне очень нравится платформа для обучения Stepik (где прошел немало курсов).
2) Для меня очень важно, чтобы любая вещь или деньги - приносили максимальную пользу / прибыль, то есть были полезными как можно дольше на протяжении своего срока.
Поэтому я зашел на Stepik, вбил “Docker” - нашел всего один курс с хорошими отзывами. Почитал про этот курс везде где только можно (убедившись, что отзывы не фейковые), прочитал содержание и купил:
Docker + Ansible - с нуля, деплой и управление Swarm
Всегда очень приятно инвестировать в свое образование, особенно когда понимаешь, как ты абстрактную 1000 рублей и приложенные усилия на прохождения курса сможешь монетезировать в будущем.
#процесс
Сейчас это уже стандарт деплоя любого продукта, поэтому требование "уметь работать с Docker” можно встретить почти в каждой вакансии.
Для меня тема любого компьютерного администрирования всегда была связана болью, с которой постоянно сталкивался, буксовал на ней и не любил разбираться.
Сейчас кончается интенсивный курс и скоро нужно сдавать финальные дз и проект. Очевидно, что их нужно упаковать с помощью Докера.
Чтобы победить прокрастинацию, которая всегда рядышком, когда есть что-то, с чем нужно усердно посидеть-поразбираться, нашел для себя рабочее решение…
1) Мне очень нравится платформа для обучения Stepik (где прошел немало курсов).
2) Для меня очень важно, чтобы любая вещь или деньги - приносили максимальную пользу / прибыль, то есть были полезными как можно дольше на протяжении своего срока.
Поэтому я зашел на Stepik, вбил “Docker” - нашел всего один курс с хорошими отзывами. Почитал про этот курс везде где только можно (убедившись, что отзывы не фейковые), прочитал содержание и купил:
Docker + Ansible - с нуля, деплой и управление Swarm
Всегда очень приятно инвестировать в свое образование, особенно когда понимаешь, как ты абстрактную 1000 рублей и приложенные усилия на прохождения курса сможешь монетезировать в будущем.
#процесс
Сложнее всего в разработке - побороть неприятное ощущение от того, что кто-то украл твою жизнь.
Или, может быть, в любой сфере так? Когда натыкаешься на карьерные истории людей, которые делают ровно то же самое, что и ты, но они решили про это рассказать публично.
Конечно, в современном мире столько людей и совпадения неизбежны, но чем их больше и чем они точнее, тем больше это начинает злить.
—
Когда начинал готовиться к интервью по платформе Go, то на ютубе наткнулся на долгое интервью: https://www.youtube.com/watch?v=ryJOS-8hmQo - Кандидат говорит про то, что он раньше разрабатывал плагины под строительное ПО Autodesk Revit … (стоит ли вспоминать, что начинал абсолютно с того же).
Наверное, лучшей характеристикой такого чувства будет “зависть” не в классическом понимании, но в том, что кто-то сделал то, что ты только делаешь! То есть он идет не по твоим пятам, а ты по его и это жуть как напрягает: ты не первый.
Спустя пару месяцев, когда свыкся с идеей, что совпадения, как выше, имеют место быть, то подбивает очередная статья. Статья, автором которой, вероятно, мог бы стать я:
https://habr.com/ru/company/ozontech/blog/684422/ - Считаем совпадения:
1) “Девять месяцев назад я сменил основной язык программирования с C# на новый для меня Go” - первое есть;
2) “На шарпе я проработал два с половиной года” - и вот второе;
3) “Мы делали монолитные десктопные приложения на .NET Framework, WPF и WinForms” - без комментариев здесь;
4) “… имея два с половиной года коммерческого опыта, проблем с переходом на новый язык не будет.” - такие же мысли ходили;
5) “… тогда же увидел рекламу бесплатной программы «Golang разработчик» от CloudMTS.” - если заменить CloudMTS на Otus + Авито, то можно также засчитать.
Далее товарищ описывает основную специфику языка и упоминает про поиск работы. Если бы не абзац про то, как он проходил собеседования, то не было бы смысла писать только про свои чувства. В декабре 2021 года автор пишет:
“Работодателей не смущало отсутствие коммерческого опыта на Go.”
Свое резюме я разместил 5 сентября и спустя 2 недели могу заявить, что в сентябре 2022 года работодателей смущает (еще как!) отсутствие коммерческого опыта на Go. Сейчас рынок требует коммерческий опыт от года (даже, если не указывает это явно, а пишет лишь про ваше желание писать на Go). При этом я указал опыт на Go “чуть менее года” в качестве ИП + интенсивные курсы (если забыть про коммерческий опыт, как C# разработчик).
Немного цифр за 2 недели:
- 127 просмотров резюме
- 20 моих откликов (в основном откликался в топовые компании, куда могли взять с моим небольшим опытом, на младшие позиции), но 100% отказов на этапе скрининга резюме [может, резюме плохо составил? 🤔]
- 1 приглашение на скайп-интервью на hh (я отказался, так как компания связана с азартными играми и график 9-18 только офис)
- 3 приглашения на интервью и 3 отказа:
а) не подошел из-за отсутствия опыта (хотя бы год), хотя в резюме все четко расписано;
б) одна компания меня гоняла по тех. вопросам (ответил практически все правильно) и hr сказала, что меня, скорее всего возьмут, но не взяли;
в) hr после интервью скинула тестовое, где решил 17/18, при этом в тестовом была масса ошибок и все мои ответы по факту правильные - сообщил об этом hr’у, она передала резюме дальше, но снова отказ, так как нужен опыт.
Или, может быть, в любой сфере так? Когда натыкаешься на карьерные истории людей, которые делают ровно то же самое, что и ты, но они решили про это рассказать публично.
Конечно, в современном мире столько людей и совпадения неизбежны, но чем их больше и чем они точнее, тем больше это начинает злить.
—
Когда начинал готовиться к интервью по платформе Go, то на ютубе наткнулся на долгое интервью: https://www.youtube.com/watch?v=ryJOS-8hmQo - Кандидат говорит про то, что он раньше разрабатывал плагины под строительное ПО Autodesk Revit … (стоит ли вспоминать, что начинал абсолютно с того же).
Наверное, лучшей характеристикой такого чувства будет “зависть” не в классическом понимании, но в том, что кто-то сделал то, что ты только делаешь! То есть он идет не по твоим пятам, а ты по его и это жуть как напрягает: ты не первый.
Спустя пару месяцев, когда свыкся с идеей, что совпадения, как выше, имеют место быть, то подбивает очередная статья. Статья, автором которой, вероятно, мог бы стать я:
https://habr.com/ru/company/ozontech/blog/684422/ - Считаем совпадения:
1) “Девять месяцев назад я сменил основной язык программирования с C# на новый для меня Go” - первое есть;
2) “На шарпе я проработал два с половиной года” - и вот второе;
3) “Мы делали монолитные десктопные приложения на .NET Framework, WPF и WinForms” - без комментариев здесь;
4) “… имея два с половиной года коммерческого опыта, проблем с переходом на новый язык не будет.” - такие же мысли ходили;
5) “… тогда же увидел рекламу бесплатной программы «Golang разработчик» от CloudMTS.” - если заменить CloudMTS на Otus + Авито, то можно также засчитать.
Далее товарищ описывает основную специфику языка и упоминает про поиск работы. Если бы не абзац про то, как он проходил собеседования, то не было бы смысла писать только про свои чувства. В декабре 2021 года автор пишет:
“Работодателей не смущало отсутствие коммерческого опыта на Go.”
Свое резюме я разместил 5 сентября и спустя 2 недели могу заявить, что в сентябре 2022 года работодателей смущает (еще как!) отсутствие коммерческого опыта на Go. Сейчас рынок требует коммерческий опыт от года (даже, если не указывает это явно, а пишет лишь про ваше желание писать на Go). При этом я указал опыт на Go “чуть менее года” в качестве ИП + интенсивные курсы (если забыть про коммерческий опыт, как C# разработчик).
Немного цифр за 2 недели:
- 127 просмотров резюме
- 20 моих откликов (в основном откликался в топовые компании, куда могли взять с моим небольшим опытом, на младшие позиции), но 100% отказов на этапе скрининга резюме [может, резюме плохо составил? 🤔]
- 1 приглашение на скайп-интервью на hh (я отказался, так как компания связана с азартными играми и график 9-18 только офис)
- 3 приглашения на интервью и 3 отказа:
а) не подошел из-за отсутствия опыта (хотя бы год), хотя в резюме все четко расписано;
б) одна компания меня гоняла по тех. вопросам (ответил практически все правильно) и hr сказала, что меня, скорее всего возьмут, но не взяли;
в) hr после интервью скинула тестовое, где решил 17/18, при этом в тестовом была масса ошибок и все мои ответы по факту правильные - сообщил об этом hr’у, она передала резюме дальше, но снова отказ, так как нужен опыт.