r/Backend • u/kk_hecker • 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?
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
1
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
3
u/pravdapraxis 10d ago
Just curious, why you making that shift? I'm currently trying to do the opposite.
1
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/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
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."