After way too long, I finally had the itch to blog again. Firstly, sorry about the hiatus.
As those of you that follow me on Linkedin know, in February I joined my very good friend Aaron at MyTeksi as a Platform Architect.
From day one, it has been a wild ride. I am not sure how much “Platform Architect-ing” that I have managed to do but I will say that it has been and remains, quite an experience.
We have been experiencing crazy levels of growth in the demand for our service and been expanding our team to try to keep up.
To that end, I was temporarily moved to “Head of Software Development” and asked to “fill in” until we could find a world class CTO, which we know have Wei.
Before I get to the real content of this post, I would like to thank Peter Chu for his invaluable advice and support during my time leading leading our wonderful team; thank you!
So, after Wei came on board and got acclimated, we started discussing where I could be of the most use to the team.
We decided that what we need most was engineers. In particular, server side engineers, as so now I am finally back where I am happiest, making stuff 🙂
So as of this week, I’m starting off on a new adventure.
This time the vehicle is Golang. For those that don’t know what this is the official description is: “Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.”
For me, I find it harder to describe. It’s a language where you can write both functional code and object oriented code. It’s definitely a modern language, without the baggage of some languages and all the benefits of the current round of software engineering and computer science best practises. If nothing else, it is very very popular, it might be new but the more googling I do, the more I find very big companies using or switching to Go.
My first Golang post – Getting Started with Go
If you are interested in Go, first thing you need to know if that if you want to Google it, you need to use Golang instead of Go in order to get any meaningful results.
Second, the homepage has a fantastic tour that will take you through all the general concepts and it even includes some small exercises to help you learn.
If you are hooked after the tour (or before like I was), then you probably want to setup your development environment and then start writing some code.
If you are like me and like to focus on making great code then you will want quickly move on to Effective Go.
That would be more than an enough to get you started but after a week of Go, I would like to recommend a few more things that I found helpful to get up and going ASAP.
- You really need to bookmark GoDoc – You will be referring to this a lot. It’s the central location for Go library documentation
- Twelve Go Best Practices (Youtube) – While I am still cannot bring myself to agree with the “standard” of overly short variable names, this still has a lot of great content
- 10 things you (probably) don’t know about Go – A nice set of tips; I couldn’t follow all of this at the start of the week but by the end of the week it was very handy
- Things I Wish Someone Had Told Me About Golang – Another article that made a lot more sense once I had actually played with Go for a little while
I have spent most of my time so far doing TDD on backend code and these are the libraries that I have found useful:
- Testify – Assertions, Mocking, etc (Nice article explaining it)
- go-sqlmock – Mocking tool for the database/sql driver
These are tools I have been using:
- Mockery – Easy way to generate your mocks and keep them up to date
- Go Test Coverage – This is part of the standard distro but that doesn’t mean its not great!
- Go Imports – No more debate about coding style, this can either point out what needs fixing or fix it for you. I will probably add this as a pre-commit hook at some point
- Gofmt – The original formatter, it appears that it has been superseded by GoImports but its still worth mentioning
- Vet – Unlike goimports and gofmt which are only worried about style, this will check the code for anything suspicious, superfluous and even missing or incorrectly formatted comments
- Golint – Name says it all, its a linter for go
I have these all running in one script, e.g.
https://gist.github.com/3e767a1f5abe5999619b