Sep 16, 2016

First Sprint with Go and Docker

In my previous September 2016 Goals post I mentioned that I finally had the chance to start working professionally with Go and Docker, well, how did it Go?

The truth is that just like with any other new thing you start learning, it takes time to get used to and there’s a learning curve. It’s frustrating and encouraging at the same time because you have the solution in your head but putting it in words it’s more difficult. The best analogy I can think of this experience would be ordering food in a foreign country where the language you speak is not spoken by the locals. Simple as that. You’re hungry, you know what you want to eat but you can’t express it in proper words, you need to use your hands, maybe draw a couple of things, ask for help, etcetera, etcetera, and all of that takes time.

Well, that’s how it went.

  • Preparing my Dockerfiles for statically building a go binary was easy, until I started having issues with imagick, which so far I haven’t been able to figure out.
  • Making sure everything was 100% covered, again took me some time, not because the packages testing and net/http/httptest are difficult to use but more because I had to properly write the code in a way it allowed interfaces so I could mock the things I needed to to properly test everything.

In the end, this new project is still a work in progress and it is not ready for production, I believe I will need at least another sprint to finally have it ready, and the truth is that I haven’t had enough time to consider the production-specific problems, like deployment, monitoring, logging and whatnot.

In all honesty I’m enjoying programming, a lot, in Go and using Docker is a delight. I know everything is taking longer than expected, but that’s the way it is when building and using something new. However I know one thing for sure: this sprint is going be much more amazing.