DEV Community

Cover image for Learn a New Language: Ruby or Go?
Marc Nevin
Marc Nevin

Posted on

Learn a New Language: Ruby or Go?

I'm lucky enough that I can take my time on lockdown to build some backlogged projects, draft some posts and develop some new skills, one thing I've been thinking about is learning some core concepts of a new language.

After looking at what I enjoy, what's popular and what's actually used, I've narrowed it down to Ruby and Go,

The case for Ruby

So many tools I love to use are built with Ruby and loads of great websites are written in Rails. Makes me think there's some real utility there I could start leveraging in my own solutions, not to mention Rails opens a new avenue for webdev!

The only hold-ups I have, it's not got a popular reputation locally, there are a few product teams that use it and talk regularly about how there's not many jobs in it and that they hope to migrate to something else...

The case for Go

Go has a certain appeal to me - most of my stack is Python-based with some JavaScript, using AWS; I used to work in a C/C++ stack and the promises of efficiency, combing my old domain with my current and "easy" integration to my current stack make it hard to not notice.

And again a lot of great tools and services are being built in it or things that were once Python (still my fav) are being ported to Go now, it seems a little less broad spectrum of services built with it?

Decisions, decisions

I'm leaning towards Go, but want some input, I know very few people who actively use either to draw from, anything I've found normally has a strong agenda, so I want to ask here, see what people think and crowdsource some opinions!

Which would you recommend starting with and why?

or if you've any strong experiences working on either, think one is easier to learn etc etc

Latest comments (63)

Collapse
 
antoniomarcosferreira profile image
Antonio Marcos Ferreira • Edited

I've been a Ruby on Rails developer for over 10 years, my suggestion is Golang for the backend and uses JavaScript for the frontend. Golang is simpler and you can process more information at a low cost for your structure.
If you choose Ruby on Rails, you will have trouble climbing and can prepare your pocket. And it will have a great monolithic.
You can start with a Go API framework like Fiber and NextJs for your front end, this stack is good for most modern web applications.

Collapse
 
thebayliscode profile image
ian-bayis

No language truly dies. Pick the language that can integrate best with the app that you are working on.

Collapse
 
m_nevin profile image
Marc Nevin

Interesting... I kinda filtered to the two based on some criteria I briefly covered above but mostly as they are the two most promising ones I identified that fit nicely into my current stack, with a degree of deviation.

Some of the languages/tools you mentioned though... having briefly done Android and having a load of friends in the space, it's not something I'm going to jump at soon! TS is... fine, I think I remember enough from some unpleasant Angular projects that I think I'd be able to pick it back up quick enough!

Rust is interesting... it's something I've considered in the past but if you start looking at trends, like with Go and Ruby, it's tough to justify using that same measuring stick!

On Web Assembly, definitely think it's going to be big; based on how these things normally go I imagine we'll abstract away from it though (maybe Blazor but signals aren't there for it yet )

Collapse
 
m_nevin profile image
Marc Nevin

Fair point, it seems like there'll be more of a learning curve in what people have said here!

 
brownio profile image
Antonio Djigo

For Rails, there is:

  • Better CLI & standardised framework
  • Code practices and design patterns are more standardised
  • Bigger community = More Q&A around google to fix your problems
  • More guides and courses to learn everything properly

I'm not saying Go does not have this, but, for sure these points are not as good as in Rails.

Collapse
 
juancarlospaco profile image
Juan Carlos

If I can only choose between Ruby and Go
I choose Crystal.

Collapse
 
travislaborde profile image
travislaborde

I had exactly the same question recently. But with a different background (basic -> vb -> vb.net -> c#).

I learned some Go for Hugo and really liked it. Then I learned some Ruby (not Rails) just for "fun" because I kept hearing how "happy" it makes everyone :) I have to admit it has some charm.

I think I'm going to spend more time with Ruby than Go, at least for now. Sinatra in particular and the Rack web setup make it very appealing. I didn't see anything like that for Go. Maybe by the time I get back to it, that'll be there too :)

Collapse
 
m_nevin profile image
Marc Nevin

Pretty good reasoning there!

Totally right about how everyone says how happy Ruby makes them... it might have factored into how I landed with it as one of the two to pick between,

Think I'm leaning to trying Go first and building something but tools like Rails and Sinatra mean I will be giving Ruby a go too afterwards

Collapse
 
maxwellk profile image
Keith Maxwell

I'd say Go, for two reasons:

  1. I want more experience with static typing

  2. I've been talking to a local recruiter recently and I think Go experience would open more doors for me personally; this is only an anecdote from one little market (Belfast, NI)

Collapse
 
m_nevin profile image
Marc Nevin

A very appropriate little market for me - also live in Belfast!

Think both would grow my skills, just by expanding how I approach designing solutions,

But you're right, looking around the market here, Go would serve better than Ruby!

Collapse
 
andyhaskell profile image
Andy Haskell • Edited

I've been a Gopher since 2013 and definitely really like the language for making concurrency easy, its static types, similarity to pretty much any other language, small list of OOP vocabulary, big standard library (I made my personal logo in Go's image package without a single go get!), and supportive community.

I don't know a ton of Ruby, however both languages excel in web development with Rails and Gorilla/Buffalo, both have enormous communities, and both make really readable code for different reasons. Either way you can't go wrong!

Collapse
 
anshbansal profile image
Aseem Bansal

The part of norvig.com/21-days.html with "Learn at least a half dozen programming languages" might be relevant.
Rails allows you to have an idea of web dev.
Go is being used by for parallel programming.

Which seems more relevant to you? These could give you new perspectives and give you a head way on different type of job profiles. Are you doing this for job? Are you doing this for a new perspective on how software can be built? The choice depends on these answers

Collapse
 
m_nevin profile image
Marc Nevin

New perspectives mostly: learning something that can expand how I think when creating solutions, it's why my preference was leaning to Go, the promise of easier parallel processing seems very enticing!

Collapse
 
developius profile image
Finnian Anderson

Yeah, I suppose I don't have much experience with distributed systems and hadn't considered exception handling.

For ActiveRecord (think model validation), I've used the pattern of appending to a list of errors and then doing @errors.any? to determine whether a call was successful or not - quite liked that. It kind of overkill if you want to bail at the first error though, since errors.count will always be 1.

That's a great post, thanks!

Collapse
 
developius profile image
Finnian Anderson

I would say it depends on what you may like to do in the future.

I’ve been using Rails for 3 years now and imo, nothing compares to it for web dev. I won’t be changing backend stacks for a while. It’s just lovely.
These are points about Rails though, not Ruby. I have no numbers on this, but I expect a vast majority of Ruby code currently running is because of Rails. So, unless you’re wanting to do web dev, maybe something with broader horizons is a better bet.

I tried learning Go a year or so ago and I did enjoy it. However, I intensely dislike the verbose-ness of error handling - leaving this code all over the place just annoys me:

if err != nil {
    return err
}

I prefer catching exceptions to returning errors.

Go would also be a good bet if you’re wanting to get involved in any OSS projects as a lot of the larger ones (Docker, k8s etc etc) are written in Golang. Go is definitely something I’d like to spend more time learning as I think it’s a good investment for the future.

Let us know what you pick and how you get on!

Collapse
 
m_nevin profile image
Marc Nevin

Fair points! Nice to hear someone who's tried both!

I've heard nothing but wonders about Rails but I'm not sure its something I'll end up fitting into my stack any time soon - Ruby itself still has a great promise though

I'm coming round to thinking it's probably best if I try both and see how my personal preference plays but I think I'm mostly set on starting with Go, the promise of big OSS projects are tipping me a little,

Then after a while with Go, moving to try Ruby on a similar problem and some Rails then next time I'm doing some WebDev!

Collapse
 
benjioe profile image
Benjioe

Why do you want to learn a new language ?

Collapse
 
priom profile image
Priom Chowdhury

I would learn Go and/or Rust if you come from C/C++ background. Similar performance and modern code. I wouldn't really learn Ruby in 2020.

Collapse
 
hamiljs profile image
Justin

I love both languages. I've been using Ruby since '08 and Go since '18. They are both intuitive and awesome for their own specific purposes. Ruby was made for your everyday development happiness. For me, it succeeds and I write most things in Ruby. However, if I have a need for speed or an easily portable executable, I reach for Go.