DEV Community

Cover image for Why You Should Learn Go in 2025

Why You Should Learn Go in 2025

Oleg Dubovoi on December 25, 2024

Greetings Dev.to community and Merry Christmas! ❤️ Today I'd like to interest and motivate you in learning Go language in 2025. The tech world is...
Collapse
 
fockewulf44 profile image
Tim

No thank you, C# is much better. I was thinking to switch to Go but found out that it has no generics and no inheritance. In terms of polymorphism you can use only interface, that is it. I just checked what it would take to write same project on Go and found out that it would much more code. Additionally, I love linq, and Go doesn't have it. C# is the best :)

Collapse
 
code42cate profile image
Jonas Scholz

weird take, no language is simply better than another. There are just use cases that go/c# is better for. Good luck building infrastructure stuff in C# :D

Collapse
 
fockewulf44 profile image
Tim

If you ever worked on any project bigger that primitive CRUD Api, you would understand what I am talking about.

Thread Thread
 
code42cate profile image
Jonas Scholz

I don’t understand why you feel the need to be so rude/defensive. I just said that it’s weird to say that a language is better than another without naming a use case. Of course there are projects where you want a language that is object oriented. You should never limit yourself to only one language, pick what’s right for the job. And for the record, I worked as a freelancer on projects with millions of LoC over the last 8 years and run my own cloud hosting company :D

Thread Thread
 
fockewulf44 profile image
Tim • Edited

Sorry if it was rude, but it was reply to "weird take". Of course there is no perfect programming language. But if I mentioned inheritance and generics, it supposes that I was talking about writing software that has a business logic or any other logic. I agree that each programming language has its strong sides like Assembler if you worry about size. But who is going to learn Assembler today? It is all about the combination of factors, such as performance, cross-platform abilities, language structure, platforms, community, etc. While Go has gained popularity for its infrastructure-building and blockchain capabilities, it hasn't become the most popular language overall and likely won't. It serves its niche well, but that's about it. I can tell you even more. As a hobby I write some code for microcontrollers, and I prefer C++ over C. Why? Because I agree with Robert Martin with his statements in his book Clean Architecture regarding firmware. Software should remain software. Developers often have to rewrite the same logic repeatedly. When you write code, you aim to reuse it rather than constantly copy-pasting. Over my 17+ years of experience, I've frequently observed this issue. I'm not surprised you've encountered millions of lines of code over the last 8 years, as it's a common consequence of using languages like Go, and that was precisely my point :)

Thread Thread
 
pgmbam profile image
Peter Moĺloy

Just throwing a few cents into the convo. Not sure experience is a true measure of skill and capability to determine the value of a code base written in a particular language. If I am investing in a large software project, meaning $10M or more I do not start out by picking a single language before I understand the domains and their roadmaps. These include both business and technology dependencies, impacts and relationships as well as people and processes. The principles that determine language selection become important when a language can be evaluated for its cost/benefit in core architectural decision making and tradeoffs for security, scalability, maintainability, deliverability, reliability, performance and cost weighted against the use case unique value propositions. I know this sounds academic but decisions about the use of languages have many drivers with certain weighting towards these principles depending on circumstances. In the businesses I have participated in assessment of languages is usually made early in the SDLC and driven by a specific purpose. A lot of the breakdown from systems engineering and the micro evolution of services has aimed at reducing complexity and cost to scale. That scale is driven by a increased need to network processes where teams are enabled and combined effectively with the most relevant tools and language for the job. That said once a large multi team product has a steadily increasing revenue stream it is a high risk decision to change a language. It seems that over the past 10 years Go has found a certain niche as a systems language with strong benefits in orchestrating scalable distributed networks and systems such as Kubernetes and Docker. I believe that Java still remains the predominate business language while python has a clear home in the data science space. All this said I did spend a fair number of years using C# and enjoyed it very much. I think I have pretty much used many of the languages out there at one stage or another on everything from researching the language to implementing on very large scale systems. For me personally I do find Go very rewarding after the hurdle of initially understanding how to architect and structure your own patterns. The key to Go is to actually use it more on complex distributed systems where sharing and scaling asynchronous processes is extremely important across networks. This is where its hot deployment and communication channeling excel. Not many languages provide the same set of functional programming capabilities for this purpose. Anyway hope this provides another perspective to the conversation. Cheers.

Thread Thread
 
code42cate profile image
Jonas Scholz

"The key to Go is to actually use it more on complex distributed systems where sharing and scaling asynchronous processes is extremely important across networks" Yes, 100% agree!

Collapse
 
omnikron13 profile image
Joey Sabey

Go has had generics for at least a couple of years now, and while it doesn't have inheritance in a traditional sense it does have composition features that can be used to achieve a lot of the same results. Might be worth checking it out again as it sounds like you've only seen an older version.

Collapse
 
fockewulf44 profile image
Tim

I see it was added in 1.18 version on March 15, 2022. But still no inheritance. Composition and inheritance are vastly different things. I heavily use template design pattern in a base class + inheritance. With composition it is just not possible to do. With composition every time when you need to overload only particular methods and preserve some ALREADY written methods you will have to simply create a good number of new objects. Go very well fits some small projects but I wouldn't use it for projects that I want to scale in future. It doesn't mean you cannot use Go. Of course, you can but you have to sacrifice something. Like writing backend on python where you are going to sacrifice performance since it is dynamic type language.

Collapse
 
otumianempire profile image
Michael Otu

😂

Collapse
 
leon_katzke profile image
Leon Katzke

Even microsoft uses Go for some use cases.

Choose a tool best suited for the problem

Collapse
 
dyfet profile image
David Sugar • Edited

Go has a nice mix of simplicity (including dead-simple platform cross-compiling) and safety which makes it very nice for those things that do fit well with it, and many kinds of applications and services do. There is a lot of overlap with C# dotnet, and some complimentary uses, but C# (and C++) is much better at certain kinds of applications, while go is most often much simpler and easier to use for those they clearly do overlap. As you might expect, writing http and grpc backends is dead simple in go, but alas, writing componentized mutable state driven telephony, or even classic tcp session applications, not as much so.

Collapse
 
taqmuraz profile image
Taqmuraz

Article is good, though I think, if Golang is really good, Golang programmers should keep that secret and benefit themselves – have no competition, well paid job, efficient and easy language so job must be fun 😉
Especially for startups, where having more efficient language means having advantage over competitors 🤔

Collapse
 
lssandes profile image
leonsandes

Golang is top language in web3 technologies. Your selection is very good
Image description

Collapse
 
georgewl profile image
George WL • Edited

Web3 is such a weird misnomer, it's more like Web 1.0 but sideways

Collapse
 
lssandes profile image
leonsandes

What do you mean?

Thread Thread
 
georgewl profile image
George WL • Edited

It's not an improvement, in any way, and in many ways it's worse than 1.0, plain and simple

Collapse
 
lssandes profile image
leonsandes

Golang is popular language in Blockchain Development.
Backend using Golang provides very high performance i think.
I recommend Golang in Backend development.

Collapse
 
lssandes profile image
leonsandes

Go's package management has significantly improved. I understand your mind.
The go mod command automatically handles dependency resolution i think.

Collapse
 
574n13y profile image
Vivesh

Thanks for sharing, Lets GO with Go...

Collapse
 
empiree profile image
Oleg Dubovoi

What do you think about Golang?

Collapse
 
aaron_smith_676bee7262cfb profile image
Aaron Smith

I used go for a social media website. The lack of generics bugs me so much. There's not even a good, generic way to access databases with a.variable number of query parameters. It's very friendly at first, and very anti-growth long-term. I don't recommend the language. As a former Google employee, I can tell you what the problem is: Google engineers thinking they're smarter than everyone else. They're not.

Collapse
 
iyobo profile image
Iyobo Eki • Edited

Meh. I prefer Typescript/Deno2 personally. Being able to speak the same language all through our your stack leads to a maintenance synergy that not many people who have not experienced it can understand.

Add in support for deep Generics, inheritance, exponentially better error handling and there is nothing to compare.

If your backend is more IO heavy (and most are), computational "performance" is a mute point.

Collapse
 
georgewl profile image
George WL

I do feel like it was the "language of the moment" a bit ago then kinda faded away

Collapse
 
ssheffk profile image
Serdar Shefketov

Hey nice post, there's my learning project with Go go-microservices :)

Collapse
 
ross023 profile image
ross

Go as first language?