Free cookie consent management tool by TermsFeed

Golang at Work from a Software Engineer’s Perspective

Golang at Work from a Software Engineer’s Perspective

Hi, it’s Claire! It’s been a little while since I wrote my last blog and I have now been with Initi8 for 6 months, learning more and more each day and continuing to love the tech space.

 

Recently, I got talking to one of my candidates, Stephen Salt, a Senior Software Engineer about working with Go. I have asked Stephen a few questions on Go and his experience in the tech industry. With more than 22 years in the sector his insights are definitely worth a read and even feature someone he knows with a Gopher tattoo!

 

1. What made you get into Golang?


'I was first introduced to Go by a former colleague about 5 or 6 years ago. Although the company I was working for at the time was primarily using .NET for most of its development, they were also pretty flexible when it came to teams being able to pick their own tech. My former colleague is a massive fan of Go (even going as far as having his very own Gopher tattoo (you know who you are!) and therefore when the opportunity came along for our team to work on a brand new greenfield microservice, his enthusiasm was sufficient to convince the rest of the team.

 

Golang Gopher Tattoo

 

After that initial exposure to the language, I didn't actually get the chance to use it again as part of my day job for about another 3 years or so, but when I spotted a suitable role local to me back at the end of 2019, the opportunity to get more commercial experience of Go was enough to lure me in.'

2. What is it you like about Golang?


'There are specific language features that I particularly like. Defer statements for example, provide a nice way of specifying "tidy-up logic" and placing it right next to the initial creation code, making it a lot easier for developers to see what's going on when maintaining existing code. Go's implementation of interfaces is also nice to work with, and requires a bit of a mental shift compared to how interfaces are used in Java or C#, for example. The obvious features that a lot of people call out with Go are those related to concurrency, so goroutines, channels and so on; these are excellent for helping you to reason about multiple things happening at once, and any necessary interaction between those concurrent processes.

It's not just about the features though, there's also the general "ethos" about the way Go is designed. It will be interesting to see if this changes over time, but so far I'd say there's been a strong drive to keep things simple, and not to bloat the standard library with things that can be solved simply by developers in a short function, for example. Whether or not you view this as a good thing is probably at least partly down to personal taste, but I do think it's beneficial for code to be consistent in general, and by having a strong opinion on these things, there's usually a fairly clear "Go way to do things”.'


3. What difference has Golang made to you as an Engineer to build microservices?


'I don't have a lot to compare this to really, since my transition to microservices has essentially come along at the same time as my transition to Go. However I would say that one of the main things when designing microservices is that you should view an individual service as being self-contained, and essentially rewritable/replaceable if needed. The drive to keep things simple in Go, that I mentioned above, helps with this mindset. Historically I've seen a lot of "custom frameworks" build up and get larger and larger over time in monoliths, whereas Go almost goes out of its way to discourage that kind of thinking.'

4. Why do you think more people are wanting to switch to Go?


'I think it's a very natural thing for people in the tech world to be interested in "the next big thing" and working on cutting edge stuff. For most of us in the real world though, that desire usually needs to be tempered with all the things you need if you're going to be betting your company's livelihood on relying on your software. Go is still relatively new compared to a lot of the widely used languages out there, but with it having the backing of Google, it's managed to carve its own niche over the last few years, and arguably fill the role of one of the cool kids on the block.

Fast forward to today, and there are now plenty of examples of it being used to power very large, complex, modern systems (Netflix, Uber, Twitch to name a few) and that provides people with a lot of confidence that it's an area worth investing time in. It takes time to properly skill up in anything, new languages included, and for anyone considering their career prospects or where they want to be in a few years' time, they're far more likely to opt for a choice that looks like it will offer more to them further down the road; whether that be in terms of compensation, variety of industry to work in, or whatever. Go is very well placed right now as being a sensible thing to invest in.'


5. Where do you see Go in 5 years’ time?


'My crystal ball is particularly foggy for this one! Having worked with .NET over the course of 20 years from way back when that was version 1.1, my natural instinct here would be to say that the standard library will grow over time to provide more functionality, and there will be syntactical changes made to try and speed up writing blocks of code that occur frequently. However, as I mentioned above, Go tends to fight very hard _not_ to do those kind of things!

I therefore wonder if it will gradually drift away from its current vision over time, or if it will stick steadfastly to what it's been doing already. I suspect that will ultimately come down to a small handful of people at Google, and what they choose to do with their careers. For now, Go fulfils the requirements of a lot of software in the cloud-native era quite nicely, so I expect it to continue to do well until such time as there's some fundamental shift, such as... ooh I don't know... quantum computing becoming viable or something.'


6. Is there anything else you would like to say about Go?


'If you're considering starting out on a career in software engineering, or transitioning across to a new language, then definitely consider giving Go a look. Think about what kind of problems you like solving; Go will often be used primarily for backend systems that are processing and ferrying around data, as well as exposing APIs to other services/languages for them to call. If that sounds like the kind of thing you're interested in, then maybe Go is the right language for you.'
 

Thanks so much to Stephen for taking the time to give his point of view! It’s been a great insight into how someone using Go daily sees things now and in the future.

 

If you are looking for your next opportunity in Go or if you would like to share your opinions on Go / IT and want to be involved in the next blog post, please contact me via claire@initi8recruitment.com.

 

For more industry insights and updates on new blog posts, follow us over on LinkedIn and Twitter.

Author

Claire

Date

27 April 2022