News

Been curious about Golang?

Kelly Heller04/19/2017

My Authentic Golang “Go” Story.

I love code, but I approached Google’s open source programming language, Go, as a skeptic – a battle weary skeptic. Having reached the 10-year milestone as a software engineer, I’ve seen fads come and go. I’ve also been satisfied enough with my native language, C++, to not search for alternatives. However, after watching the mounting tide of Go adoption sweep up some of my most respected colleagues, I finally had to wade in and see for myself.

I love Go! Here’s why.

I like Go for what it has, but I LOVE Go for what it doesn’t have. Of course, it has everything you need – multi-paradigm programming idioms, type safety, data hiding, automated testing – here’s proof!

But, more importantly, it has nothing you don’t need. Go is opinionated. Normally, I wouldn’t like that, but it has all the same opinions I have! With Go, there’s no more arguing about…

Tabs versus spaces

Brace-indent style

Protected visibility

Compiler warning levels

Overloading

Implementation inheritance

Deep spaghetti inheritance

Composition versus inheritance

Exceptions & Throw/Catch versus return code

Telescoping constructors

Test harness contortions

Circular module dependencies

Go gives you the power to freely flex both your OO design chops and your functional programming prowess as you see fit. And yet it eradicates mind-numbing code review controversies at the root, by removing choice where we never really needed it.

Looking at Go is like looking at a codebase you just overhauled and realizing: “This project is much better now, and it came from a net removal of code.”

Go at Work

I recently joined 219 Design, a product engineering company that specializes in embedded/smart products. In our line of work (Qt GUI’s, medical devices, robotics, etc), the use of C and C++ is mandatory. Thankfully, we also consider it great fun. At 219, we’ve proved our mettle at wielding C and C++ with grace and discernment. It would seem unlikely that a trendy new language could lure us from our firm foundation. And yet, Go has managed to win our hearts and minds. We’ll always be steadfast C and C++ aficionados, but our successes now also include:

a Go auto-updater process with intelligent failure handling, targeting a headless IoT setting where prompting the user is impossible.

a Go RESTful web server for electronic medical data, built using lightweight Go packages including Negroni and Gorilla Mux.