After releasing a bunch of opensource software written in #Go like #cks-cli , #seal-cli , i received a lot of PM asking:
- From where to start ?
- How to be comfortable while using Go to build my software.
This article is summary of what I answered people previously
If you don’t like reading, you can jump directly to the last section “Advises”
I got many opportunities to build many software from scratch. Indeed, I worked in a DevOps team (SRE mode) since 2016. A such job which requires usually to design software which “operationalize” the work of others — building the right software for the right operation(s).
Before 2018, I used to start my software either by “app.js” (NodeJS app) or even “run.sh” (Shell script) if it’s quick-wins, even though i am not convinced with this latter.
At 2018, i learnt Go programming language. But because, of the time shortage, I never dared to finish writing a Golang software till the end.
Until the beginning of year 2020 comes, i realized that the “time shortage” is a lie. And I shifted the gear by a simple software : uploading artifact to Nexus, to be called by pipeline system . There was a lot of hardcoding, but i was happy that I broke the time constraint lie.
Today, the list became longer & software became more mature (unit-testing, auto-release,… ) , i.e:
- go-http-proxy: lightweight HTTP proxy (6MiB) , replacing squid
- cks-cli: Helping Kubernetes students to prepare for CKS ( Certified Kubernetes Security Specialist) exam.
- seal-cli : Elegant wrapper for kubeseal CLI
- And why not contributing on famous opensource software like this fork of docker/compose.
- And other non-opensources for organization purposes , using Go Gin, ..etc
1- Learn the specific things about this language. So if you are coming from another lang background, you will not apply same patterns (i.e. there is no object, no OOP,..etc). Check Stephane Grider Course in Udemy about Golang.. it addresses that exactly without going deeply with heavy apps
2. Whenever there is new app required development in your team, create empty git repo, create “main.go” file , and start.
3. Learn by practice after that