More than Ruby - provided by Babbel

Babbel is a language learning app that currently sees up to 120,000 downloads per day and provides over 8,000 hours of learning material. The company is growing continually and currently employs over 300 people from offices in Berlin and New York.

Babbel’s main programming language is Ruby. With this in mind, I had some questions:

  • Is it merely a coincidence that a language learning company chose Ruby as their programming language?
  • Will Babbel continue to use Ruby?
  • Does the use of Ruby create a particular culture within a team?
  • Is Ruby enough?

Let’s see what some developers have to say:

Bruno (@inf0rmer) is from Portugal. He previously worked in social network platform development, and joined Babbel in November 2014.

Ruby has many benefits

Ruby on Rails was my first contact with Ruby, and I found it very natural. It was easy to learn and teach and very straightforward to program in. I had a friend working at Babbel who had told me about his experiences working with Ruby. The combination of a great product, an international environment and, the chance to live in Berlin persuaded me that Babbel was a place I wanted to work. I was excited to begin working on and improving a product that helps people to communicate.

Microservices

When I came to Babbel, I was somewhat surprised that a company this size could be so well organised. Despite that, Babbel is still a startup. It grew fast, and the legacy monolithic code was still there at the time I arrived.

I quickly began to push for a new architecture to decouple the monolith. Now we’re moving forward with microservice architecture and a Ruby backend. Some other languages will begin to appear in the near future.

Work to live

I could talk a lot more about Ruby, microservices, and design patterns, but what’s important is that this is all made possible by a good work-life balance.

Not the Rails way

Sometimes the Ruby on Rails community (as opposed to the Ruby community) is kind of dogmatic about the Rails way to do things, but I don’t believe that’s the best way to improve and evolve our friendly framework and keep people involved.

Slow Ruby

Sometimes I expect the Ruby language to evolve faster than it actually does. That might mean I have to use other languages to solve new problems that Ruby doesn’t yet cover. Despite this, I love Ruby and it’s the language I’d use to teach programming to anybody.

Nicola (@nicsnet) is British but born in Germany. She worked in a marketing tech startup before joining Babbel in July 2015.

Human open-source productivity

Like several people here, I started with Ruby on Rails. At University, I was exposed to lots of different programming languages and concepts, but when I discovered Ruby it was love at first sight. I liked the readability, the strong emphasis on practises like TDD, and the open-source philosophy.

More complex than Rails

My experience and explorations lead me to believe that Ruby on Rails works very well for prototyping, but it’s not always the right solution when things get bigger and more complex. A framework like Rails can impose a lot of constraints when developing a large application that needs to scale. Problems like concurrency pointed me to other languages.

Metaprogramming

What also attracted me to Ruby is the power of meta-programming and creating DSLs. Essentially, I saw Rails also as a project to create nice DSLs for web development. I departed from that view once I encountered how metaprogramming is done in Lisp dialects: Lisps have a unique niche due to their simple syntax, which makes meta-programming through the use of macros very easy. This allows you to model the language to suit your problem domain instead of modeling to fit your problem domain into your language. It's really cool once you get your head around it, and it makes it simple to do a lot of things that are very difficult in Ruby.

Babbel in the long run

I moved to Babbel to be part of a big-vision, long-term product. I really appreciate the way knowledge flows, and that learning is an essential part of the company’s culture. I’m here to develop the new microservice architecture with highly scalable small apps.

Pedro (@pvisintin) is from Argentina. He worked in the e-payment industry, before starting at Babbel in November 2014.

Smalltalk, sorry, not so open source

I started Ruby because I wanted to do object-oriented programming in a dynamic language. At the time, the Smalltalk environment wasn’t available for building web solutions and JavaScript looked like a toy in the browser.

I believe in Ruby on Rails

Creating a web framework with ASP was not an easy task: a lot of ideas were smashed into the limitation of IIS and ASP. But then a colleague showed me Ruby on Rails (0.8, I think) and I fell in love immediately. Several ideas that I wasn’t able to implement were there, and it was all made with Ruby. Moreover, a new movement of developers was starting: open source communities started to grow and good practices started to spread, along with manifestos about coding, conduct and collaboration. It meant more productivity without doing overtime.

Programming language polyglot

The pace of technological change affects our everyday life and our work even more so. Ruby made me happy and made the users happy, but it’s now time for a change.

Being a developer today requires you to know, or learn, new languages and new paradigms. We need to re-learn, re-think and build software that allows us to change quickly.

Surfing the waves of hype

One thing that I really appreciate at Babbel is that we don’t feel pressured to take every wave: we wait for the right one and enjoy a nice ride back to the beach.

Olly from Germany has been at Babbel for almost seven years. Previously, he worked on Learning Management Systems and e-shopping development with PHP.

Ruby didn't always work as expected

I was very excited about Rails and Ruby – everything worked smoothly, it prioritised convention over configuration, had nice separation between layers etc.... but email.send failed. I created a really nice class “Email” l and tried to “send” an email with: @email.send(….) but it didn’t ‘send’. Aside from that one incident, it all went pretty well.

And now, for something completely different

Back in the 2000s I used to attend Krawatte (German for “tie”) tech events. These were fairly typical at the time – tech was inextricably linked to a ‘shirt-and-tie’ mentality. But when I started to participate in the Ruby on Rails community, I could see a much broader mix of people – and they didn’t need a Krawatte to present good ideas.

We really love Ruby, but...

Sometimes we Rubyists can be a little ‘snobby’ towards proponents of other languages – especially PHP. We’re usually very passionate, but sometimes that looks a lot like disrespect. I really think this is something that we as a community should look to improve.

Less volatile than the JS community

An important thing about the Ruby community’s ecosystem is that Gems remain well maintained for rather a long time. This is in stark contrast to other technologies. JavaScript projects, for instance, tend to have a very short half-life.

Ruby with a purpose

Working in a humanistic topic like language learning makes a lot of sense for me: I feel like every line of code I write has real meaning.

Ruby in the long term

We’ll keep Ruby as Babbel’s main language, but as new challenges appear – high concurrency, high computational requirements etc. – we’re ready to incorporate other languages such as Go and Elixir. I’d say that Elixir is my favourite of the two. I’d love to tell you why here, but perhaps that’s better suited to a future post on our tech blog.

Supporting eurucamp

Babbel is proud to support eurucamp and the open-source community. This will be our first time, and we’re looking forward to presenting our first open source contribution in our lighting talk. It’s a small first step of a great movement, and we’ll be making further contributions to the open-source Ruby community in the near future. If you see us around eurucamp, don’t be shy – we’re always available for a nice chat.

Thanks!