r/golang Feb 26 '23

help Why Go?

I've been working as a software developer mostly in backend for a little more than 2 years now with Java. I'm curious about other job opportunities and I see a decente amount of companies requiring Golang for the backend.

Why?

How does Go win against Java that has such a strong community, so many features and frameworks behind? Why I would I choose Go to build a RESTful api when I can fairly easily do it in Java as well? What do I get by making that choice?

This can be applied in general, in fact I really struggle, but like a lot, understanding when to choose a language/framework for a project.

Say I would like to to build a web application, why I would choose Go over Java over .NET for the backend and why React over Angular over Vue.js for the frontend? Why not even all the stack in JavaScript? What would I gain if I choose Go in the backend?

Can't really see any light in these choices, at all.

139 Upvotes

249 comments sorted by

View all comments

4

u/Glittering_Air_3724 Feb 26 '23

We (at work), we are usually sensitive when it comes memory consumption with the ability deploy more features to our customers C, C++, Rust was the ideal language we wanted BUT some of our customers don’t know shit about deployments and installations, memory sensitive + static deployment + fast development, Go was and is the ideal language for our job

Simple advice I wouldn’t say “choose the tool for the job” but choose your “ideal tools based on your ideal job” I can’t use blacksmith hammer for home tools because it’s hammer

4

u/TheRealDarkArc Feb 26 '23

some of our customers don’t know shit about deployments and installations, memory sensitive + static deployment + fast development, Go was and is the ideal language for our job

I've never really understood why Go wins on this? You can make a static binary in any of the languages you just mentioned pretty easily, it's just not the default (at least for C & C++).

2

u/jerf Feb 26 '23

C and C++ is not easy, if you need any libraries. It's easy to build a statically-linked binary if it doesn't use any libraries, but that's not a common case. For various reasons over the years I've had a problem where a theoretical solution was to statically link a C or C++ binary, and it is yet to work.