Skip to content

Instantly share code, notes, and snippets.

@amrabdelwahab
Last active April 25, 2019 14:51
Show Gist options
  • Save amrabdelwahab/1185d5dfd04c533c48e2bd4b810b17e2 to your computer and use it in GitHub Desktop.
Save amrabdelwahab/1185d5dfd04c533c48e2bd4b810b17e2 to your computer and use it in GitHub Desktop.
What is wrong with Ruby interview questions

Introduction

If you are reading this document, that means that you are interested take part of the first round of the "What is wrong with Ruby?" project

I just would like to ask you during your answers to mind the following:

  • These questions are wide and sometimes vague intentionally, I want to start with an open bracket and give the ability to you to write what you feel like.
  • All these questions are optional, feel free to answer whichever you prefer to and skip what you want to skip.
  • If you want to add comments or thoughts outside the scope of these questions please feel free to do so.
  • Please make sure to use as beginner friendly language as you can and maybe metaphors to express your opinions as well.

Basics

For everyone
  • Would you be okay with sharing your answers in public formats like presentations, blog posts and so on?
    • Yes absolutely, feel free to quote me on my answers
    • Yes, feel free to use my answers but anonymously please
    • Yes, if you want use it in an aggregated format like statistics or so
    • No please keep it to yourself and use it only for inspiration
For Ruby Implementations contributers
  • Which ruby implementation do you work on?
  • How long have you been doing so?
For Gem maintainers
  • Which gem do you work on? for how long?
  • Do you have any metrics of how widely spread the gem is?
For event organisers and community managers
  • Which event/initiative/community do you run or you're involved in running?
  • Is it a ruby specific event?
  • how long have you been doing that?
For people who ditched ruby?
  • How long did you work with ruby?
  • What is your choice of the new technology?

Performance

This section focuses solely on performance aspects of Ruby.

For everyone
  • How would you define good or bad performance to a junior?
  • Do you believe Ruby as a programing language has an inherent performance problem? Any good examples? thoughts or comments? (If the answer is no, why do you think ruby is famous for being slow?)
  • What is your take on Ruby 3X3 initiative by the Ruby core team?
  • What do you think of the introduction of the new just in time compiler introduced in MRI 2.6?
For Ruby Implementations contributers
  • Was MRI performance one of the main motivations behind working on an alternative implementation of Ruby for you?
  • How does your alternative implementation of Ruby handle what you preceive as performance issues
  • What will be your recommended strategy in changes Ruby the language and different implementations can use to achieve better performance?
For gem maintainers
  • Do you have good coverage of benchmarking to your gem?
  • How much does performance impact your decisions in the gem maintainance? can you elaborate a bit?
For event organisers and community managers
  • When selecting talks and programs, how much of emphasis do you put on performance improvements in the ruby sphere?
  • What do you think is left as a blindspot in terms of ruby performance improvement in events? Is there a topic you always felt would be useful to have talks about but lacked it(In relevance to performance I mean)?
For people who ditched ruby?
  • How does your new technology stack compare to ruby's single threaded performance? What are the reasons?
  • Was performance one of the main motivations for you to do this move? if yes, what do you think ruby can adopt to improve this?
For senior ruby engineers
  • How much do you think of performance in your day to day life as an engineer?
  • How much benchmarking and profiling do you do in your daily work?
  • Do you have enough support in terms of resources and tools to successfully benchmark, profile and tune your performance?
  • Do you have an example where ruby performance was a bottleneck in terms of performance. If yes how did you handle that?

Ruby the language vs the C implementation

This section focuses solely on the differentiation between ruby the language and MRI, support of alternative implementations.

For everyone
  • Do you use alternative implementations of ruby in production or just MRI?
  • If yes, can you share more insights about your experience?
For Ruby Implementations contributers
  • What are the difficulties you face in marketing your implementation to be used in production systems? what do you do to overcome this?
  • What do you think is the main downside of your implementation in opposition to MRI?
  • What do you think is the main advantages of your implementation in opposition to MRI?
  • What do you lack from the Ruby core team to make your job easier?
  • What about the ruby unified specs?
  • Do you have problems with C extensions in existing ruby gems? can you elaborate on that?
For gem maintainers
  • When maintaining your gem, do you often have alternative implementations compatibility in mind?
  • Do you use any C extensions in your gem? If yes, why?
  • How would you prioritize an issue of compatibility with Jruby or Truffle ruby in comparison to usual issues in the gem behavior with MRI?
For event organisers and community managers
  • Do you often consider the diversity of ruby implementations when planning your events?
  • Do you get many submissions of useful real life projects about alternative ruby implementations?
For people who ditched ruby?
  • How does existing Ruby Alternative implementations compare to your new technology selection? Does it solve any of the problems that motivated you to do the change?
For senior ruby engineers
  • On what basis do you decide which implementation of ruby to select for your problems?
  • How many projects in the past did you use/consider using an alternative implementation of ruby than MRI? can you elaborate more on this?

Multicore CPU utilization

Often Multicore CPU utilization comes up whenever people criticize ruby, so In this section I focus on two aspects:

  • The Existing problems with ruby parallelism (GIL, Lack of default immutability..etc)
  • The lack of highlevel, intuitive and easy to use abstractions in the ruby sphere
For Ruby Implementations contributers
  • Does your implementation enable better support of Multi CPU utilization compared to MRI? Can you elaborate?
  • In simple language, how would you explain the GIL in MRI and what alternatives exist to avoid that?
  • Do you have an idea of a future language addition that can improve the abstraction of utilizing multicore CPUs?
For gem maintainers
  • Did you face any issues regarding multicore cpu utilization throughout maintaining your gem? Can you elaborate?
For event organisers and community managers
  • How often do you hear talks about simplifying multicore CPU utilization in the ruby sphere?
  • Do you consider that an important topic in your events/Community?
For people who ditched ruby?
  • Does your new technology choice provide better abstractions? can you elaborate a bit about it?
  • Was that one of the motivations behind your decision to adopt the new technology?
For senior ruby engineers
  • Did you face any issues regarding multicore cpu utilization throughout maintaining your codebase? Can you elaborate?

Language syntactical innovation

Since ruby 1.9, the language syntax hasn't seen major changes many voices spoke in the past years about features that they feel is missing and features they feel are added without real need.

For everyone
  • Is there a feature you miss a lot in ruby (Syntax wise)
  • Was there any recent changes in the ruby syntax that you dislike? care to elaborate?

Community contribution

The main foundation of Open source software is enabling people to engage in discussions and drive big projects together to a direction they all agree on. Unfortunately in reality it is much harder that a wider audience gets really involved in decisions due to many logistical reasons besides other things.

In this section I want to focus on what can we do to ensure bigger, wider and more diverse ruby community contribution in shaping the future of our language as Matz always says.

For Ruby Implementations contributers
  • Do you feel your opinions and suggestions are usually taken into account by the ruby core team?
  • How diverse is your core team and frequent contributers?
  • How do you make sure to involve more people from the community with your project
For gem maintainers
  • How do you engage more contributers to your gem?
  • what do you think the language core team and implementation teams can do to improve community contribution?
  • How diverse is your core team and frequent contributers?
For event organisers and community managers
  • Do you have any ideas how can we improve community engagement with ruby core team into shaping the future of the language?
  • How can we encourage more people to try to contribute to the language?
  • How can we increase the diversity of ruby contributers?
For people who ditched ruby?
  • Do you have a better community contribution model in your new technology community? can you elaborate more about it?
For senior ruby engineers
  • Have you ever contributed to ruby in any aspect? if yes can you tell more about the experience?
  • If no, what stops you from contributing to any of the implementations? what can be done to make it easier and more welcoming?

The language coupling with Rails

In this section, I would like to address the issue of the strong coupling of the general purpose programing language ruby to a very specific framework Ruby on rails

For everyone
  • Any thoughts on that?
For senior ruby engineers
  • Do you use rails in majority of your projects? if yes, why?
  • Do you find enough support for non rails ruby projects?
  • Do you get approached from recruiters looking for "ruby on rails developers"?
@krainboltgreene
Copy link

For everyone
  • Would you be okay with sharing your answers in public formats like presentations, blog posts and so on?
    • Yes absolutely, feel free to quote me on my answers
For Gem maintainers
  • Which gem do you work on? for how long? VCR, at least 4 years?
  • Do you have any metrics of how widely spread the gem is? https://rubygems.org/gems/vcr

Performance

This section focuses solely on performance aspects of Ruby.

For everyone
  • How would you define good or bad performance to a junior? I would say good performance is something that accounts for small and large scale, with little thought. See: ActiveRecord::Relation#exists?. I would say bad performance is something that cause engineers and product managers to avoid scale.
  • Do you believe Ruby as a programing language has an inherent performance problem? Any good examples? thoughts or comments? (If the answer is no, why do you think ruby is famous for being slow?) Slow is a label that requires significant context to be taken seriously. I've seen entire ruby stacks handle 250k RPM pretty easily. I've also seen that same ruby stack annihilate itself because it's being asked to update the stock price of 10k items in one go. In both situations the real bottleneck was postgres, which is written in very performant C. Early Ruby engineer was a lot of experimentation from people who wrote C and Java and they were used to solving problems that really didn't fit Ruby's wheelhouse. Turns out you don't need to get microsecond-level performance from a language to sell clothing online at a massive profit.
  • What is your take on Ruby 3X3 initiative by the Ruby core team? I think it's great publicity for ruby. Changes at that level help everybody. I'd rather see a "Ruby 3 should have a 3 times better STDLIB than Ruby 2", but I don't control anything.
  • What do you think of the introduction of the new just in time compiler introduced in MRI 2.6? Probably good, but frankly I haven't heard anyone even talking about it outside of core contributors and Sam Saffron.
For gem maintainers
  • Do you have good coverage of benchmarking to your gem? VCR's performance is tied to four things: (1) How fast is Ruby's YAML? (2) How fast is the filesystem? (3) How fast is the mocking library? (4) How fast is the network? Naturally, we don't have any benchmarking coverage.
  • How much does performance impact your decisions in the gem maintenance? can you elaborate a bit? On the whole, it doesn't. We've never been the slowest part of your test stack though.
For senior ruby engineers
  • How much do you think of performance in your day to day life as an engineer? Continually, as I'm building.
  • How much benchmarking and profiling do you do in your daily work? We do very little profiling, instead relying on common patterns.
  • Do you have enough support in terms of resources and tools to successfully benchmark, profile and tune your performance? ips-benchmarks is a blessing.
  • Do you have an example where ruby performance was a bottleneck in terms of performance. If yes how did you handle that? Often the worst part of dealing with large data is the ruby objects that get generated in service of abstraction.

Ruby the language vs the C implementation

This section focuses solely on the differentiation between ruby the language and MRI, support of alternative implementations.

For everyone
  • Do you use alternative implementations of ruby in production or just MRI? I've used jruby and rubinius extensively.
  • If yes, can you share more insights about your experience? I absolutely love jruby and it's core contributors.
For Ruby Implementations contributers
  • What are the difficulties you face in marketing your implementation to be used in production systems? what do you do to overcome this?
  • What do you think is the main downside of your implementation in opposition to MRI?
  • What do you think is the main advantages of your implementation in opposition to MRI?
  • What do you lack from the Ruby core team to make your job easier?
  • What about the ruby unified specs?
  • Do you have problems with C extensions in existing ruby gems? can you elaborate on that?
For gem maintainers
  • When maintaining your gem, do you often have alternative implementations compatibility in mind?
  • Do you use any C extensions in your gem? If yes, why?
  • How would you prioritize an issue of compatibility with Jruby or Truffle ruby in comparison to usual issues in the gem behavior with MRI?
For event organisers and community managers
  • Do you often consider the diversity of ruby implementations when planning your events?
  • Do you get many submissions of useful real life projects about alternative ruby implementations?
For people who ditched ruby?
  • How does existing Ruby Alternative implementations compare to your new technology selection? Does it solve any of the problems that motivated you to do the change?
For senior ruby engineers
  • On what basis do you decide which implementation of ruby to select for your problems?
  • How many projects in the past did you use/consider using an alternative implementation of ruby than MRI? can you elaborate more on this?

Multicore CPU utilization

Often Multicore CPU utilization comes up whenever people criticize ruby, so In this section I focus on two aspects:

  • The Existing problems with ruby parallelism (GIL, Lack of default immutability..etc)
  • The lack of highlevel, intuitive and easy to use abstractions in the ruby sphere
For Ruby Implementations contributers
  • Does your implementation enable better support of Multi CPU utilization compared to MRI? Can you elaborate?
  • In simple language, how would you explain the GIL in MRI and what alternatives exist to avoid that?
  • Do you have an idea of a future language addition that can improve the abstraction of utilizing multicore CPUs?
For gem maintainers
  • Did you face any issues regarding multicore cpu utilization throughout maintaining your gem? Can you elaborate?
For event organisers and community managers
  • How often do you hear talks about simplifying multicore CPU utilization in the ruby sphere?
  • Do you consider that an important topic in your events/Community?
For people who ditched ruby?
  • Does your new technology choice provide better abstractions? can you elaborate a bit about it?
  • Was that one of the motivations behind your decision to adopt the new technology?
For senior ruby engineers
  • Did you face any issues regarding multicore cpu utilization throughout maintaining your codebase? Can you elaborate?

Language syntactical innovation

Since ruby 1.9, the language syntax hasn't seen major changes many voices spoke in the past years about features that they feel is missing and features they feel are added without real need.

For everyone
  • Is there a feature you miss a lot in ruby (Syntax wise)
  • Was there any recent changes in the ruby syntax that you dislike? care to elaborate?

Community contribution

The main foundation of Open source software is enabling people to engage in discussions and drive big projects together to a direction they all agree on. Unfortunately in reality it is much harder that a wider audience gets really involved in decisions due to many logistical reasons besides other things.

In this section I want to focus on what can we do to ensure bigger, wider and more diverse ruby community contribution in shaping the future of our language as Matz always says.

For Ruby Implementations contributers
  • Do you feel your opinions and suggestions are usually taken into account by the ruby core team?
  • How diverse is your core team and frequent contributers?
  • How do you make sure to involve more people from the community with your project
For gem maintainers
  • How do you engage more contributers to your gem?
  • what do you think the language core team and implementation teams can do to improve community contribution?
  • How diverse is your core team and frequent contributers?
For event organisers and community managers
  • Do you have any ideas how can we improve community engagement with ruby core team into shaping the future of the language?
  • How can we encourage more people to try to contribute to the language?
  • How can we increase the diversity of ruby contributers?
For people who ditched ruby?
  • Do you have a better community contribution model in your new technology community? can you elaborate more about it?
For senior ruby engineers
  • Have you ever contributed to ruby in any aspect? if yes can you tell more about the experience?
  • If no, what stops you from contributing to any of the implementations? what can be done to make it easier and more welcoming?

The language coupling with Rails

In this section, I would like to address the issue of the strong coupling of the general purpose programing language ruby to a very specific framework Ruby on rails

For everyone
  • Any thoughts on that?
For senior ruby engineers
  • Do you use rails in majority of your projects? if yes, why?
  • Do you find enough support for non rails ruby projects?
  • Do you get approached from recruiters looking for "ruby on rails developers"?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment