Год в Go: путь, книги, нюансы и почему «простой» — не значит «лёгкий»

Год в Go

Сегодня хочу зафиксировать одну маленькую, но важную ступень: ровно год, как я плотно занимаюсь Go. Для меня это не про карьерный рывок, а про любимое хобби, которое тренирует мозг, даёт реальные навыки и каждый день подкидывает интересные задачки.

С чего всё началось

Старт был с книги «Head First. Изучаем Go» Джея Магаврена. Она классная именно своей подачей: минимум сухой теории, максимум практики и понятных аналогий. Учитывая, что у меня уже был опыт программирования, книга показалась простой — и это было плюсом: быстро закрыл базовые пробелы, не потерял мотивацию и сразу начал что-то писать. Отзыв на неё уже лежит здесь.

Дальше закрепил базу на курсе «Программирование на Golang» от Семёна Новикова. Курс бесплатный, его может пройти любой желающий — и я искренне рекомендую, если хочется получить системную базу. На блоге также есть подробный отзыв на него: там разобрал сильные и слабые стороны курса.

На этом этапе стало кристально ясно: одного синтаксиса недостаточно.

Реальность продакшена: стек шире, чем кажется

Очень быстро понял, что для реальной разработки мало знать только язык. Поэтому параллельно подтянул SQL (сейчас как раз прохожу курс от «Pragmatic Programmer») и освоил базу Docker. Это тот самый момент, когда ты пишешь код, а потом думаешь: «А как это упаковать? Как задеплоить? Как оно будет работать с базой?» — и понимаешь, что продакшен — это всегда про связку технологий.

Сейчас моя главная книга — «Программирование на Go» Донована и Кернигана. Честно? Это тяжело. Я примерно на середине, и каждый раздел требует времени, вдумчивого чтения и практики. Но именно здесь раскрываются те самые нюансы, которые отличают «пишу на Go» от «понимаю, как Go работает под капотом». Отзыв обязательно будет, когда дойду до конца.

На чём сейчас фокус

Основной упор делаю на два направления: сам язык и алгоритмы.

Алгоритмы разбираю через задачи: мне важно не просто получить ответ, а оценить временную и пространственную сложность, понять, почему одно решение лучше другого, и избегать лишних констант и неоптимальных подходов. Например, недавно разбирал min‑heap и конкурентный доступ к данным — было интересно свести всё к чистой логике без «костылей».

Язык — через понимание механизмов: как работают интерфейсы, нюансы конкурентности, обработка ошибок, работа с памятью. К примеру, совсем недавно разбирался, почему нельзя дважды закрывать файл и как правильно работать с ошибками от Close после io.Copy. Такие штуки кажутся мелочью, но именно они отличают надёжный код от «вроде работает».

Ну и, конечно, без своего проекта никуда. У меня на GitHub лежит обычный pet‑проект — небольшой Todo API. Делал его как полигон, чтобы собрать вместе то, что изучаю: Go 1.24, Gin, PostgreSQL, JWT‑авторизацию. Специально потренировался применять вещи, которые реально важны в работе: чистую архитектуру (Handler‑Service‑Repository), транзакции, graceful shutdown, структурированные логи. Сразу закладывал возможность запуска в Docker и добавил Swagger, чтобы API было понятно не только мне.

С 3 октября начал отмечать свой прогресс коммитами. Простая привычка, но очень мощная: ты не просто «занимаешься», а видишь конкретные результаты. Этот день обязательно потом отпраздную.

Про «простой язык» и цену ошибки

Часто слышу: «Go — простой язык». Тут мне сразу вспоминается английский. Английский тоже называют простыми языком для освоения. И если ты делаешь ошибку в разговоре, это простительно — никто тебя за это не поругает, кроме учителя на уроке. А вот с Go так не получится. В коде ошибки не прощают: если где‑то неправильно обработаешь закрытие ресурса, упустишь гонку данных или неверно оценишь сложность алгоритма, расплачиваться будут пользователи. И благодарить за такие ошибки точно никто не будет.

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

Я считаю Go универсальным классическим языком: в нём есть указатели, строгий и понятный синтаксис, мощная поддержка конкурентности, при этом нет перегруженного ООП. Для меня как для хобби это идеальное сочетание: и мозг тренируется, и результат осязаемый.

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

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: