Привет! Меня зовут Владислав Попов, я автор курса «Go-разработчик» Яндекс Практикума.
Когда-то я сам был студентом — хотел учиться Go, но такого курса в Практикуме не было, поступил на Python. Прошёл вводную часть — и тут стартовал желанный курс по Go. В тот же вечер оформил возврат и перепоступил. Попал в первый поток, прошёл его, и после сдачи итогового проекта мне предложили стать тестером курса «Продвинутый Go-разработчик».
Оба курса были ещё не идеальны — что-то требовало доработки, некоторые темы казались мне недостаточно раскрытыми. Я сообщил об этом команде курса и предложил варианты, что можно улучшить. В какой-то момент о них узнал продакт-менеджер — и так я получил приглашение поработать с командой Практикума. Мне предстояло разработать концепцию и внести предложения по рефакторингу курса, но я сделал бросок пантеры и написал несколько уроков с нуля. Команде они понравились. Так я стал работать в Практикуме.
За время работы с Go я понял, что сам язык не очень сложный и подходит даже в качестве первого, но нужно выучить синтаксис и погрузиться в некоторые особенности, которые отличают Go от других языков: например, интерфейсы и особенности встраивания. А ещё важно на старте хорошо знать Git и ориентироваться в работе SQL (причём любого).
Эта подборка составлена менторами нашего курса по Go-разработке для практикующих программистов. Она родилась благодаря коллективному разуму наших наставников, которые занимают позиции синьор-разработчиков на Go в разных компаниях.
1. SQL Tutorial от W3Schools
Go-разработчик работает с базами данных и должен знать SQL. Заполнить пробелы поможет этот туториал — в нём есть весь необходимый минимум знаний по теме (а где-то и максимум).
2. Официальный тур по Go
Говорят, что этого ресурса достаточно, чтобы полностью узнать Go, но это, конечно, не так. Зато он точно поможет освоить базовый синтаксис языка, и его можно пройти за неделю.
3. Бесплатный курс «Основы Go»
Бесплатный курс от Яндекс Практикума, который подготовит вас к работе на Go. Он помогает понять, как и что работает в языке, и даёт первую практику — к концу курса уже можно будет писать простые проекты: приложения командной строки, веб-серверы, REST API, микросервисы. Материал в нём не такой сжатый и краткий, как в туре, встречаются интересные конструкции — рассматриваются паттерны проектирования и многопоточности, работа с базой данных и JSON, профилирование, документирование своего API, кодогенерация, дженерики, статический анализ кода, gRPC. Хорошая база для дальнейшего продвижения.
4. «Введение в программирование на Go», Калеб Докси
Просто книжка о Go. Подойдёт, если формат классического учебника кажется вам эффективнее курсов и мануалов. Может, она не такая интересная, как, например, тур по Go, но зато она есть на русском языке.
«Введение в программирование на Go», Калеб Докси →
5. «Язык программирования Go», Алан Донован и Брайан Керниган
Книга от мастодонтов — соавтора языка Алана Донована и Брайана Кернигана, соавтора известного руководства по C. Непростое руководство для тех, кто уже уверенно владеет другим языком. Подойдёт, если вы уверены в себе и хотите сразу перейти к сути.
«Язык программирования Go», Алан Донован и Брайан Керниган →
6. «Go в примерах», Марк МакГрэнаган
Учебник для тех, кто не любит много читать, а предпочитает сразу переходить к коду и уже потом разбираться, как он устроен.
«Go в примерах», Марк МакГрэнаган →
7. Эффективный Go
Дополнение к официальному туру по Go, переведённое на русский язык. Часто его используют для согласования кодстайла в компаниях. Поможет привыкнуть и понять философию языка.
Книга состоит из небольших глав, в каждой из которых описываются особенности Go — не от простого к сложному, а просто в формате перечисления фишек, по принципу «лучшие практики».
«Эффективный Go» (на русском языке) →
8. Стандартная библиотека Go
Хорошей практикой для Go-разработчиков считается читать стандартную библиотеку языка — там всё очень подробно и классно комментируется. Умеешь читать стандартную библиотеку, значит, понимаешь, как развивался и создавался язык, глубже погружаешься в него и качественнее пишешь свои продукты.
Она огромная, и лучше не читать её полностью, а заглядывать время от времени. Например, не знаешь, как работает та или иная функция, — находишь и читаешь подробное описание.
9. Go Cheat Sheet
Набор шпаргалок по Go. Помогают, когда пишешь код и внезапно возникает какой-нибудь несложный вопрос. Чтобы не искать нужную главу в книге или не читать какую-нибудь статью из-за пары строчек кода, можно обратиться к чему-то подобному. Все сниппеты разделены по топикам: функции, интерфейсы, работа с ошибками и так далее. На сайте есть шпаргалки и по другим языкам.
10. Go go-to guide
Сборник кратких инструкций, который можно проходить как учебник по основам вместо официального тура. Но он не только для новичков — практикующие Go-разработчики могут находить мануалы по темам, в которых они не очень хорошо ориентируются, и прорабатывать их отдельно.
11. «Чистая архитектура и как её готовить», Михаил Непряхин
Чистая архитектура хороша тем, что разные составляющие кода в ней разделены: если что-то поменять в одном «слое», то в другом ничего не сломается. Такие системы легче масштабировать и совершенствовать. Чтобы понять, что такое чистая архитектура и как она работает, можно прочитать какую-нибудь книгу — но видео объясняет тему не хуже.
12. «Изучаем Golang. Интерфейсы», The Art of Development
В Go своеобразные интерфейсы, в которых может быть непросто разобраться — некоторые делают это спустя месяцы практики, хотя это необходимо. Хуже всего, что большинство книг раскрывают эту тему так, что становится ещё непонятнее. В видео суть интерфейсов в Go объясняется более простым языком.
13. «Go: десериализация JSON с неправильной типизацией, или как обходить ошибки разработчиков API», Юрий Плохов
Этот материал советуют все менторы Практикума. Он просто и сжато рассказывает про JSON и как с ним не напортачить, десериализовать без ошибок и так далее.
14. «Программист из 80-х / История появления интернета и программирования в СССР / Всё о Go» — интервью с Романом Губаревым
Интервью с ведущим разработчиком Juno Романом Губаревым может понравиться людям, которые давно занимаются разработкой, привыкли к своему языку и хотят, но боятся что-то менять.
15. Podlodka #240 — Golang
Интервью с Алексеем Палажченко из Sidero Labs и подкаста GolangShow — мотивационное видео с объяснением, что такое Go и зачем он нужен, где востребован и почему стоит им заниматься.
16. «Гениальный Go-разработчик из Узбекистана Влад Тен — пишет код, читает рэп — Мы обречены #31»
Интересное интервью с Владом Теном, который был стендапером и ворвался в IT со скоростью ракеты, дойдя за пару лет до работы в Microsoft. Правда, сейчас он уже пишет на C#.
И ещё один вариант, который подойдёт тем, кто хочет учиться не самостоятельно, а с поддержкой менторов, код-ревью, спринтами и дедлайнами, — это наш курс «Go-разработчик». Студенты проходят теорию и тут же закрепляют её на рабочих задачах, создавая большой проект к концу обучения — навык для голосовой помощницы Алисы.
Это главное, но далеко не всё, что может быть полезно для начинающего Go-разработчика, — если у вас есть свои варианты, поделитесь ими в комментариях. Удачи!