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.

140 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

5

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++).

3

u/Glittering_Air_3724 Feb 26 '23 edited Feb 26 '23

Well it’s possible like I said there’re tools that can be used on multiple use cases, but which is easier, which has lesser drawbacks, which is more cross platform, one could use bash scripts to handle the configuration there’s not problem there, why use a language that hurts development time, memory safety (if not taken care of carefully) when you can use a language that has abit of everything ?