Достоинства и недостатки
— Выкладываться по полной. Это и достоинство, и недостаток курса в одном флаконе.
— Практикоориентированность. Курс сфокусирован на практике. Теории минимум, но она есть. Это тоже одновременно и достоинство, и недостаток, в зависимости от вашего уровня. Однако ссылки на дополнительный материал спасают от необходимости «рыть по всем интернетам».
— Рамки проекта. На первых 6 модулях у проекта есть чёткие рамки, на седьмом позволяется «улететь в космос» на своём космическом корабле . Это тоже и достоинство, и недостаток. Например, я обычно не использую ORM в работе на Go (это одна из рамок курса), чему ещё научился на Otus. Но здесь его использование оправдано, и я согласился с выбором авторов. Позже я попросил помощи у ребят, чтобы перевести то, что изучили, в обычную стандартную библиотеку (спасибо Дмитрию за подсказку).
Достоинства
— Тесты как квесты. Тесты авторов были для меня как квесты: понял тест – решил квест. У авторов есть дар писать тесты. Есть чему поучиться и позавидовать (лучше учиться, чем завидовать).
— Мемы. Мемы в тему, как обычно, на высшем уровне. Они поддерживают настрой и помогают не унывать, когда процесс буксует. Те, кто проходил курсы по ошибкам и панике, понимают, о чём я.
— Практическая применимость. Все задачи жизненные и сразу применимы в работе.
Процесс и советы
— Уровень подготовки. Сложность на уровне. Разработчик должен быть подготовленным. Докер на базовом уровне, go text/template, обработка ошибок, defer, понимание как устроен test.Suite. Если что-то из этого вам не знакомо, закладывайте время на изучение. Важно уметь дебажить свой код и код в тестах. Почитайте заранее про встраиваемые структуры в Go. Если вы не используете gomock, ознакомьтесь с ним.
— Теория и практика. В курсе нет теории Go, только практика. Если с теорией всё хорошо, то будет просто трудно, а не невозможно.
— Внимательность. Внимательно относитесь к каждой фразе и слову в тексте авторов. Знаете, кто скрывается в деталях. Если упустите детали, будет не просто сложно, а очень сложно.
— Подготовка. Если вы не синьёр с многолетним опытом, не ходите на этот курс без прохождения курсов авторов про ошибки и панику. На тех курсах вы поймёте стиль в менее жёстких временных рамках, научитесь писать красивый код заранее и получите удовольствие, а не разочарование и ощущение загнанной лошади.
— Время. Умножайте время на три, чтобы не только пописать, но и вникнуть в тему, почитать и разобраться с багами. (Хотя у меня иногда было и умножить на четыре.)
— Предревью. Комментарии по часто встречаемым ошибкам в конце модуля помогают осознать, что ты не один так написал, и исправиться до ревью. За это спасибо авторам.
— Подсказки. Надеюсь, их перенесут на новую платформу. Они экономят ценное время, не давая «рыть не в ту степь».
— Не откладывайте. Модули 2 и 3 очень объёмные. Лучше начинать их делать сразу, не откладывая до пятницы. Остальные модули норм, просто трудные.
— Шестой модуль. Шестой модуль самый объёмный, так как седьмой я ещё не осилил. Он дал усталость к концу курса.
— Время на курс. Подумайте заранее, где взять время на курс (отпуск, договорённости с руководством). Иначе академ будет «дышать в спину».
— Авторские решения. Не пренебрегайте решениями авторов (я грешил этим вначале). Там можно найти подсказки, как сделать следующее быстро и просто.
— Шестой модуль. Отдельный респект за шестой модуль. Без него я бы так и не понял, что до сих пор меня «водили за ручку». Модуль требует полностью самостоятельного прохождения всего материала. Позволяет закрыть белые пятна, не замеченные в предыдущих модулях. Убедился, каково с нуля писать и чтобы получился готовый продукт. Возможно, модуль показался затянутым и нудным, но точно полезным.
Результаты
— Настройка проекта. Получил навыки настройки проекта.
— Запуск сервисов. Узнал, как красиво запускать сервисы в main .
— Архитектура и паттерны. Архитектурные решения и паттерны из курса буду использовать в проектах.
— Работа с БД. Сделал выводы про ORM и надстройки над БД, и даже получил просветление на вебинаре.
— Интеграция Kafka. Попробовал красивую интеграцию Kafka в проекте.
— Генерация Swagger. Увидел генерацию Swagger в боевой код.
— E2E и интеграционные тесты. Увидел и понял e2e и интеграционные тесты на практике.
— Авторизации в тестах. Пробросил необходимые авторизации в тесты.
— Кодогенерация. Узнал, с чего начать кодогенерацию и как это помогает в работе.
— Асинхронность. Пощупал асинхронщину в разных задачах.
— Зашифрованная передача данных. «Приоткрыл дверь» зашифрованной передачи данных и доверия к информации.
— Тестирование кода. Поймал пару кейсов, где тесты прошли, но мой код был неправильным (ревью помогло это отловить). Один раз получил мастер-класс от Антона по отлову багов.
— Настройка VSCode. Настроил свой VSCode для запуска интеграционных тестов по кнопке (раньше делал это из командной строки).
Благодарность авторам
Проходя курс, я вновь увидел, насколько он качественный и продуманный, сколько в него вложено энергии, знаний и сил. Авторы снова оправдали моё доверие и создали качественный продукт. Заканчиваю общеизвестной фразой: «Аффтар, пиши исчо!»