Привет! Меня зовут Владислав Попов, я автор курса «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-разработчика, — если у вас есть свои варианты, поделитесь ими в комментариях. Удачи!
Комментарии (9)
Pastoral
00.00.0000 00:00+4Заходим на go.dev и, о чудо, видим
Documentation
Everything there is to know about Go.
Так это как, враки, не everything отнюдь сталбыть, или остальные материалы для самостоятельного изучения зачем? Готовим программистов из тех, кто читать не умеют, потом в странноватую пирамидальную систему джунами и все пилят всласть?
Может, она не такая интересная, как, например, тур по Go, но зато она есть на русском языке.
Языка не знать - это нормально? Вы на что надеетесь, господа хорошие?
Учить Go как таковой - недели много. Занятому человеку - ладно, пусть будет две. То же самое применимо ко всему, от Rust до JavaScript. Курсы зачем? Есть гипотеза - готовить кадры. Кому готовить? Работодателю. А ему надо как? Чтоб работал и не дёргался. Лишние знания - лишний риск… лишнего понимания.
Как пример заведомо разумных курсов - курс теоретический физики. Он разумный по двум причинам. Пока сам все первоисточники перечитаешь - пенсию пора оформлять, и в гордом одиночестве отличить нужное от ненужного и интересное от неинтересного - шансов нет.
Чувствуете запах логики - учить надо тому, чему клиент сам не выучится. А это база, типа «современные проблемы языков программирования», и сравнения всякого рода, от языков до стеков технологий. Потому, например, что осознанный просто выбор с нуля между теми же Rust, Go, Dart и C++ требует два человеко-года если повезёт.
Примыкает к этому обзор всяческих материалов, так что таки полезная статья. Но курсы - откровенно коммерческие предложения,
Не обманешь - не продашь.
Спасибо Хабру, на весь остаток кармы понаписать удалось.
Palazzo_Farnese
00.00.0000 00:00+1Более закомплексованный и графоманский комментарий за все годы жизни мне не удалось встретить
denisstfu
00.00.0000 00:00+3Не забываем про бесплатный курс Stepik. Судя по кол-ву комментов под каждой задачей - довольно популярный
DarwinTenk
00.00.0000 00:00Я его проходил, очень крутой тем, что задачи далеко не легкие и некоторые из них занимали прям много времени не столько писать код, сколько вообще придумать как решить, при том что есть неплохой опыт на ruby/python
stinger1
00.00.0000 00:00Сколько времени надо на изучение GO с нуля?Если заниматься каждый день по 3 - 4 часа?
klimkinMD
Интересно было бы посмотреть на список (и краткое описание) промышленных(!) проектов, в которых автор принимал участие в качестве разработчика
lekanlekan Автор
Привет! В нашей стране есть Волго-Донской судоходный канал, который соединяет две реки - Волгу и Дон. Это аж 13 шлюзов. Основная проблема этого канала - это судопропуск, на который влияет очень много факторов, среди которых погодные условия, уровень воды в бассейнах, дата открытия и дата закрытия навигации, количество аварий и их сложность и так далее. Все эти данные нужно было собирать и проводить аналитику, чтобы понимать, насколько успешным или неуспешным будет следующий год в плане навигации(судопропуска). Это большие данные, с которыми нужно было работать. Наверное это самый "промышленный" проект, который у меня был. ;)
klimkinMD
Писали на Go?
lekanlekan Автор
Не все. С данными все таки проще работать на Python.