After 6 years of full-stack Rails/JS development, I still love Rails, but I'm disillusioned by the direction the community has taken.
I started using Rails because I was amazed at what you could do with such a small amount of work. I loved how the community was so helpful and so unified.
Nowadays, I feel the opposite way. The community is full of very opinionated camps of people who are basically at war with each other. You have the DHH camp who basically goes along with everything he says. Then you have the JS-eating-the-world camp who secretly hate Rails, and refuse to do anything with it except serve JSON. Then you have the Gang-of-Four-uber-alles camp who want to recreate Java's OOP suckage inside Ruby.
The community is also very much geared towards beginners. The effect on intermediate devs is that you never seem to get past the beginner stage -- no matter how many years you spend -- there's always someone there to tell you how to do it "correctly."
The front-end world is even worse. Grunt, Gulp, Backbone, Ember, Angular, RequireJS... I am convinced that all these do is over-complicate the development process, when all you really need is JQuery and Chrome Devtools. In my 6 years, I have written a lot of complex front-end Javascript and have never felt the urge to bring on a JS framework like Angular, a format like AMD, or a build tool like Grunt. They all seem rather pointless to me. And when I see people use them, I see them staying up late, spending hours debugging tools, etc. And everywhere I go, there is pressure from the community to get on board with these tools. It's like the entire JS community has come down with a severe case of Stockholm Syndrome.
All this has given me the urge to leave Rails and JS development altogether, but it's really not Rails or Javascript that's the problem. I still really like using those two technologies. It's the direction the community is going that I disagree with. Does anyone have any advice or words of encouragement?
Sails.js, man.
TL;DR: You sound a little burned out on the community, so take a break from it.
As an old developer, and also as one who’s been doing Rails for years, I suggest you read less about what’s going on.
Let all the haters hate whatever they’re hating on, and do awesome work. Find a sub-community that’s more chill, or start your own.
And remember that everyone with strong opinions has them because of their experiences. DHH needs to get his platform to have new responsive functionality without tearing down years of work. JS is what the browser runs, so to be really responsive you absolutely need it and there’s no one true way. OOPers have experienced pain because of god objects they have to maintain.
“The community” is really just people, and with the popularity of Rails for web apps, there are a lot of Rails and JS devs. That means the community is less homogeneous, and that’s probably a good thing for all of us.
I am not discouraged with the trends in the community because I’ve seen lots of trends come and go in the 9 years since Rails version 0.11. I still get very excited when starting a green field project, because Rails keeps getting better (if not more complex!) at giving me tools for creating top-flight data-driven web apps.
Imagine if the heavens opened and the angels dropped web components into our laps early. A lot of the fascination with SPA client-side frameworks would simply dissipate, as developers would no longer need them just to organize their JS code.
Until that day comes, I’ll just keep leveraging the huge libraries of Rails-ready gems to write great server-side code and using jQuery and (next time) Knockout components for client-side goodness.
Yeah seriously, and don’t forget the 100% test coverage lunatics. Or the people who think you’re a piece of shit if you don’t use some highly formalized kanban process.
I think what’s going on is that the Rails community has its roots in highly opinionated blogs. Add to that the general insecurity of newer developers and you can drive traffic (influence) to your site by declaring everyone else an idiot. Also, the people who found success with rails found it because it was the new hotness and now they’re always looking for the new new hotness.
You can safely ignore most (or all) of this and just focus on your customer relationships and solving problems with whatever tool you think is best.
Take everything with a grain of salt, adapt new techniques to your own processes, and don’t let clickbait blogs make you feel bad about how you develop. Do the gang of four guys have some great ideas about development? Hell yes they do, my code has improved a ton since I started borrowing ideas from them. Does that mean that it’s wrong to use ActiveRecord callbacks? Shit no!
I think it’s also important not to brand yourself as a “Rails developer.” You’re a developer who mainly uses Rails. Don’t be afraid of exploring new things and new ideas. Sure, you can do everything with Rails and jQuery, but you can also do everything with PHP, or ASP.NET, or (god forbid) ColdFusion. The most important part of this business imo is keeping yourself up to date and understanding which tools are right for which jobs.
I’ve been learning a handful of frontend JS frameworks over the past 3 or 4 years and pretty much agree that they all vastly over-complicate the frontend development in most cases. The only case I’d argue for using one of the existing frontend JS frameworks is on a live dashboard of some kind with a bunch of disparate data being displayed and needing to be kept updated live. I do think the direction they’re heading is positive overall for frontend development but they remind me of the early days of Rails right now with everything changing so rapidly with them. I think in another generation or two they’ll be much more usable.
As far as community, the Rails community has most definitely fragmented as its grown since the early years. Its still the best community though in my opinion. My advise to you is to step outside of your comfort zone and learn something totally different for a while. Try iOS or Android development or maybe node.js. Try debugging 10 asyncronous recursive threads dumping to the same log file. Try dealing with XCode crashing every day and trying to write tests with XCTest and OCMock. Despite the different directions the community might look like its trying to move, its still 10 times better than the rest of the development world.
If you’re really passionate about the direction, lay down some code and try to participate in shaping it. Fork the core if you must.
Fuck the community for just a moment:
When it comes down to it, do you still enjoy the act of coding?
I’m just learning rails and programming and am fascinated by what you can do quickly as well.
My background is in design, and I ran into the same thing in design too. I think it’s a young person thing. I’m 36, and I don’t have time anymore to be a whiny argumentative jerk about things. I wanna get shit done quickly and efficiently.
My advice would be to heed these guys advice. Also, find people who are like minded. I know a lot of developers who love solving problems and would love to hang out with them vs designers who gripe about different shades of blue.
Here’s my words of encouragement: it’s worse everywhere else.
no advice, but I do agree
My advice is to sharpen your Ruby skills. Watch and Read some by Avdi Grimm and Sandi Metz and a new field of improvement opens up. And it’s not about Rails in general or frontend frameworks, it’s about the Ruby code YOU write.
I may be in the minority, but I’d love to be in your position. You’re a dev with enough experience (in both code and community involvement) that **you see areas for improvement**. That’s a golden ticket right there – you see a problem, now you just have to act like a true engineer and **attempt to fix those problems**.
Don’t like where Rails is going? Fork Rails and do it your way. Release that as a framework.
Don’t like the bloat of Javascript frameworks? Release a book on how you can do everything with just jQuery. Actually, the big reason I got into Angular was because jQuery alone, while you can create large applications with it, is a bitch to test, and is very easy to turn into a massive cluster fuck of spaghetti code. I liked that Angular code was very testable and very easy to organize. I’d love to see how you find it easy to test complex event delegations, as events and anything DOM related I always found to be rather ugly to test.
So as you can see, you’ve got a wonderful set of opinions, and you should **let the world know about them**. If you think something sucks, that’s the beauty of open source, you can just make your own version! But I wouldn’t get too jaded, because to be honest, that’s a pretty self-centered way of looking at it. A collective group of experts have given you languages and frameworks which you can make a living off of, **for free**, and you’re sitting there complaining about it after years of profit, with plenty of things to complain about, without solution. I say stay proactive, find solutions, and share your knowledge!
Really, expressiveness is a must in a good language. The ability to say things in multiple ways. All the opinionated camps do is outline how expressive it can be (since there is no 1 right way to do stuff).
I tend to stay with thick-client side apps because it makes ripping out the backend server and putting a new one in comparatively painless. It also gives better UX if you pull it off right. Not to mention, once you DO learn something like Angular / backbone etc. it’s as big of a productivity jump as it is when you first learn of jQuery vs. plain old DOM.
Check out the Future of Ruby panel from Burlington Ruby Conf: http://vimeo.com/103590400
> The front-end world is even worse. Grunt, Gulp, Backbone, Ember, Angular, RequireJS… I am convinced that all these do is over-complicate the development process?
why do you use rails? are you saying that front end applications aren’t structured and don’t need formal organization and powerful abstraction layers?
why don’t you just use a web server and write your own server side web applications from scratch?
everything else i can agree with, but i hate the “i only want to use jquery” idea because A) i usually have to clean up the mess that you leave behind because there is a new feature that needs to be added and your code is horribly fragmented and chained together (not you personally but you get the point) B) it gives people the notion that anyone who uses client side frameworks is just trying to be a trendy hipster.
Community is great, it’s wonderful to find answers and encouragement in your peers. That said, community is secondary to creating. I don’t understand why you would allow someone to distract you from your creative process simply by being difficult. Write something. Make something awesome. Forget about what others are doing.
As a platform gets popular enough, you’ll have opinionated opinions and discrepancy among them. I believe that’s the state of RoR today.
That said, discrepancy and different opinions are great things as its allows the platform to adjust and ultimately improve. That is, allows for the platform to not stagnate. As long as we agree to continue making progress, change and opinions are a positive quality.
I personally find the direction of web development super exciting at the moment. This being said, I probably fall under the “JS-eating-the-world” camp… but what’s wrong with that? It’s fucking awesome?!
Imagine a world where you have two separate repos. One for your Rails app and one for your front-end app. Your rails app (api based) is on some Linode or Digital Ocean box, your front-end app is straight-up hosted on Amazon S3.
Asset Pipeline? Yeah, that party is over. It’s slow, doesn’t support Bower, and feels super dated once you’ve used Gulp or Broccoli. People like these techs because they are good. You get way more control and are more in step with the front-end community (not just the heavy JS framework users).
It also sounds like you are pretty down on Ember and Angular, but if you invest the time to learn those tools they will change the way you write applications and open up a world of possibilities that you’ve never had. Writing your own JS framework is about as effective as writing your own version of Rails. Why put yourself through that pain? Most of the problems you’ve faced are solved, but it definitely requires putting some time in to learn.
Rails is awesome and has taught us a ton amazing principles – all of which you can apply to any other language you choose to develop with. This being said, it appears that many people feel like Node is a good choice at the moment and I tend to agree with them.
Even so, I still love developing API’s in Rails. So easy, so fast. Hope you find a way to feel better!
PS.
Twitch was just bought by Amazon for a few billion dollars and they developed their app with Ember. I can’t imagine a Turbo-links app having the same value, but maybe I’m just being draconian.
I certainly feel you on the frontend side. A lot of people have gone full retard with backbone/knockout/ember and the whole shitfest. And then it becomes even more ridiculous when the site they’re building is a blog or something.
With turbolinks, jQuery, and some clever use of SSE, you can do pretty much everything your average app needs. Frontend frameworks are good for when you have scaled up way big, or have an application that can happily exist with a separated client.
meteor.js it is!.
Start working on a product. You can use rails, but have that be HOW you solve you problem instead of that being a solution. If you’re making one-off small sites over and over, you’re going to feel a bit of burnout from doing the same thing constantly. If you work on a product that is long lived, you’ll be facing new challenges (along with a lot of repeating ones).