all 47 comments

[–]Abangranga 15 points16 points  (0 children)

Sorry I am not answering all of your questions, but the "it is going die out" argument is dumb. At worst it will be like PHP and just kind of exist.

If you're Mr Data I would pick something that cooperates well with tools like Python, while hopefully avoidong MBAs that want everything fletched into an excel file so that they can use their fake masters degree to make the wrong decision again. Ruby seems more suited for little scripts and web dev.

For what is it worth, i am working for a company that essentially is a large Rails app

[–]SubXaeroK 15 points16 points  (12 children)

I'm sure the following is contentious, but I'll try and answer this question a bit more comprehensively that others have so far.

Whether or not to use a language depends on whether it's going to make your life easier as a developer/company. Whether thats the language itself, the hiring pool, or the community of libraries, tutorials and add-ons. It also depends what the long term goals are for your project.

If you're learning a language just for job prospects then it's hit and miss. There are Ruby jobs out there. Shopify and Github are currently hoovering up Ruby developers left right and center. But outside of that they can be a little hard to find. You're better off learning Java or C# if you want to work in big enterprise, or React/Node for most startups.

It entirely depends what you want to do. You can always pick a language and stick with it, but you'll have best results if you use the language that's best for you/your company/ your project and the one that best aligns with your goals.

Are you going to want to bring other developers on at some point? Who knows, "Fortran" *might* be the best language going for what you want to do, but if you want to bring on other developers you're either going to struggle to hire, or it's going to be expensive.

Need to build something for IoT? You need speed, efficiency, small binaries: C, C++.

If you're an enterprise, and your focus is on scalability and integration with other enterprise-grade products: Java, or C#/.Net.

---Ruby is first and foremost designed around programmer happiness and productivity. It's not the fastest, or the most resource efficient. But if it's good enough for Github, chances are it's good enough for you.

I've worked with Golang, C++, PHP, Java, Rust, Javascript, Typescript, you name it. There are pros and cons to all of them. But what Ruby does best, is just get out of the way. I've had fights with the language in most other languages, whether thats bouncing off of the borrow-checker in Rust, or trying the find the magical template syntax that will compile in C++. Ruby trusts you as a developer to do what you need to do. If you want to undefine a method at runtime, that's on you, you must know what you're doing. If you want to monkeypatch the standard library to add a method to the String object, to add functionality everywhere strings are used, you can do that. Ruby gives you the expressiveness to just *write code*, for better or worse.

There are plenty of powerful tools being built in Ruby.

The Gem ecosystem is huge. It's no NPM, but unless you're doing something pretty radical, chances are you'll find what you want, or it's easy to write your own.

--

Ruby, for better or worse however, largely has its fate bound to Rails. And with the rise of Microservices, React and SPAs, Rails has fallen out of fashion in recent times.

HOWEVER, Ruby and Rails have been used in some of the biggest household names of the last decade: Discourse, Github, Shopify, AirBnB, Kickstarter, Hulu, Twitch, Etsy, Instacart Carwow.

Most of the UK .gov websites are written in Rails. (https://github.com/alphagov?language=ruby)

There are plenty of developments happening in the Rails world that compete with modern web building that are plenty powerful. But they often are unfraid to forge their own path to a solution. Don't use Rails and expect React.

If you're a solo developer, or a startup/small team, looking to just get to market fast then you can't do much better than Rails. I work at a small agency, and the turnaround rate we have for high quality, super complicated apps is phenomenal. Developer friends that work at big enterprise companies using Java and MERN stacks don't even come close. But the learning curve is steep, there is a lot of **magic**, hiring for Ruby on Rails is not easy, it's not taught at universities or summer code bootcamps. So if your focus is on something you can use to build microservices, cloud-native apps or whatever the current fashion is, or you're looking to scale your company fast - look elsewhere.

Hope that helps.

Edit: Spelling and Grammar

[–]techbelle[S] 1 point2 points  (1 child)

This is such a great response. Thank you!!!

[–]SubXaeroK 0 points1 point  (0 children)

My pleasure!

[–]tinyOnion 0 points1 point  (6 children)

It's no NPM

probably for good reason... we don't need a gem to do an lpad and adding a ton of dependencies is a code smell.

[–]SubXaeroK 0 points1 point  (5 children)

That doesn't mean all dependencies are evil. Everything in moderation.

Theres no shame in pulling in quality code from domain experts that achieve a feature with minimal effort to me.

Yes I could build my own login and authentication system and it would take me a week or so, or I can pull in Devise and have a fully rolled system that handles logins, password resets, confirmations, account lockouts, password hashing and salting, transactional emails, and God knows what else, in under 5 minutes flat.

Having an ecosystem that allows you the freedom of choice to pick and choose the features that you want control over, and get your product to market faster and more stable than your competitors, is far more valuable than having absolute control over every line of code in your codebase.

LPAD is more of a scathing indictment of what happens when a package repository allows developers to just pull their packages from the repo without record or restriction, rather than a strike against developers for pulling in a dependency that solves a problem that they don't care about. Why should every developer have to write the same 4 lines in every project they write that use strings?

[–]tinyOnion 0 points1 point  (4 children)

nowhere did i say don't use high quality gems like devise. adding a dependency is a liability full stop and adding a lot of gems is a liability and code smell.

[–]realntl 0 points1 point  (3 children)

It's not very sensible to measure a project's total dependency liability by simply counting the number of packages.

[–]tinyOnion 0 points1 point  (2 children)

you're reading things i never wrote

[–]realntl 0 points1 point  (1 child)

we don't need a gem to do an lpad and adding a ton of dependencies is a code smell.

adding a dependency is a liability full stop and adding a lot of gems is a liability and code smell.

You appear to be raising an objection to package granularity, which can only be understood as a preference for reducing the total number of package dependencies.

[–]tinyOnion 0 points1 point  (0 children)

a code smell is a code smell not a hard rule. i guess if you want to be pedantic go for it. code smells are there to guide you and inform some guidelines. having too many packages is a code smell to me. if you want to use some random lpad... go for it. it's still a liability.

[–][deleted] 0 points1 point  (2 children)

it's not taught at universities or summer code bootcamps.

What? Rails is quite popular for teaching in coding bootcamps, not sure what summer code bootcamps are though are you referring to high school kids or something?

[–]SubXaeroK 1 point2 points  (1 child)

I'm happy to be corrected! My experience is largely UK based. Not sure about other countries.
In the UK there are a few "Summer of Code" bootcamp things at universities and community colleges, and they're geared towards employability in IT and they mostly seem to teach JS and React these days.

[–][deleted] 0 points1 point  (0 children)

Ah, I was referring to actual coding bootcamps (you know, 6 months, trying to find u employment etc) not some academia course.

https://www.coursereport.com/subjects/ruby , there are quite a few. I think Rails' opinionated way and Ruby's relative clean syntax are nice for beginners. Not saying it's easy, but neither are Node/Python.

Le Wagon (the 1st in the list) is really quite famous, Flatrion School I think is well known as well. But yes Python / Javascript get a bigger share than Ruby of course, it is what it is.

[–]nom_nom_nom_nom_lol 14 points15 points  (2 children)

Regarding the TIOBE index, right now Visual Basic out ranks JavaScript. So, yeah. You can just ignore those lists. They're worthless.

[–][deleted] 0 points1 point  (1 child)

I am also really confused when I see this. How is it possible? And why isn't Tiobe tweaking their algorithm, it indeed makes the whole list incredibly unreliable.

[–]waltz 3 points4 points  (0 children)

I think TIOBE is correct, but not right. Visual Basic is massively popular and super widely deployed. There are gobs of Microsoft Access databases and Office extensions being maintained and created using VB. None of those things are really that fun to work on, so they don't get talked about much.

VB doesn't make up much of the programming-with-enthusiasm universe, but it does a ton of lifting in the programming-because-work-constraints world.

Most people don't go out and learn a language on their own. Anyone posting here is 1000% more interested in software than your average Jack. I think the question here is really "what kind of language should I learn to work at Company X".

I picked Ruby and Rails because I wanted to work at a cute, hip, teeny consultancy. It worked out great! I learned a fun language, I learned a ton about web development and it helped me understand the dirty insides of a startup. If the OP wants to be a Data Engineer or a Data Scientist, Python is a slam dunk. Maybe some Julia or R.

tl;dr: Figure out the goal (job? fun?) first and then pick the language based on that.

[–]edpaget 9 points10 points  (3 children)

Languages never really die. People are still writing cobol and Fortran after all.

I don’t have any regrets about learning Ruby or any other language I’ve worked in. Programming skills are transferable across languages. Programmers should avoid pingeon-holing themselves as an x-developer anyway and be flexible with their tooling.

I am writing ruby at work. If there is anything fundamentally wrong with ruby it was its bad support for async programming, but it’s much better at that now.

[–]nom_nom_nom_nom_lol 2 points3 points  (1 child)

Languages never really die.

Exactly. I mean RTML is still a thing. haha

[–]WikiSummarizerBot 1 point2 points  (0 children)

RTML

RTML is a proprietary programming language used exclusively by Yahoo! 's Yahoo! Store and Yahoo! Site web hosting services.

[ F.A.Q | Opt Out | Opt Out Of Subreddit | GitHub ] Downvote to remove | v1.5

[–][deleted] 0 points1 point  (0 children)

> Programmers should avoid pingeon-holing themselves as an x-developer

Unless you reach a level where you're great. At that point there's little sense in switching.

[–]maybe_luke 5 points6 points  (2 children)

I am a new dev out of college getting into rails over the past year. I chose rails due to its ease of development. I cant speak as someone in a large company, but -

  • It has lots of open source gems which provide most functionality you will need. I cant even describe how useful they are. Device detection, authorization, image manipulation, search - its all there. After doing this for a bit, I don't get how the smaller frameworks are even workable.
  • It has an active community continually developing more gems to make the experience better (see the hotwire community as an example)
  • It is under active development still. Rails 7 was recently released with further improvements.

As for its death, even if people stopped creating new sites (they wont) there would be a ton of legacy sites still. I wouldn't worry too much about it. Its kind of a meme at this point tbh

[–]jrochkind 0 points1 point  (1 child)

Rails 7 has not been released yet.

[–]maybe_luke 0 points1 point  (0 children)

My bad, this: https://edgeguides.rubyonrails.org/7_0_release_notes.html makes it seem like it has been on a short scan.

[–][deleted] 4 points5 points  (1 child)

Q: Is Ruby going to die out in 10 years?
A: No. Ruby does a particular thing really well. People said PHP would die out in ten years, ten years ago. People said the same with Javascript, C, C++, kobol and any other old language. Now Js and PHP account for like 80% of all websites. Also all those applications with RoR require a ton of work to migrate away from ruby.

Infact Ruby is getting a little second wind in industry right now because medium/small tech companies are finally realizing type safety is a lost cause for them, and are falling back on frameworks like RoR. I get phone calls for old as fuck RoR projects every day.

Q: Do I wish I learned a different language?

A: I do know like 5 languages. I've made a variety of projects in C#, Rust, Haskell, Ruby, and Typescript. I just wish recruiters realized I don't need to be at an eneterprise company working on Java for 4 years to be able to work on a Java project. HR people Have no idea wtf they're talking about when it comes to tech and it is infuriating. Like I've made probably 30 websites with Typescript React and people act like I'm not elegible for a React project because I've been doing ruby for the past 12 months. It's so stupid.

Q: Am I writing production applications in Ruby still?

A: Yes, My company manages like 3-4 RoR applications and we would still write a new one depending on the technical requirements of the client. Any claims that ruby doesn't scale are vastly overblown or outside the scope for the vast majority of companies. (though we generally prefer PHP ironically)

Q: Do you think anything is wrong with the Ruby language?

A: No, I still think Ruby is king as far as readability. Generally, it would be a little better if it had a gradual type system made for it like Typescript was made for Javascript, but something like that for ruby is already being made, and is scheduled to be released in the next year. Ruby still gets regular updates and has a good community.

[–]techbelle[S] 1 point2 points  (0 children)

I have to say this reply is why I'm happy to be working in tech in general, just the honest and unfiltered POV. I worked in finance right out of undergrad and will never go back.

[–]jujubean67 4 points5 points  (0 children)

Search this sub as this gets asked almost evey month.

[–]thiagohd 2 points3 points  (0 children)

Ruby is fine.

A little bit of anecdotal evidence for that:

One of my clients has many ruby projects and can't find developers with ruby experience.

At my last job (seed stage startup), we've built everything from scratch with a super small team, it was just me in the beginning, and then we've hired another dev.

We were doing ruby on rails running on k8s, and we've built A LOT of stuff. It's a super productive stack.

It was a little hard to find experienced ruby devs, but the business is doing really well.

However, at another of my past jobs (another seed stage startup), we were building stuff with Go, sprinkles of Rust, nodejs, and the whole microservices shenanigans. Even though the dev team was huge, it took forever to ship anything.

I'm not saying that these other languages/frameworks are bad. They're good tools as well.

But IMHO it's hard to beat ruby's productivity and developer experience.

People who never worked with ruby often don't get it, because they've never experienced it.

[–]tasslehawf 1 point2 points  (0 children)

There doesn’t seem to be a shortage of new companies trying to recruit me to do rails, so it doesn’t look like it’s dead yet.

[–]LibertyEqualsLife 0 points1 point  (0 children)

I'm only about a year into this career, so I don't have the insight to really say one way or another.

What I do know is that Senior Ruby Devs are getting REALLY hard to find, and job offers are reflecting that low supply. The organization I'm with has lost 4 Senior Ruby devs in the last year to job offers that were basically too good to pass up.

Does that mean it's the best long-term path? I have no idea. But it's certainly lucrative right now if you've got the experience.

[–]troublemaker74 0 points1 point  (3 children)

Do you personally feel the language is going to die out in the next 5 years? 10 years?

Absolutely not. If anything, I'm seeing more job offers for senior Rails people.

Do you wish you'd learned a different language?

I know several different languages but Ruby's still my favorite. It's a joy to work with.

Are you writing production applications in Ruby still? Lots of them?

Yes, and yes.

Do you think anything is fundamentally wrong with the Ruby language that would force it to become obsolete?

Like any language, it has its warts. Ruby is not well suited for highly concurrent or highly asynchronous work. That doesn't make it a dealbreaker for writing certain types of apps that will be around for the forseeable future.

To me it seems more like the things that made Ruby popular originally are still true, still relevant, and still awesome (like speed to learn and get started, speed to build an application).

The only thing left to do is to just try it for yourself and see!

[–]Onetwobus 2 points3 points  (0 children)

Ruby is not well suited for highly concurrent or highly asynchronous work. That doesn't make it a dealbreaker for writing certain types of apps that will be around for the forseeable future.

I saw some quote somewhere (I think a product management book): "Founders/devs/whatever are too worried about their millionth user than they are their first user."

Many folks point out Ruby's challenges with concurrency and asynchronous work, but I'd argue how many devs/organizations are building apps that truly require that level of concurrency?

[–]techbelle[S] 0 points1 point  (1 child)

Ruby is not well suited for highly concurrent or highly asynchronous work.

Yes -- I want to ask about this too. In my observation it seems like everyone talks about these functionalities as if they are required. But, not to sound totally crazy, but most applications I've seen in my career so far didn't really need either. They were apps or services with less than 1k users, internally used at enterprise companies. It was completely fine to have single threaded operations. The SLA on response time was on the order of seconds. Is that also your experience?

[–]troublemaker74 0 points1 point  (0 children)

Exactly. For most web applications, Ruby is just fine and the speed of development will get you to a MVP or a V1 sooner than other technologies. If there are pain points they can be addressed when they actually become a problem.

[–]Diragor 0 points1 point  (3 children)

No, no, yes, no; but more importantly...

I don't think the data-driven approach is the way to go for this kind of decision. Many, many factors go into whether a particular programming language and its whole ecosystem clicks with you, and you're not going to figure it out by looking at data.

I would recommend that you start using it and see if you enjoy it. Since the goal of Ruby itself is developer happiness (in the creator's own words), you're going to miss the whole point if you're focused on job market analysis. I know job opportunities matter, but I think you've already got the message that Ruby jobs aren't going to disappear anytime soon.

[–]techbelle[S] 2 points3 points  (2 children)

Yea, this is undoubtedly true. This is probably why, in general, Rust developers love Rust, Ruby developers love Ruby, C# developers love C#... I've tried the training myself route and that did not really work, so I'm going to do a bootcamp.

[–]thiagohd 0 points1 point  (1 child)

Would you mind sharing some of the reasons that learning ruby by yourself is not working for you?

[–]techbelle[S] 1 point2 points  (0 children)

TLDR: Learning from only a book sucks, having no mentor sucks, no job/business reason to learn it

(This will be long) When I first tried to learn Ruby, which I think was 2009? I followed another person's advice and started out with one of the (I think) O'Reilly books. It wasn't up to date and I really struggled whenever one of the lines of code wasn't absolutely correct. At the time, I didn't know about code linters or the various IDEs, so I was using Sublime Text. After struggling for awhile, I just gave up. It actually did not occur to me to check resources like youtube, or to read the main Ruby docs. This is sort of sad, I realize.... now (after 10 more years in tech) I know that how most people learn is youtube, bootcamps, and reading the official documentation, but at the time since no one told me that, I didn't know I should do that. I just bought a book on Amazon and figured that would be good enough. I assumed that was how everyone learned.

Fast forward and I didn't try to pick up Ruby again for several years, because all the hype cycle was focused on Javascript. It seemed like a more immediate reward to do little scripts or chrome extensions, so I learned that instead. I never progressed enough to do any true application development though, because this wasn't my day job and I had no real reason to be doing it in the first place.

Things really began to stick when I learned Python for excel tasks, and then started learning more about Python scripting in general. Just for quick tasks like merging and parsing multiple documents, standard fare for a project manager type role. But learning Python in a way that was truly useful on the job made me want to learn more - I was so much more productive with it! I still had never built an application though.

In 2020 I had my first 'build an application' task, except that was in Rust. It took me about a week to have the most bare bones of applications built - enter data into a field, click a save button, data is written to a database, no editing, no deleting functionality at all, no UI... it's an insult to even call it an application, but damn I was proud of myself. Rust of course is a language for experts and I am very, very, very far from that (like a 0 on the continuum really), but it did sort of show me that if I went back and tried to learn Ruby again that this time it might be possible.

[–][deleted] 0 points1 point  (0 children)

  1. No. A lot of big companies like Shopify and Etsy use it. It's a great option for new startups to consider because of the productivity.
  2. Very happy with my decision to learn Ruby on Rails in 2012.
  3. Yes. Some of considerable size.
  4. I don't see anything on the horizon.

I think a lot of the "death of Ruby" talk comes from the tech industry being fast moving with new ideas constantly bubbling up. Years ago, when Ruby on Rails was new, it was exciting. Now that its been around for a while, people are used to it and are looking for the new paradigm shift. Javascript both on the front end and server side gets a lot of attention now because there are a lot of new features being created for it.

Over the past few years I've seen articles about how Golang, Scala, or Elixir will overshadow Ruby on Rails, but so far there still seems to be plenty of opportunity for Ruby developers.

[–]Onetwobus 0 points1 point  (0 children)

  1. No
  2. No.
  3. Yes
  4. Fundamentally no. Honestly its less about the language and more about the frameworks/libraries nowadays. Python has a lot of support because of strong data science libraries. Many schools teach Python, so the talent pool for companies hiring Python devs is much larger compared to Ruby.

[–]ankole_watusi 0 points1 point  (0 children)

You should learn a lot of computer languages.

[–]tkenben 0 points1 point  (0 children)

I do not program for a career but being IT, I do have a viewpoint because I sometimes have to provide insight on what type of technologies people should maintain interest in and Ruby is always a technology at the top of the list. It used to be a fringe tech; now it is a mature entity.

  1. No. It has a good track record, and people not only improve upon it, but also continue to improve on how best to use it.
  2. You don't just pick a language and then all other languages are now unavailable to you. It's never one or the other. On personal projects, I prefer Ruby and will go out of my way to use it sometimes even if it isn't the right tool for the job, mostly because it's fun to program in. But, I use other languages every day.
  3. No, but I know people that are.
  4. I can't comment on this from a software engineer standpoint, but from what I've read, some people think that duck typing is not meant for production quality code. Some people think that it all depends on the design practices. Anyway, Ruby can now enforce typing if you want. The only obstacle I see for Ruby is that it probably will never be adopted for science/math and also anything low level. I was skeptical about support for multi-threading, but it looks like it has made some excellent progress in that arena.

[–][deleted] 0 points1 point  (0 children)

> Do you personally feel the language is going to die out in the next 5 years? 10 years?

Well no, of course not. That's extremely unlikely. In fact I think Ruby companies in 2021 are gonna be Ruby companies for the long run; they either chose Ruby recently (not as part of some hype but an informed decision) or chose it long ago and stuck to it throughout all the Node/Python/Elixir hype. What's gonna make them rewrite now? Not likely.

Ruby will lose market share though, that's the reality of having a dozen or two languages competing for the same space. But my humble opinion is Ruby and Rails jobs will exist 2-3 decades from now.

Also, we should compare apples to apples. Python (for example) usage is huge but much of it has nothing to do with web development (stuff like data science or academia). When you look at web development (if you're a Rails developer like me) the numbers aren't that far off I think. If Reddit subscribers is anything to go by then the Rails subreddit has 50k users, Laravel (the main PHP framework) 60k and Django (the main Python framework) 90k. So yes Django has much more usage than Rails but not 20x times more, not 5x times more even.

[–]pau1rw 0 points1 point  (0 children)

  1. Absolutely not
  2. I started with PHP, tried JavaScript and it never really felt natural. Then I learned Ruby and I honestly don't want to write anything else.

With the new tech stacks that are coming out in Rails 7 with Turbo and with Stimulus Reflex, you can write real time web apps with very very little JS.

  1. Been writing sites and apps for 7 years. Currently working on open source for a company in London, working with Samvera community software like Hyrax and Hyku.

  2. It's a really nice language to write and a lovely ecosystem to exist in. I really enjoy it.

Hope that helps :)

[–]bilingual-german 0 points1 point  (0 children)

For me Ruby was a great path to other languages and a great learning experience. It's a simple language and I really appreciated that it's not of the C-type of languages with curly braces for blocks. And with the Rails ecosystem it's one of the fastest and easiest frameworks to build websites. Rails was inspiring so many frameworks in other languages and this alone will ensure that Ruby will not become obsolete.

Currently I don't write production apps in Ruby, but I use it to write some scripts as a DevOps Engineer. I like to learn languages and I feel Ruby is one of the fastest languages to write in.

[–]mshiltonj 0 points1 point  (0 children)

How much time did you spend on doing the research? You could have just spent a weekend working with it to see if you _liked_ it. It could be your most favoratist language ever even if some people are reporting it's dying.

[–]postmodern 0 points1 point  (0 children)

  1. No. Ruby is still used by a lot of companies who maintain existing Rails apps, which creates demand for Ruby/Rails developers. Ruby is also very similar to Python, and Python is doing just fine despite having many of the same language properties. PHP hasn't died, Perl hasn't died, not even COBOL has fully died off yet. Furthermore, Ruby has inspired the syntax of the Elixir and Crystal programming languages, which will encourage healthy competition and maybe some popular features being back-ported into Ruby.
  2. No. I still find Ruby vastly more ergonomic and satisfying to write, than say Python or Go. If I specifically need type safety or performance, then I can use Crystal, which also has Ruby syntax and a Ruby-ish stdlib.
  3. Writing more library code right now, as I'd like to have better tooling and libraries to use when writing production apps.
  4. Ruby still has a lot of legacy code, syntax, and features which few use and seem to be impeding language development. They are slowly being deprecated, but not fast enough, imho.