Roadmap to becoming a Go developer in 2020

Overview

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

Issues
  • 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.

    enhancement 
    opened by mahmoudhossam 3
  • Possibly some more helpful pointers to the roadmap

    Possibly some more helpful pointers to the roadmap

    opened by sks 3
  • 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

    enhancement 
    opened by maplerichie 2
  • 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!

    enhancement 
    opened by micshome 2
  • 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.

    opened by delley 2
  • 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?

    enhancement 
    opened by Quorafind 2
  • 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 "简体中文版"
    opened by apriil15 1
  • 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.

    opened by kevwan 1
  • 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

    opened by chemidy 1
  • 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.

    opened by dels07 1
  • 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.

    enhancement 
    opened by Inconnu08 1
  • 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.

    opened by xuri 1
  • 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?

    opened by hdw868 4
Owner
Ali Khalili
Full-stack developer
Ali Khalili
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

Sangam Biradar 146 May 19, 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

null 1 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

PramodRawate 0 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

Saiyam Pathak 274 Jun 25, 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:

WeCTF Organizers 23 Jun 29, 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

lian 356 Jun 20, 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

Junwang Zhao 0 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

Ray Eldath 50 Jun 21, 2022
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

null 195 Jun 27, 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

null 893 Jun 23, 2022
IBM Developer 中文网站文章备份

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

labulaka521 274 Jul 1, 2022
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

KintoHub 30 Jun 7, 2022
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. ?? ??

SigNoz 7k Jul 2, 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

KodeRover 1.5k Jun 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?

KodeRover 30 May 12, 2021
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.

Adrian Hesketh 122 Jun 12, 2022
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

Sangam Biradar 146 May 19, 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

null 2.1k Jun 23, 2022
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.

kenju 5 Oct 11, 2021
A simple, semantic and developer-friendly golang package for encoding&decoding and encryption&decryption

A simple, semantic and developer-friendly golang package for encoding&decoding and encryption&decryption

null 258 Jul 3, 2022
Devstack is Razorpay's Developer Experience Solution for cloud on laptop

devstack Devstack is Razorpay's Developer Experience Solution for cloud on laptop What is Devstack At razorpay, we run all our workloads on kubernetes

Razorpay 103 Jun 9, 2022
Developer Self-Service Across Clusters

Monoskope (m8) Monoskope (short m8 spelled "mate") implements the management and operation of tenants, users and their roles in a Kubernetes multi-clu

finleap connect 6 Jun 15, 2022
Used gRPC for the first time, and it was a amazing developer experience

gRPC Used gRPC for the first time, and it was a amazing developer experience. Edge points of using gPRC which I felt: Structured Code Uniform request

Mrigank Anand 5 Oct 11, 2021
Transfer your local .ENV files for another developer

Zip/Unzip local .env file Transfer your local .ENV files for another developer. for Zip: run in root where .env files ./ziper_local_env created "resu

Фарид 1 Oct 20, 2021
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

null 1 Oct 22, 2021
GoFarm is an Application Development Framework for especially Backend Developer with Golang

What is GoFarm GoFarm is an Application Development Framework for especially Backend Developer with Golang. Our goal is to develop easier, standardize

Alvin Leonardo 2 Dec 9, 2021
A BPMN engine, meant to be embedded in Go applications with minim hurdles, and a pleasant developer experience using it.

A BPMN engine, meant to be embedded in Go applications with minim hurdles, and a pleasant developer experience using it. This approach can increase transparency for non-developers.

Martin W. Kirst 32 Jun 26, 2022
Camerdevs, is dev cameroonian developer platform.

camerdevs Camerdevs, is dev cameroonian developer platform. Features The platform includes the functionnalities bellow: A Catalogue cameroonian develo

OSS Cameroon 15 May 16, 2022