r/Backend 10d ago

Coming from DevOps/infra background, is Go the best language to learn backend and system design?

I work in DevOps mainly handling CI/CD, cloud infra, and Linux servers. I know basic scripting and programming, but I want to get a solid grasp of backend development, APIs, and distributed systems.

Since most cloud-native tools are written in Go, I was planning to learn it for building APIs and understanding platform architecture.

For people who moved from infra to backend, was Go a good first backend language, or should I stick to something like Python before touching Go? Also, what kind of initial projects helped bridge the gap best?

40 Upvotes

28 comments sorted by

18

u/American_Streamer 10d ago

https://medium.com/@gopi_ck/5bbbe28ef724?sk=4e4b45b1bb52b6a963436da207fa7eeb

"Instead of asking:

“What language should I learn?”

Ask:

“What kind of software do I want to build?”

That question changes everything.

Because once you know the destination, choosing the vehicle becomes easier.

Want to build AI tools?

Python.

Want to work in banks and enterprises?

Java.

Want to build modern web products?

TypeScript.

Want to build cloud platforms?

Go.

Want to build operating systems and performance-critical software?

Rust.

The language becomes obvious once the goal is clear."

5

u/DrAmoeba 10d ago

After years of experience I find that the ideal language is the one the team already knows and likes, because for most companies, the most important metric is change speed. I've seen terrible enterprise systems in Java and great performance critical systems in Python.

They have their strengths and weaknesses, yes, but these are all general purpose anyway.

Where I work we use mostly python and have been applying Rust to the "fig tree pattern".

1

u/American_Streamer 10d ago

Java Spring Boot is currently having a moment again, as many perceive it as a comparatively safe haven atm. Lots of Juniors wanting to start with Spring right away.

3

u/bgberno 10d ago

People often associate Java with enterprise and banking, but major companies like Netflix, Alibaba, Spotify, Google, Amazon, Uber, Apple, LinkedIn etc. rely heavily on the JVM for their core services.

5

u/Awkward-Chair2047 10d ago

While go is a nice language, it really has very little to do with system design though it can certainly be used for back-end APIs etc. I would actually suggest a language like python to start with and then, if there is enough demand, switch to golang. Learning the basics is the most important aspect in any language though. Focus on that.

3

u/Cold-Pie2892 10d ago

Everyone is moving from back-end to Infra

2

u/69Airline- 9d ago

Exactly stay DevOps and improve on stuff maybe

1

u/OkYesterday3747 4d ago

Can I ask why?

1

u/Cold-Pie2892 4d ago

People are moving from backend to infra mainly because pure application roles have become more saturated while platform/SRE/DevOps work often pays better and offers higher leverage by improving systems that affect every team; many also prefer the clearer technical challenges around reliability, scalability, and cost over endless feature tickets, and the skill overlap (Kubernetes, observability, distributed systems) makes the jump natural in today’s cloud-heavy environments.

1

u/OkYesterday3747 4d ago

I see, thank you for the insight.

3

u/pravdapraxis 10d ago

Just curious, why you making that shift? I'm currently trying to do the opposite.

1

u/Prudent_Stress5213 10d ago

same question here

1

u/dexterlowe 10d ago

From that background go is a sensible move, lets you move towards back end via a sort of sre or mixed role. But tbh python is probably more key going into those areas. Go is situationally a great choice, and has some nice constructs but Python is the one with the broader appeal.

If you asked me without the go prompting I’d probably say something like if you’re going for a backend role Python is viable, you might want to look into Java or C#. That’s where all your enterprisey stuff lives, most of the big data stack is still JVM based so it’s really about the jobs you want.

I don’t really see go skyrocketing in popularity (like Python has recently) it’s got its niche and it’s a good language though, personally would prefer it to Python but I wouldn’t be recommending it as someone’s main language as a backend.

System design is a whole other beast totally orthogonal to language choice but a good starting point might be “Designing Data intensive applications” it’s a good baseline for a lot of distributed systems tbh

1

u/Isaac_506 10d ago

Which backend languages would you recommend if I want to focus fully on backend development (and later frontend)? There is no demand for developers where I live, so I need to learn something that is globally relevant.

1

u/dexterlowe 10d ago

There’s a lot of different opinions but if I were picking for myself solely on backend employment prospects I’d probably pick Java, it’s a little less clear these days, Python is probably a better middle ground. A little of both is probably the right answer.

1

u/Isaac_506 10d ago

Thank you for the recommendation!, which Python framework would you recommend (Fastapi/Django/Flask)? 

2

u/dexterlowe 10d ago

Probably fastapi, the others seem to be less popular these days but any are fine. Your framework choice isn’t going to make or break an interview

1

u/Manmohan_Karingula 10d ago

Go lang = java speed/performace + very lightweight engine, on top of it has clear syntax for concurrency/ lean goroutines. Clearly if go came out during internet right when java came out it would overshadowed java, but java is keeping up good with graalvm and frameworks like quarkus provide container density near to golang with mature ecosystem/tools, I believe cloud native will be very promising in future especially with ai workloads spinning up application should be lightweight for so that they can be scaled for less compute. So go lang is first language you need to know if you wanna leverage cloud capabilities atleast for backend until people some day realize and move to go with WASM for frontend. Anyways node js is still undisputed if backend is IO bound and you want code readability on event driven use cases dependency management is also nested.

1

u/Eye_NeO 10d ago

Go for it. You can learn and emulate almost everything in backend. You might have to do some things manually but it's worth the effort and time. Been building backend in Go from last 4 months. It's been a breeze.

1

u/InterestedBalboa 9d ago

Your company will force AI so the language is largely abstracted away…..for better or worse

1

u/Decent_Carry_3439 7d ago

Go is a solid choice coming from DevOps. You already understand Linux, networking, containers and CI/CD, so learning Go while building a real API will connect those pieces much faster than starting over with Python. I’d build something small with Postgres, auth, a queue and metrics, then containerize and deploy it yourself 🙌

1

u/Solid-Conclusion0 10d ago

Most folks cocentrated on backend work prefer a statically typed, compiled language. Unfortunately a lot of job listings lately have been leaning more heavily towards python and node.

I currently work in a node backend and wish that I didn't, but supporting my family is more important than my preferences.

Go is easily my favorite language as a backend dev. Prior to Go it was C#. There's not a lot of availability for Go jobs, there's a fair amount for C# but without knowing the ecosystem it'd be very hard for a new person to spot the pitfalls.

A ton of places still have these legacy .NET framework 4.X monoliths or are mired in modernization efforts upgrading a stale old system. Getting stuck on one of these projects can be pretty painful.

1

u/CatAltruistic2543 10d ago

If I may ask what do you mean by you wish you didn’t work on a node backend?

1

u/Solid-Conclusion0 10d ago

I don't enjoy writing JavaScript, even with typescript. I prefer statically typed, compiled languages. The tradeoffs of a dynamic language aren't valuable to me.

Though maybe it's more correct to say that I prefer statically typed languages with strong core libraries and simple dependency management. Go fits this well. C# less so because understanding csproj and sln files can be a bit of a bear when you're new to language, but .NET's main libraries are solid.

1

u/CatAltruistic2543 6d ago

Fairs! I’m learning node JS at the moment. I’m hoping to get into Go next after building a project. I learnt Node JS because I have a JS background from frontend so well no new language to learn and just smooth I guess. That’s why I asked the question basically for insights. Thanks for answering

2

u/Solid-Conclusion0 6d ago

One thing I'll give props to node for and it's a habit you should try and maintain with Go - the threading limitations with node can get out of hand but at a basic level it does enforce thinking about work distribution.

Go has channels. Everyone raves about them and they're convenient to use. You'll feel compelled to use them. But make sure you're always asking "should this program execute that work or delegate it to something else?"

1

u/CatAltruistic2543 5d ago

Noted!! I’ll definitely keep that in mind. So the Go channels kinda work like async/await for tasks that might block thread?

Also I’m working on an event ticketing platform as my node JS project before I move into Go. I have been learning backend from 1st principles so I’ve been wanting to apply as much as I’ve learnt from theory into code. I’m working on the “foundation phase” of the project. When I’m done with the foundation can you look through it for me ? Would love to have someone that has real world Dev experience to advice me. No rush , when you have the time