Ask HN: Where are all the Rails jobs?

112 points by grover_hartmann ↗ HN
Hi Hacker News,

Rails programmer here -- I've been working with Rails since 2008 and I've been doing remote jobs for a living since then.

Lately I can't find any work at all with Rails, what's going on? What happened? Where did all the Rails jobs went?

I remember during 2008 doing multiples jobs at the same time, I used to get lots of offers, lots of interviews and gigs, etc, things have been really nice. Nowdays I barely get any interviews, and if I'm lucky to talk to someone, they ask for Node.js/Ember experience as well, etc.

Did all the jobs went to Node.js and other languages? Or I'm just doing something wrong?

It's really depressing accumulating all the knowledge and skills I got since then and not being able to use it or find more work. Even more depressing that I can't find work and my income depends on this.

Any suggestions or recommendations welcome. I'm only looking for remote work.

Sigh, please help. :-(

105 comments

[ 3.0 ms ] story [ 185 ms ] thread
Everything's trending to Node.js (unfortunately). Ruby has been steadily declining over the years. The web development industry seems to shift really fast.

Server side web technologies/languages change/shift in popularity really fast. As a freelancer, the best thing you can do is learn how to learn things fast. Most of the patterns translate over between languages and technologies though.

Client side work is even more wild. I remember when everything was just jQuery spaghetti. Then things moved to KO/Ember, then to Angular in around 2012, and now everyone I know seems to be moving towards React. A lot people were disenfranchised by the Angular 2.0 announcements over the past month.

The server side changes I'm not too thrilled about javascript making it's way to server side when so many wheels exist already in form of php, java, python.

The client side I've set by on the bench while I continued to hack with jQuery but now it's ridiculous, just about any development job now requires backbone.js or angularjs of some sort. I've yet to see React appear as often but maybe thats the beginning of another trend. Some shops I've worked with who bet their projects on Javascript Everywhere™ seems to have become more risk averse but it could be just a wishful thinking on my part.

What was so bad about Angular 2.0? I don't think I would ever deal with backbone.js because it makes Java Swing seem easy, which is practically whats happening, people trying to replicate desktop apps in a browser with an awful language not originally tasked for the job so they come up with weird freak of nature like Coffeescript.

Frameworks are making the whole JS thing much easier now, and since you have JS in the browser, on every device on the planet, it makes a lot of sense to use node.js on the backend as well for certain tasks.

In 2014~2015, I can't imagine creating a web based backend system (or even a mobile app for that matter) in anything other than JS. The costs of hiring a C++/Java/Ruby engineer are not so easy to justify. Beyond the monthly costs, it's also the amount of time it takes to create a powerful, reactive web interface.

I think its probably a combination of companies moving away from rails and a huge flood of newer developers into the market who have picked up RoR.

Here are some stats on the demand trends: http://www.indeed.com/jobtrends?q=rails%2C+django%2C+node%2C...

I suspect that Nodejs is taking market share away from Rails and Django. It makes sense though. You can do your entire stack in a single language and the event loop in Nodejs scales better, than a Django WSGI deployment. I'm not sure how you can deploy a Rails application, but I suspect that it scales similar to a Django WSGI deployment.
Django scales just fine. It wasn't a problem for instagram, disqus, pinterest, washington post or the onion.

The nodejs model for high concurrency high throughput async applications is also pretty easy to write in python using the (much more mature) twisted framework.

No weak typing or yucky nested callbacks either.

The event model that Nodejs uses is the same as the twisted framework. The twisted framework is more mature, but does not have as many developers and a growing ecosystem like the nodejs. I don't think this is due to any problems with the Twisted framework, it's just that Nodejs has greater mindshare.

When I've deployed django applications we used apache and mod wsgi. This works by starting up a bunch of apache processes which load up a python interpreter. Each HTTP request that comes into the application is handled by an apache process which contains a python interpreter. This means that you have to use 100-200 Mb for each python requests. This is the amount of memory it takes to run a python interpreter. The number of mod wsgi processes that you can run at a single time determines the number of HTTP requests that you can handle. For the same amount of memory you could handle more HTTP requests using nodejs or twisted or any other framework that uses the event model.

> The nodejs model for high concurrency

I keep reading this and I don't understand. ¿How can a single thread process be concurrent?

Twisted, Nodejs and all of these other frameworks use the select system call under the hood. This works well when the process is IO bound. Processes that are responding the HTTP requests or reading or writing to databases tend to be IO bound.

The select system call takes a set of file descriptors and returns which file descriptors you can read, because new data is available to read. These frameworks read from these file descriptors and dispatch the new data to a callback method. The event loop only processes one thing at a time, because it is single threaded. However, since reading from the file descriptor and processing the callback is usually fast, this scales very well. Once again, it only scales well for IO bound operations. This uses less memory than having a single thread for each HTTP request, and it definitely uses less memory than having a single process for each HTTP request.

Yes this is the approach Tcl took, 20 years ago.
That doesn't explain why people call node.js concurrent.

With your answer I understand it is not concurrent but scales well anyway.

(comment deleted)
Traditionally in CS, concurrent != parallel. If you have a blocking operation (say a database read) your program can do something else while it waits for a response from the DB (this gives you pseudo-parallelism). That is the concurrency that evented frameworks like Node or EventMachine are usually associated with.
(comment deleted)
As a freelance developer, the big opportunities lies in sectors outside of internet startups. (manufacturing services, clothing, import/export, finance, construction, home services, agriculture). Those are the areas where a skilled programmer can provide the greatest needed value.

Most of the time, you pick your own programming languages and the clients trust your expertise. Plus, these jobs are often less demanding than working for startups.

Personally, I still find Rails as one of most efficient and fastest tools for developing web apps.

How do you usually meet up with these people? Asking this in another way, how do non-tech sectors find programmers? How do they know the need one?
That's a blog post of its own.

I suggest going to networking events outside of the tech bubble.

Many people in other industries aren't technically backwards or technophobes. The smart ones understand the value of an efficient IT system. Just like us, they enjoy the latest gadgets. They just haven't met many developers in tech that tried to engage them.

I'll speak as a marketing director that has just enough of an experience with languages (JS/PHP) to keep up so I'm not a complete dunce, but I/we can't do the work internally. I found my current outsourced team from a very strong recommendation. Why are recommendations so powerful? Because we're lazy. It's hard to weed through random proposals from strangers when someone you trust has used someone successfully. But referrals only happen after you, excellent developer, have a few jobs under your belt. And that's given that you have past clients that aren't trying to hoard you. Would they recommend you to their friends if you're slow on the projects you're working on with them?

As a marketing director at a small travel company if I want my Magento website upgraded for speed, or if I want the current theme made responsive, where do I go? Well the CEO wants ROI, so I'm under pressure to find the balance of cost and quality output. So that means I try to outsource to developing countries for <$50/hr. What if you're a $100+/hr American developer? Well as a marketing director that reports to the CEO, I have to completely cover my ass in order to recommend something at $100/hr. Doesn't matter that the going rate for the best devs in tech cities might bill out at $500/hr - he's comparing to the Indian company from 2 years ago, to his sales team, and to his accountant.

If you want to bill at market rate++ you sure as hell better propose something in such a way that the projected savings or new revenue is much higher than your cost. A CEO or Director of Marketing WILL pay what you're worth if the ROI is 125%+. You probably can't guarantee anything since so much is dependent on the company you're working with. But you have to paint the picture of possibility. In the perfect world, how well can what your proposing help the company? If you cover all the technical bases and point out the other areas of the project that the sales team, the marketing team, the customer support team has to contribute to, well that's a much easier sell.

ROI, ROI, ROI. That's what people who hire you think about, especially in non-tech industries. All business people think of this first. Business people understand long term investment and don't expect your $10k project to product $20k the next month, but you have to help paint the picture. Will it pay off in 6 months? 9 months? 2 years? Make it easy for them, and the sale is easier.

How do non-tech sectors know they need a programmer? There's almost always the techiest person at any company that is designated to hire the programming help or falls into it. You don't have to convince the secretary, the CEO, the accountant, the COO and the marketing director. You only have to convince the person handling the project that tends to be the most tech-savvy. A smart CEO generally won't put a 60-year-old secretary on the hunt for a genius RoR developer. He'll designate the best staff he has available.

What triggers that moment where they go from mentioning it in passing, to calling a meeting and saying "we need to hire a developer in the next two weeks"? Usually it's obvious things that don't need to be uncovered by developers. The ecommerce payment system stops working; someone looks at the site on their iPad and realizes it looks like crap; they stop getting automated emails.

The power you hold is painting a beautiful picture of what's possible with technology, and making they understand, then believe your vision. And a shit ton of ROI projections.

Great feedback. How does a consultant do effective marketing/sales towards these organizations? It really seems like a consultant has to "strike when the iron is hot" and be there when there is a problem that needs a solution.
I work for a small to mid-sized family business that existed for more than 30 years now, we have several stores and since 10 years ago have been manufacturing a physical product with mostly national recognition, but also some international interest. In terms of size I'm talking about ca. 50 employees.

Our "IT-department" is me and another employee, that is currently finishing his apprenticeship (the german model) and likely to stay with us. When I started 10 years ago I got in via an apprenticeship too. We usually look to train our people and keep them for a long time, if possible.

Since I haven't been working for anyone else yet, I can't compare, but it's really satisfying working for a smaller, familiar and non-tech company. As you already mentioned technology and programming is needed everywhere, not just start ups. We develope our own internal CRM, POS system, websites and experimenting with lots of new stuff - sure, you could outsource these jobs, but our company is aware of the fact unless you spent a lot, you might and up with some lackluster solution that barely managed to tick off the bullet points. Doing this in-house offers a lot of freedom - we can choose our own technology, which is Rails for us, and if an employee/user comes up with an idea that would make his life easier, we are able to make it happen fast.

Plus, we feel valued, know the internal processes and requirements by heart and therefore are able to work on long-term goals, not just the current job's specs. The company is also located in a rather rural area - this might not be to everyone's taste, but rents and life in general is cheap around here, while the salary doesn't differ that much from city-figures - while the rent certainly does. Overtime is a very rare thing, I work 7 am - 4 pm. I can get to work by bike in 10 minutes, rarely seeing a car along the way. The bottom line is a very comfortable situation for me - financially and in terms of quality of life.

tldr: If you look outside the usual tech-world, you might realize that your talent is needed almost everywhere and it can be very satisfying to work in your natural domain, but for non-tech companies.

A lot of the most popular/profitable U.S. bootcamps have seemed to focus on Rails, so I imagine that might impact the number of available novice Rails devs. But I'd be surprised if the market has simply crashed...In the past two months I've gotten unsolicited recruitments from well-funded/known companies...and considering I'm not a particularly noted Rails dev (but happen to have a lot of Rails-related commits in my Github), I see it as anecdotal evidence that things aren't completely saturated (though maybe the impact is more on remote jobs?)
Why are you married to Rails? Sure, it's pleasant to work in, but being so tied down to one stack is an antipattern considering how quickly technology moves. Sell yourself as more of a talented full-stack developer who can apply knowledge and experience to any stack. If you think about it, all the things you've learned in Rails (the ORM, the MVC paradigm, front-end/API separation) all exist in other stacks.
(comment deleted)
I am trying to hire Rails programmers and everyone I talk to from other founders to recruiters to lead devs all report the same problem: too many Rails jobs way too few available programmers.

Unfortunately I am not looking for remote workers though. Good luck in your search, I am sure you will find something!

Yep. In the Denver/Boulder area I'd say we have a severe lack of talented Rails devs with good experience. Between here and SF I get contacted for 1-2 jobs per week and I don't promote myself at all. Usually it's for mid stage startups looking to expand their team or hire a senior dev.

All jobs that I hear about are full time and not remote. For startups looking to build their team, having quality people in the office provides much more than what a remote worker can offer.

Here is anecdotal evidence from my own company. As someone who is hiring developers, my belief is more and more front end development is moving to js frameworks like Angular/React/Ember and that means the backend becomes "just" an API. Rails is still a very pragmatic choice for an API, but as SOA becomes more popular, micro-services are very easily written in any language, golang, js (node), etc.

Also, as a developer you better get used to "accumulating all the knowledge and skills" but be willing to stay up to date on the trending technologies. It is the best way to stay marketable, and I think its a lot of fun too!

PM me what timezone you are in and some brief overview of your experience and contact info.

Similar situation and opinions here. We've launched on Rails and have since invested towards SOA. One reason was the increased complexity of the frontend solution as experience became more important in the minds of the consumers. Another was the benefit of languages which previously weren't an option because the open source community wasn't as interested.

One thing I'm curious about is how the growth in SOA popularity impacts the software ecosystem around deploying and managing micro-services. Interesting space to watch, for sure.

When it comes to SOA, I think Node is one of the greatest examples. Btw, has anybody noticed that npm has become extremely common? It looks like npm is used even on projects which are not based on Node.js.
Is this true? Are there examples? I'm guessing client-side apps built with browserify/webpack?
I found that it depends on type of jobs available. There are tons of full-time rails jobs everywhere, but smaller/remote projects tends to be more on the edge of things and more often use new, hip, technology. So there is less smaller rails projects and more smaller Node projects.
I find it nightmarishly hard to find rails programmers with experience - not just the latest App Academy/etc. grads. Maybe it's your market? In SF, there's still fierce competition
If you're in the San Francisco area, please apply for our Rails position! We're a small team (the whole company is 9 people, but we've been doing extremely well) making an awesome product, and we're actively looking for great Rails developers. :)

https://www.noredink.com/jobs

If people want Node, why not learn Node? It's all the same stuff - you're taking HTTP requests, interacting with some data from a database and sending it back down to the response. You already know what's going on, the language you use to do so isn't that important in the end.

I went from C# to Node with few regrets. I play around with Ruby and Python from time to time. Mentally they're all very similar.

I'm afraid this is normal and will happen to you several times in your career. It is just the nature of this industry, which is more driven by fashion than anyone is comfortable admitting.
You successfully caught a wave. This is to be expected in any area of programming.

RoR was propelled forward by businesses trying "new" technologies in the hopes that it would pay off in faster / cheaper software development. While RoR is not getting any less useful, the 5 year hype cycle of web dev has made SPAs and Node.js the new technology stack to experiment with.

My suggestion is to either secure traditional employment in the RoR stack, or move to the JS and Node.js stack. The former will give you a few extra years, while the latter will allow you to continue with the remote work you have grown accustom too.

I tell my consulting clients that there are only three ways to make more money: get more clients, charge more, sell your existing clients more stuff.

Most devs are under-charging.

Getting more clients is expensive in terms of time and support.

What almost everyone forgets is that it's far better to sell your existing clients more stuff than to get a new client. When was the last time you called everyone you've worked with and asked them how they are doing, how things went after you were involved.

Get in the habit of asking them which of their friends might need some work done. It should always be your last question.

I've been hiring Rails devs for the past year and here are my thoughts on the subject.

If you're a classical Rails dev (no frontend experience with Ember, Angular, or Backbone) then you should have significant experience on the backend in terms of building APIs, provisioning and configuring cloud servers, and scaling databases. Ideally, you've done this work at a successful shop that has reached meaningful scale to where you've learned where the framework works and where it falls down.

If you lack those skills, then you better hop on the tech treadmill and get in shape on the client side. Learn a frontend JS framework or get some native mobile dev experience so you can remain full stack. Just being able to just sling Rails Views around with jQuery simply doesn't cut it any more.

What a surprise! You picked a fad platform and the work is drying up. I've been working several large platforms that sit on top of the JVM for years now, I charge over $850 (£550) and I've never struggled to get work.

I mainly work with big ecommerce platforms; Oracle ATG, SAP Hybris, IBM WebSphere amongst others. They are built using Java and have made me somewhat wealthy. No fads.

Downvotes not required - I'm raising a valid point about fads. At the time people were saying it was a fad. HN doesn't like these kind of opinions.
Think of the down votes as the internet equivalent of being ignored or walked away from at a social gathering. You know, when someone says something arrogant or self centred and people turn away not quite knowing how to react.
agreed. packaged software is the gift that keeps on giving. hybris is on the upswing.
how would you get into learning those platforms?
I haven't noticed a particular decline in Rails jobs locally here in New Zealand. In fact, a company has been looking for a Rails dev for over a year and can't find anyone. I work in PHP, and there's quite a lot of opportunity. On the other hand, there's no Node jobs around, perhaps because of its infancy.
In San Francisco. There are about a million of them.