While working on my side project I should hire a back-end freelancer. But eventually results is always the same, I'm not satisfied about it. I decided to learn some back-end to do all these part of job by myself. So the question is, what's the easiest way to learn it and what you guys suggest me to learn, JS, PHP, Ruby on Rails or something else?
So there are lots of things to consider before everyone get into a performance battle let me suggest you something in my perspective.
I have started coding back-end when I was 13 with PHP then I learned Ruby / Rails with Node Js
My PHP Experience: It was a real trauma for me, I always felt something wrong when I wrote PHP, it's absolutely very easy to start but you feel something strange when your code is working yet you do mistakes. I always felt that I'm a total idiot and never going to be a real developer, PHP was a fucking disaster for me, yet I should mention that PHP isn't the same PHP through my time, it developed itself thanks to Symfony community, but I still didn't like PHP because of the trauma.
Ruby Experience: Before I start Ruby and Rails, I have already used sass, stylus, jade, gulp, grunt these tools were popular at the time and I liked them a lot especially stylus and gulp which was I still use, anyway when I start Ruby first thing I have noticed was ruby was a source of inspiration for lots of tools in the ecosystem, ruby has a soft, beautiful syntax, and you can do solid projects or prototypes within hours with rails.
Node Js Experience: I consider Node Js at very different state, for me ruby is a nice sweet tool but node js is something alive, it's everywhere while you're on working, fucking crazy thing, for example when you develop web-app with node.js you can send response to both terminal (bash, command line) and browser, this feels very aesthetic and easy as hell, I have used Node Js to create lots of command line interface's which helps me while I'm developing something, yeoman-like tools saves your lots of time, Ruby can do that too but when you use node trust me, it feels different.
My advice for someone who's only getting into back-end first time, first fuck the performance combats, you need to love the language that you're going to develop, Python is a really fast language but that doesn't mean ruby isn't or node.js isn't, don't approach combat battles like ohh this language is really fast I should use it! performance is up to you as well, in the end know that. If you need something really fast then pick a language fits your needs. You need to love the language because back-end languages are ugly, time-consuming things basically you interact with a child who has a reptilian brain. For example, if you want to send this child to a market you have to give it direct instructions like go to north 5ft then open door by pulling the doorknob which was at x: 1435252, y:125435 then go to 15ft etc. etc. this is back-end programming at basic.
Thank you, really expanded answer.
+1 for NodeJs being a joy to work with
Rails and Python are good back end languages to go for, especially if you're going to be working with web technologies. If you look at takeaways from Stackoverflow's annual survey (https://blog.zipboard.co/developer-trends-to-watch-out-for-a0b11c49dbec) you'll see that Python has overtaken PHP this year. Also Python can be big help in Data visualization, if you need that.
If you want to be really edgy, try Golang
Ruby or PHP.
Ruby is nice and easy to learn if you want to build simple web apps or APIs.
PHP is good to get dynamic web pages up quickly instead of building static html. Also Wordpress sites are built with PHP. Don't listen to people who say PHP is a terrible language. It works and is tried and true.
Spent some time as a dev as well. Not going to make this a “which language is better?” post. Instead, I'll focus on other practical aspects of popular languages:
Ruby is a wonderfully-designed language. The ecosystem is shrinking as developers seem to be moving to Go & Node. Fairly easy to learn, good ecosystem / plenty of libraries available. 2010 was probably the perfect year to learn Ruby & Rails, though. Prospects not as hot these days.
PHP, on the other hand, is a terrible language. But, it can come in handy if you work on Wordpress websites. If you're not working on Wordpress sites, I would say “stay away”. It's not going to open doors for you. It's not going to teach you any best practices (although it's getting better!)
- NPM is, hands down, the largest repository of packages and libraries you will find, anywhere. Given, there's some mediocre & unmaintained stuff as well, but you're going to have a really easy time finding libraries and packages for whatever project you want to work on.
- Hosting isn't the nightmare it was when Node was first released. Now.sh & similar make deployments & scaling a snap for beginners.
- Node adoption is currently growing. Pretty much every other ecosystem I can think of (excluding Golang) is shrinking or stagnating.
- JS has the biggest developer community. Plenty of tutorials and guides to get you started.
Golang is becoming incredibly popular with developers right now. It's a great language, but it's probably a bit difficult for beginners. Library support / dependency management is a nightmare (even more so if you're a beginner). Lots of devs seem to be having fun re-inventing the wheel in a relatively-new ecosystem. Some basic things lack mature solutions. Golang will, however, probably emerge in 3-5 years as an incredible language with a great ecosystem & tons of support. Today, however, the learning curve is pretty steep.
Hope this helps!
Definitely helps, thanks! Appreciate!
With JS you have to also typically define your own stack, which for a newbie is daunting. There are frameworks out there but many are still new to the game. With Ruby on Rails, the stack is very opinionated and often ready to roll as soon as you run
rails new myapp.
If you break something along the way, chances are you can google the error you get and someone else has already encountered the same thing. I'd say while learning RoR is a great way to go about it. I learned by submersing myself in anything to do with it. There aren't as many tutorials out there but some are worthwhile to watch/read. gorails.com is also a good resource.
Depending on how much time you have, RoR has a ton of gems to help with many use cases. Devise for instance saves loads of time by integrating a full user account system on any Ruby on Rails app that's customizable and extendable. There is a ton more. I'm sure there is also an equivalent for most things in any language/framework of course.
I've been a PHP dev for almost a decade and just recently switched to Python. I'm absolutely loving it. "Why haven't I done this sooner?" is what I've been asking myself. Flask and Django are great.
Golang looked interesting but it's too fresh and I'm in the business of being employable/marketable so it's more of a hobby language for me right now.
Ruby - Never took to the Ruby train although I don't think there is anything wrong with it. Up against Python, I choose Python everytime for career longevity and employment opportunities.
I wouldn't really lean a backend learn a backend language for side projects. I recommend you to use firebase! It's awesome for side projects, most of our side projects needs some time of authentication and CURD operations and firebase is fast easy and realtime.
Was just going to post about Firebase. It's not ideal for all type of projects, but most can easily fit into the backend-less model quite elegantly.
Major benefit is that it takes care of so much of the plumbing: authentication, server setup and maintenance, scaling, storage, analytics/reporting etc. and it comes with an excellent SDK. In short, it allows you to stay in the frontend and focus on what you do best.
Personally, I ended up going the Ruby and Ruby on Rails route (I'm primarily a designer and frontend developer). Maybe this will help, I started a list of resources for people to get started with Ruby. Would love to know if you find it interesting and useful:
Hey, I will definitely read it, thanks for the source Caleb!
I'd initially ask what programming experience you currently hold? And then build off your strengths.
I know jquery somehow, that's why I'm looking more into JS side.
That being said I wish I had focused more on the philosophy of programming; instead of learning the syntax of a single language. I recently watched a couple courses from Lynda by Simon Allardice. The one that helped me the most is Programming Foundations: Object-Oriented Design
Disclaimer: I work for a leading cloud training provider.
But to expand on this, as a front end dev, you and I are so used to calling REST API endpoints that return JSON and we then manipulate this into the outcome we desire. If you can get on the other side of fence and control the JSON, you now control your own destiny.
Depends on what it is you want to do, mostly. If you work at an agency or a media company, PHP is probably the most practical to learn, since most popular CMSes are powered by it.
There's Ruby and Python for backend services which are what Twitter and Google are built on respectively, but I feel as though they have fallen out of vogue lately in favor of Node.js. Ruby on Rails particularly has kind of fell out of favor for new projects, since everything is more or less architected to be built on APIs, rendering and managing everything client side on the front end.