Roadmap to becoming a Go developer in 2020

Go Developer Roadmap

Roadmap to becoming a Go developer in 2020:

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?"

中文版 日本語版 Versão em Português do Brasil 한국어

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!

If you like or are using this project to learn or start your solution, please give it a star. Thanks!

Roadmap

Roadmap

Resources

  1. Prerequisites

  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
    • 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
    2. urfave/cli
  4. Web Frameworks + Routers

    1. Beego
    2. Chi
    3. Echo
    4. Fiber
    5. Gin
    6. Revel
  5. Databases

    1. Relational
      1. SQL Server
      2. PostgreSQL
      3. MariaDB
      4. MySQL
      5. CockroachDB
    2. Cloud Databases
    3. Search Engines
    4. NoSQL
  6. ORMs

    1. Gorm
    2. Xorm
  7. Caching

    1. GCache
    2. Distributed Cache
      1. Go-Redis
      2. GoMemcached
  8. Logging

    1. Log Frameworks
    2. Log Management System
    3. Distributed Tracing
  9. Real-Time Communication

    1. Socket.IO
  10. API Clients

    1. REST
    2. GraphQL
  11. Good to Know

  12. Testing

    1. Unit, Behavior, Integration Testing
      1. GoMock
      2. Testify
      3. GinkGo
      4. GoMega
      5. GoCheck
      6. GoDog
      7. GoConvey
      8. Dockertest
    2. E2E Testing
  13. Task Scheduling

  14. MicroServices

    1. Message-Broker
    2. Building message-driven
    3. Frameworks
    4. RPC
  15. 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

Contribution

The roadmap is built using 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).

  • Open a pull request with improvements
  • Discuss ideas in issues
  • Spread the word

License

License: CC BY-NC-SA 4.0

Owner
Ali Khalili
Full-stack developer
Ali Khalili
Comments
  • Remove Dep

    Remove Dep

    While Dep was the official experiment, developers new to Go are encouraged to use Go modules instead since they are part of the official toolchain now.

    I think it's time we stop recommending Dep to new developers and stick with the official standard.

  • Possibly some more helpful pointers to the roadmap

    Possibly some more helpful pointers to the roadmap

  • Add Fiber into framework list

    Add Fiber into framework list

    Fiber is a great framework, simple, good documentation, good team, blazing fast (tested in local environment, production havent yet)

    https://github.com/gofiber/fiber

  • Recommend to add

    Recommend to add

    Hi, really like this project :) Recommend to several projects we years already use in prod:

    1. Config management: viper
    2. WebServer - simple and very fast, on fasthttp base: atreugo
    3. Distributed cache: aerospike
    4. Log management system: graylog
    5. Task scheduling: cron

    Thank you!

  • Logging structure

    Logging structure

    The logging topic structure shown in the diagram does not match what is in the readme. I believe it should start at the Logging node and not at the Log Frameworks node.

  • Add some awesome projects

    Add some awesome projects

    For example, Staffjoy is an awesome project based on golang. Maybe we can add it to a node ‘Project’

    Just like this:

    1. Project

    What do you think of it?

  • update zh-TW version

    update zh-TW version

    1. update zh-TW version in i18n folder
    2. update other md file's link
    3. in order to distinguish zh-CN and zh-TW, so change zh-CN name from "中文版" to "简体中文版"
  • add go-zero framework

    add go-zero framework

    go-zero is a web and rpc framework written in Go. It's born to ensure the stability of the busy sites with resilient design. Builtin goctl greatly improves the development productivity.

    You can find more information about Watermill in the GitHub and in the documentation at go-zero.dev.

  • Add an Observability  / Telemetry Path

    Add an Observability / Telemetry Path

    Hi there

    Observability is a must have today, maybe we can have a Observability / Telemetry path to the roadmap?

    I think future will be https://opentelemetry.io/, but there are a lot of framework technology : https://radar.cncf.io/2020-09-observability

  • Give some explanation on decision

    Give some explanation on decision

    I just stumble upon your developer roadmap, as a newbie, I would like to know why you suggesting echo as framework of choice, since most of golang dev I met/talked to prefer no framework so they cannot help explain it.

    I'm coming from PHP and Python so community already have general consensus on what framework to use, even PHP community basically advise to start new project using framework mainly due to possible security issue with no framework implementation.

    Also some description on other decision would be great.

  • Add graphql libraries

    Add graphql libraries

    Since there is a GraphQL section already, I think its best to add some libraries to that section. More specifically these?

    • gqlgen
    • graphql-go

    Would love to PR if need be.

  • add Excelize library, and update chart title to 2022

    add Excelize library, and update chart title to 2022

    Hi @Alikhll , this PR add a Go language library Excelize and update the chart title to "Go Developer in 2022".

    Excelize is a library written in pure Go providing a set of functions that allow you to write to and read from XLSX / XLSM / XLTM / XLTX files. Supports reading and writing spreadsheet documents generated by Microsoft Excel™ 2007 and later. Supports complex components by high compatibility, and provided streaming API for generating or reading data from a worksheet with huge amounts of data.

    You can find more information about Excelize in the GitHub and in the documentation.

  • Any recommendation for configuration management package?

    Any recommendation for configuration management package?

    There could be a lot of approach to store your configuration to some file such as JSON, YAML, TOML, INI and etc. I wonder what's the proposed way to read/write configuration file in golang?

The Ultimate Workshop Track for #golang Developer
The Ultimate Workshop Track  for #golang Developer

layout title nav_order description permalink default An Ultimate GopherLabs Hands-on Labs 1 An Ultimate GopherLabs Hands-on Labs / Join GopherLabs Com

Dec 7, 2022
This is from the udemy course: Go: The Complete Developer's Guide (Golang)

Go Udemy course - "Go: The Complete Developer's Guide (Golang)" How to run the file: go run hello-world.go go run <filename>.go GO CLI commands: go ru

Oct 22, 2021
Go: The Complete Developer's Guide (Golang) Udemy Course by Stephen Grider

Go-The-Complete-Developers-Guide Go Command line tools 1. go build - compiles a bunch of go source code files go build

Dec 29, 2021
DevOps Roadmap 2022

Want to learn DevOps the right way in 2022 ? You have come to the right place I have created the complete DevOps roadmap that anyone can follow and be

Dec 28, 2022
WeCTF 2020+ Source Code & Organizer's Writeup

WeCTF 2020+ Thank you all for participating! This README contains our writeup sketches. You can also share your writeup on CTFtime. Event Link: https:

Jul 6, 2022
connect to microsoft flight simulator 2020 using golang

msfs2020-go simconnect package msfs2020-go/simconnect connects to microsoft flight simulator 2020 using golang. cross-compiles from macos/linux, no ot

Nov 23, 2022
Labs for MIT 6.824 Distributed Systems (Spring 2020)

6.824-2020-labs This repo contains labs for MIT 6.824 Distributed Systems (Spring 2020) The master branch contains the source code with no implementat

Jan 18, 2022
MIT 6.824: Distributed Systems (Spring 2020)

MIT6.824 MIT 6.824: Distributed Systems (Spring 2020) Lab 1 Lab 2 Lab 2A Lab 2B Lab 2C Lab 2D Lab 3 Lab 3A Lab 3B Lab 4 Lab 4A Lab 4B Lab 4 Challenge

Dec 26, 2022
Concurrent task runner, developer's routine tasks automation toolkit. Simple modern alternative to GNU Make 🧰
Concurrent task runner, developer's routine tasks automation toolkit. Simple modern alternative to GNU Make 🧰

taskctl - concurrent task runner, developer's routine tasks automation toolkit Simple modern alternative to GNU Make. taskctl is concurrent task runne

Dec 14, 2022
Package githubv4 is a client library for accessing GitHub GraphQL API v4 (https://developer.github.com/v4/).

githubv4 Package githubv4 is a client library for accessing GitHub GraphQL API v4 (https://docs.github.com/en/graphql). If you're looking for a client

Dec 26, 2022
IBM Developer 中文网站文章备份

IBM中文网站文章备份 疑似IBM中文网站将要关闭(已删除) 全部文章索引 2D、3D、物理和网络.md Activiti–新一代的开源BPM引擎.md AI与安全性.md AI语言.md AmbariMetrics详解.md Ambari——大数据平台的搭建利器.md Ambari——大数据平台的

Jan 9, 2023
KintoHub is an open source build and deployment platform designed with a developer-friendly interface for Kubernetes.
KintoHub is an open source build and deployment platform designed with a developer-friendly interface for Kubernetes.

What is Kintohub? KintoHub is an open source build and deployment platform designed with a developer-friendly interface for Kubernetes. Build your cod

Jun 7, 2022
SigNoz helps developer monitor applications and troubleshoot problems in their deployed applications
SigNoz helps developer monitor applications and troubleshoot problems in their deployed applications

SigNoz helps developers monitor their applications & troubleshoot problems, an open-source alternative to DataDog, NewRelic, etc. ?? ??

Dec 27, 2022
Zadig is a cloud native, distributed, developer-oriented continuous delivery product.

Zadig Developer-oriented Continuous Delivery Product English | 简体中文 Table of Contents Zadig Table of Contents What is Zadig Quick start How to use? Ho

Jan 8, 2023
Zadig is a cloud native, distributed, developer-oriented continuous delivery product.

Zadig Developer-oriented Continuous Delivery Product ⁣ English | 简体中文 Table of Contents Zadig Table of Contents What is Zadig Quick start How to use?

May 12, 2021
A strongly typed HTML templating language that compiles to Go code, and has great developer tooling.
A strongly typed HTML templating language that compiles to Go code, and has great developer tooling.

A language, command line tool and set of IDE extensions that makes it easier to write HTML user interfaces and websites using Go.

Dec 29, 2022
The Ultimate Workshop Track for #golang Developer
The Ultimate Workshop Track  for #golang Developer

layout title nav_order description permalink default An Ultimate GopherLabs Hands-on Labs 1 An Ultimate GopherLabs Hands-on Labs / Join GopherLabs Com

Dec 7, 2022
A simple, semantic and developer-friendly golang package for datetime

Carbon 中文 | English carbon 是一个轻量级、语义化、对开发者友好的 Golang 时间处理库,支持链式调用和 gorm、xorm、zorm 等主流 orm。 如果您觉得不错,请给个 star 吧 github:github.com/golang-module/carbon g

Jan 9, 2023
go-awssh is a developer tool to make your SSH to AWS EC2 instances easy.

Describing Instances/VPCs data, select one or multiple instances, and make connection(s) to selected instances. Caching the response of API calls for 1day using Tmpfs.

Oct 11, 2021