Ask HN: Where are all the Rails jobs?
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 ] threadServer 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 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.
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.
Here are some stats on the demand trends: http://www.indeed.com/jobtrends?q=rails%2C+django%2C+node%2C...
http://www.indeed.com/jobtrends?q=rails%2C+django%2C+node.js...
Data http://www.indeed.com/jobtrends?q=hbase%2Csolr%2Chive%2Ccouc...
Infrastructure http://www.indeed.com/jobtrends?q=aws%2Crackspace%2Cazure%2C...
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.
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.
I keep reading this and I don't understand. ¿How can a single thread process be concurrent?
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.
With your answer I understand it is not concurrent but scales well anyway.
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.
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.
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.
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.
https://blockscore.com/jobs
https://blockscore.com/jobs
Unfortunately I am not looking for remote workers though. Good luck in your search, I am sure you will find something!
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.
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.
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.
https://www.noredink.com/jobs
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.
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.
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.
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.
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.
http://haskell.on-a-horse.org/