Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/darius-khll/golang-developer-roadmap
Roadmap to becoming a Go developer in 2020
https://github.com/darius-khll/golang-developer-roadmap
go golang roadmap
Last synced: 6 days ago
JSON representation
Roadmap to becoming a Go developer in 2020
- Host: GitHub
- URL: https://github.com/darius-khll/golang-developer-roadmap
- Owner: darius-khll
- Created: 2019-04-15T10:14:22.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2023-02-13T08:08:20.000Z (almost 2 years ago)
- Last Synced: 2024-10-29T15:05:49.633Z (3 months ago)
- Topics: go, golang, roadmap
- Homepage:
- Size: 31.7 MB
- Stars: 17,962
- Watchers: 403
- Forks: 2,163
- Open Issues: 25
-
Metadata Files:
- Readme: ReadMe.md
Awesome Lists containing this project
- awesome-ccamel - darius-khll/golang-developer-roadmap - Roadmap to becoming a Go developer in 2020 (Misc)
- my-awesome - darius-khll/golang-developer-roadmap - 02 star:18.1k fork:2.2k Roadmap to becoming a Go developer in 2020 (Others)
README
# Go Developer Roadmap
> Roadmap to becoming a [Go](https://golang.org/) developer in 2021:
Below you can find a chart demonstrating the paths that you can take and the libraries that you would want to learn to become a Go developer. I made this chart as a tip for everyone who asks me, "*What should I learn next as a Go developer?*"
[简体中文版](./i18n/zh-CN/ReadMe-zh-CN.md)
[繁體中文版](./i18n/zh-TW/ReadMe-zh-TW.md)
[日本語版](./i18n/ja-JP/ReadMe-ja-JP.md)
[Versão em Português do Brasil](./i18n/pt-BR/ReadMe-pt-BR.md)
[한국어](./i18n/ko-KR/ReadMe-ko-KR.md)
[Русский](./i18n/ru-RU/ReadMe-ru-RU.md)
[Українська](./i18n/uk-UA/ReadMe-uk-UA.md)
[العربية](i18n/ar-IQ/ReadMe-ar-IQ.md)
## Disclaimer> The purpose of this roadmap is to give you an idea about the landscape. The road map will guide you if you are confused about what to learn next, rather than encouraging you to pick what is hype and trendy. You should grow some understanding of why one tool would be better suited for some cases than the other and remember hype and trendy does not always mean best suited for the job.
## Give a Star! :star:
If you like or are using this project to learn or start your solution, please give it a star. Thanks!
## Roadmap
![Roadmap](./golang-developer-roadmap.png)
## Resources
1. Prerequisites
- [Go](https://golangbot.com/)
- [Go Modules](https://blog.golang.org/using-go-modules)
- [SQL](https://www.w3schools.com/sql/default.asp)2. General Development Skills
- Learn GIT, create a few repositories on GitHub, share your code with other people
- Know HTTP(S) protocol, request methods (GET, POST, PUT, PATCH, DELETE, OPTIONS)
- Don't be afraid of using Google, [Power Searching with Google](http://www.powersearchingwithgoogle.com/)
- Read a few books about algorithms and data structures
- Learn about implementation of a basic Authentication
- Solid principles, architectural & design patterns, ecc
- Basics of software testing (unit, integration, e2e)3. CLI Tools
1. [cobra](https://github.com/spf13/cobra)
2. [urfave/cli](https://github.com/urfave/cli)4. Web Frameworks + Routers
1. [Beego](https://github.com/beego/beego)
2. [Chi](https://github.com/go-chi/chi)
3. [Echo](https://github.com/labstack/echo)
4. [Fiber](https://github.com/gofiber/fiber)
5. [Gin](https://github.com/gin-gonic/gin)
6. [Revel](https://github.com/revel/revel)5. Databases
1. Relational
1. [SQL Server](https://www.microsoft.com/en-us/sql-server/sql-server-2017)
2. [PostgreSQL](https://www.postgresql.org/)
3. [MariaDB](https://mariadb.org/)
4. [MySQL](https://www.mysql.com/)
5. [CockroachDB](https://www.cockroachlabs.com/)
2. Cloud Databases
- [CosmosDB](https://docs.microsoft.com/en-us/azure/cosmos-db)
- [DynamoDB](https://aws.amazon.com/dynamodb/)
3. Search Engines
- [ElasticSearch](https://www.elastic.co/)
- [Solr](http://lucene.apache.org/solr/)
- [Sphinx](http://sphinxsearch.com/)
4. NoSQL
- [MongoDB](https://www.mongodb.com/)
- [Redis](https://redis.io/)
- [Apache Cassandra](http://cassandra.apache.org/)
- [RavenDB](https://github.com/ravendb/ravendb)
- [CouchDB](http://couchdb.apache.org/)6. ORMs
1. [Gorm](https://github.com/go-gorm/gorm)
2. [Xorm](https://github.com/go-xorm/xorm)7. Caching
1. [GCache](https://github.com/bluele/gcache)
2. Distributed Cache
1. [Go-Redis](https://github.com/go-redis/redis)
2. [GoMemcached](https://github.com/bradfitz/gomemcache)8. Logging
1. Log Frameworks
- [Zap](https://github.com/uber-go/zap)
- [ZeroLog](https://github.com/rs/zerolog)
- [Logrus](https://github.com/sirupsen/logrus)
2. Log Management System
- [Sentry.io](http://sentry.io)
- [Loggly.com](https://loggly.com)
3. Distributed Tracing
- [Jaeger](https://www.jaegertracing.io/)9. Real-Time Communication
1. [Centrifugo](https://github.com/centrifugal/centrifugo)
2. [Melody](https://github.com/olahol/melody)10. API Clients
1. REST
- [Gentleman](https://github.com/h2non/gentleman)
- [GRequests](https://github.com/kennethreitz/grequests)
- [heimdall](https://github.com/gojek/heimdall)
2. [GraphQL](https://graphql.org/)
- [gqlgen](https://github.com/99designs/gqlgen)
- [graphql-go](https://github.com/graph-gophers/graphql-go)11. Good to Know
- [Validator](https://github.com/go-playground/validator)
- [Glow](https://github.com/pytorch/glow)
- [GJson](https://github.com/tidwall/gjson)
- [Authboss](https://github.com/volatiletech/authboss)
- [Go-Underscore](https://github.com/ahl5esoft/golang-underscore)12. Testing
1. Unit, Behavior, Integration Testing
1. [GoMock](https://github.com/golang/mock)
2. [Testify](https://github.com/stretchr/testify)
3. [GinkGo](https://github.com/onsi/ginkgo)
4. [GoMega](https://github.com/onsi/gomega)
5. [GoCheck](https://github.com/go-check/check)
6. [GoDog](https://github.com/DATA-DOG/godog)
7. [GoConvey](https://github.com/smartystreets/goconvey)
8. [Dockertest](https://github.com/ory/dockertest)
2. E2E Testing
- [Selenium](https://github.com/tebeka/selenium)
- [Endly](https://github.com/viant/endly)13. Task Scheduling
- [Gron](https://github.com/roylee0704/gron)
- [JobRunner](https://github.com/bamzi/jobrunner)
- [Gocron](https://github.com/go-co-op/gocron)14. MicroServices
1. Message-Broker
- [RabbitMQ](https://www.rabbitmq.com/tutorials/tutorial-one-go.html)
- [Apache Kafka](https://kafka.apache.org/)
- [ActiveMQ](https://github.com/apache/activemq)
- [Azure Service Bus](https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview)
2. Building message-driven
- [Watermill](https://github.com/ThreeDotsLabs/watermill)
- [Message-Bus](https://github.com/vardius/message-bus)
3. Frameworks
- [GoKit](https://github.com/go-kit/kit)
- [go-zero](https://github.com/tal-tech/go-zero)
- [Micro](https://github.com/micro/go-micro)
- [rpcx](https://github.com/smallnest/rpcx)
4. RPC
- [Protocol Buffers](https://github.com/protocolbuffers/protobuf)
- [gRPC-Go](https://github.com/grpc/grpc-go)
- [gRPC-Gateway](https://github.com/grpc-ecosystem/grpc-gateway)
- [Twirp](https://github.com/twitchtv/twirp)15. [Go-Patterns](https://github.com/tmrts/go-patterns)
## Wrap Up
If you think the roadmap can be improved, please do open a PR with any updates and submit any issues. Also, I will continue to improve this, so you might want to star this repository to revisit.
Idea from : [ASP.NET Core Developer Roadmap](https://github.com/MoienTajik/AspNetCore-Developer-Roadmap)
## Contribution
The roadmap is built using [Draw.io](https://www.draw.io/). Project file can be found at `golang-developer-roadmap.xml` file. To modify it, open draw.io, click **Open Existing Diagram** and choose `xml` file with project. It will open the roadmap for you. Update it, upload and update the images in readme and create a PR (export as png with 400% zoom and minify that with [Compressor.io](https://compressor.io/compress)).
- Open a pull request with improvements
- Discuss ideas in issues
- Spread the word## License
[![License: CC BY-NC-SA 4.0](https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc-sa/4.0/)