PS: This is a foreign trainer with more than 20 years of programming experience posted on Medium about Ruby and programming, whether you are a programmer or not, you can consider reading it. If you want to learn programming but are struggling to choose a language, this might be a good reference. Original link: medium.com/flatiron-la…

Ruby may only have a small share of the market. But that’s not why you should study it.

As the founder and dean of the Flatiron School, I thought it would be important to write about the impact of the recent shift in the focus of some schools from Ruby to Java, which means the job market for Ruby and Ruby On Rails is shrinking, Or its popularity and importance are fading.

Looking back on my career as a programmer, I worked mostly with ASP, JavaScript, PHP, C#, and Ruby, along with a few other programming languages (including Java). As a teacher, I have been teaching Web development using Ruby On Rails and JavaScript for over 5 years, helping thousands of students launch their coding careers.

At The Flatiron School, we are fascinated by the output of positions. And in those four years, we put it on the forefront, and we published independent audit and verification reports that detail how our graduates are performing in the job market. We are very proud that we have over 1,000 graduates in four years and still maintain such a high employment rate in the technical field.

The truth is that programming languages taught in coding schools should not be directly linked to the job market. We were pioneers in code bootcamp, and even in 2012, Java and PHP had a bigger market share than Ruby.

Assess the popularity of a language is a difficult thing, but the website https://www.tiobe.com/tiobe-index/ contains a number of measures, from the community indicator, jobs, and relevant platform to the situation of comprehensive evaluation.

IEEE Spectrum also provides more filters to see the popularity of a language. Spectrum.ieee.org/static/inte…

It is unrealistic for boot camps to simply educate the largest job market. What makes the Flatiron School successful is that a program designed to teach programming should not be limited to a specific language, but should focus on abstractable and general concepts. And one of the most important is the meta-ability to learn how to learn. Of course a Flatiron School graduate will have a deep understanding of Ruby and JavaScript, but the fundamental reason they are so competitive is that they can pick up anything quickly. Our graduates continue to work in every programming language they can name, including an engineer who contributed Java code to the Boeing 757s.

Don’t define yourself by the first programming language you learn

Many people feel that a programmer should be defined by the first programming language he learns, which seems very short-sighted to me. It is not worthwhile for programmers to simply define themselves as Ruby programmers or PHP programmers. We are programmers and programming languages are just tools for us. We can choose the right tools to deal with different scenarios and problems. There is a danger, in my view, in labeling new programmers as “Java” or “Python” through coding boot camps. I worry that students will forever be limited by the language they claim to have mastered. If students are never taught how to learn something outside of a particular language, they will lack confidence in their identity outside the programming language. The pressure for training schools is practical, market-driven, and by offering a holistic, universal curriculum that includes philosophical thinking, they can better train them, not just for the first job, but for a richer career.

We all have our favorite languages, and we’re all really good.

The declaration that There will be fewer and fewer Needs for Ruby programmers is trivial. As I mentioned earlier and will explain, I don’t believe in teaching people how to be a “[language]” programmer. We can continue to use Ruby as the language of choice, regardless of the demand for Ruby in the job market, and I am confident that our graduates will continue to be competitive. However, it is important to note that Ruby is still a skill in demand and with it an expanding job market. Ruby On Rails is still the startup of choice, and with every “Rails New” implementation, many new businesses will be born. In addition to startups, large public and private companies have been using Ruby and its ecosystem for many years now, and I don’t see any signs of it stopping. Ruby On Rails has become a major back-end stack for companies like Shopify, GitHub, Twitch, Airbnb, and more than that for Ruby-based DSLS, where there are a lot of amazing Ruby related jobs. But is it as big a market as Java? Not at all. But that doesn’t matter. After all, the market for both Java and Ruby is hard to saturate, and programmers shouldn’t always diagnose opportunities by language.

I don’t think it would be educationally prudent to develop a course around being a “Java”, “Ruby” or “[language]” programmer. It homogenizes your graduates, defines their job opportunities, limits their competitiveness, and sets them up for failure in teaching them lifelong career learning. This is questionable in light of the fact that Ruby and Ruby On Rails are declining in popularity and some courses are switching focus. Based on experience and from over a thousand graduates, we see a lack of demand for Ruby. We see companies of all sizes continue to embrace Ruby, and a good school graduate should be qualified to work in any language they desire.

So why Ruby?

If the first programming language taught in schools is not directly tied to job output, and it doesn’t matter that much, why does the Flatiron School still choose Ruby as the preferred language for instruction, rather than a new hot spot like JavaScript or some other cutting-edge programming language like Java? What really matters to students about their first programming language?

No matter what programming language a student learns for the first time, the most important thing is that it gives him a deep love of code.

Programming is an art. Poetry, dance and music, whether French or Spanish poetry, modern dance or ballet, classical music or techno, the actual style or the language of expression is not that important to the art. The poem does not depend on whether it is in Hindi, English or German, but rather on abstract concepts such as rhyme, meter, metaphor, metaphor, rhythm, composition, etc., and of course others — universal concepts that can be expressed in any language. Programming doesn’t matter if it’s Ruby, Java, JavaScript, or C#. It’s about abstraction, semantics, encapsulation, logic, interfaces, and so on, and these concepts are embodied in every programming language.

As a beginner programmer, the most important thing is to really learn those general concepts that will manifest in your first programming language. The most dangerous thing is that you are taught your first programming language under the belief that “this is all I need to learn to get a job” and you will never learn how to recognize those concepts. You’ll miss the forest because of a single tree, and you won’t know how to learn a new programming language. You will of course sadly miss out on all the beauty and elegance of the code.

The joy of programming is not hidden in the technical implementation of one language or another, but in the extraordinary medium of programming, as Ada Lovelace put it in “The Science of Operations.” Ada used to predict:

“Operational science, especially as a derivative of mathematics, is science in its own right and has its own abstract facts and values.”

Learning to code without learning how to recognize abstract truths about the craft is unfortunate. Learning a programming language has never been the most important part of learning how to code. The most important thing about learning to code is to appreciate the amazing beauty of the code itself. Students should fall in love with code.

We train our students to love code first, and Ruby is a good choice for this task. What makes Ruby such a wonderful first love for programmers? It goes back to the design of the language. Yukihiro Matsumoto, better known as Matz, a Japanese programmer and inventor of the language, made clear his expectations for the language:

Ruby’s goal is to make programmers happy, and I set out to invent a programming language that would make me happy, and as a side effect, a lot of programmers happy, too.

There are hundreds of reasons to create a programming language, and almost all of them have to do with the context of coding — to make cross-platform compilation easier, to optimize parallelism, to “run faster”, and so on. As far as I know, the only language in the history of programming languages that was invented for your pleasure is Ruby. Ruby values you (the programmer) more than the machine. An early prolific Ruby programmer named _why_the_lucky_STIFF described Ruby in RailsConf 2016 Talk as follows:

“Ruby is such a thing…. Writing code in Ruby really makes you love coding, it makes you feel passionate, it makes you feel fun, it stirs you up, it’s a beautiful language, and of course I’m being a little erotic. Method calls are coherent, stripped of parentheses and exposed in series, like…… Glowing ruby.”

These human-centered values are constantly reflected in the language’s design choices. Perhaps the most encouraging thing is that Ruby provides more than one way to do the same task. The choice of implementation is often seen as the weakness of a language. In reality, Python proclaims the value in “Zen Python” that “there should be a perfectly obvious way to do something”.

Ruby offers an infinite number of ways to do things. Matz was asked at a conference why he was designing a language this way, when there are so many ways to do the same thing, and his answer came out of Ruby’s heart:

“I want to make Ruby users feel free. I want to give them freedom of choice. People are different.”

For me, it’s not about programming, or it’s not just about programming — it’s about cultural values, about the importance of freedom. For Matz, freedom is expressed through the ability to choose. What might be “right” for one person might not be “right” for another, but they’re both right, they’re just different. And they should have the right to be individuals without any restrictions. I believe in its value in life, religious freedom, marriage equality, political affiliation, and of course the freedom to code.

A programming language that embraces values like happiness and freedom may seem boring and heretical. After all, who cares about programming language ideology? Of course not, it’s the computer running the code. So what’s the key point? What makes Ruby put people above machines? Why should we care about the nuances of language design when considering the preferred language for education?

Programming languages are just tools. A tool is something that seems replaceable and unimportant. And Edsger Dijkstra, the father of programmers, once argued that “the tools we use have a profound effect on our habits of thought and our abilities.” In popular parlance, “When you have a hammer in your hand, everything looks like a nail.”

The tools you use will influence the way you think. And the way you think about it is the most important thing. Therefore, the tools you use to solve problems will constrain your thinking and affect your ability to solve problems. Every tool is designed to have intrinsic value. The design value of a hammer is mainly that it can be wielded, with a fixed head of a certain weight in front along with a light slender body to create a long arc for impact. The value of a screwdriver is the combination of a long rod and a specific screw head, which you can twist to perfectly handle screws of all sizes. Can you hammer a nail with a screwdriver? Perhaps, but is it an easy-to-use, efficient, elegant or recommended tool in this context? No, the most important thing for a human being as a tool is how it will be used and how it can be used.

So what can we do with Ruby? Of course, I know I love Ruby. I’ve been programming for over 20 years and I know a lot of languages, but I’ve never loved one as much as I love Ruby. It’s not just me – many developers fall in love with Ruby after learning it. _WHy_THE_lucky_stiff has expressed a sentiment that I think many developers feel about Ruby.

My conscience won’t let me think of Ruby as a computer language, because that would imply that the language is primarily for computers. If the first and foremost purpose of a language is to accommodate computers, then we (coders) are like foreigners seeking citizenship in the land of computers. This is the language of computers and we are the translators of the world.

But what will you say about a language when your brain can think in it, and even express yourself in its unique words and grammar? How can this be called a computer language? This is our language. It’s natural to use it to “talk.”

We can no longer call it a computer language, it is a language for expressing our thoughts.

There’s something else about Ruby that I can’t describe completely, that I’ll leave out, and that’s the Ruby programming community. Why do Ruby developers continue to provide innovative inspiration for modern Web development? Today’s Web development is fast both in terms of performance and speed of production. Best practices and associated conventions are common across languages, and developer toolsets and workflows are a must today. Ruby developers pioneered frameworks like Ruby On Rails for rapidly developing websites, with conventions that let you build a blog engine in under five minutes. Ruby On Rails was the first mainstream framework to embrace REST and make it a standard. Few Ruby developers care about SVN versioning and Trac’s poor user interface, and they embrace Git and GitHub. The Express.js DSL and many other domain-specific languages were inherited from Ruby and are now used by other languages. Heroku is the granddaddy of no-hassle configuration, virtualization, Web application hosting platforms originally created by Ruby programmers for other Ruby programmers. Ruby programmers have built amazing companies: GitHub, Twitch, Twilio, Airbnb, Shopify, and more. Ruby is such a handy language, its impact and impact is quite large.

That’s my way of saying Ruby, again going back to the tools we use, innovation requires doing something different. Teams of Ruby programmers are tired of the way Ruby On Rails handles dependencies (open source programs that your application uses to speed up the development process). To solve this problem they created an open source software called Bundler. Every programming language has a related implementation of a solution like Bundler’s, including Facebook’s YARN (an improvement on NPM), almost directly following Bundler’s ideas. All because they decided to try something different with managing dependencies.

Around the same time, another group of Ruby programmers was thinking how great it would be if people could rent out their extra living space. It was a crazy idea, so they quickly built a working product in Ruby On Rails and iterated On it quickly. It took years of tinkering and eventually we had a market and clicks, and we had Airbnb.

I can tell many stories of Ruby programmers succeeding in the programming world and in the business world, but I’m not claiming that this is a miracle unique to the Ruby community. I looked around and there are so many incredible paths that are changing the world, and we’re not going to know all of them, but Ruby is going to be in one of them.

Why do many Ruby programmers succeed through innovation and invention? The Ruby programming language encourages innovation, and we can use it to innovate. If using a hammer means rocking, and using a screwdriver means turning, programming in Ruby means creating. Ruby is a tool that wants you to feel happy, and when we’re happy we can play and explore. Ruby is a tool that wants us to focus on expression and allow you to communicate as pure as human language. Ruby is a tool that wants you to stand out and create your own language. Ruby developers have inherited these values and promoted the human spirit of creativity.

To learn more about Flatiron School, visit this website, follow us on Facebook and Twitter, and for upcoming events near you.

The Flatiron School is a proud member of the WeWork family. Switch to our sister’s tech blogs WeWork Technology and Making Meetup.