12

What back-end language should I learn?

over 5 years ago from , UI/UX Designer

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?

22 comments

  • nusu alabuganusu alabuga, over 5 years ago

    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.

    16 points
  • Rishabh Saxena, over 5 years ago

    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.

    And JavaScript is a good resource to know without a doubt. Depending on what technologies you are working with and what project you are building, I'd say start with one of these three.

    5 points
    • Pavel Ivanov, over 5 years ago

      Thank you for answer, I usually working on web projects and more looking to JavaScript but definitely try Python as well. Thanks!

      0 points
  • Julian SalasJulian Salas, over 5 years ago

    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.

    2 points
  • James FutheyJames Futhey, over 5 years ago

    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!)


    Javascript / Node: Here is where I would place my bets.

    1. It's easy to get started, especially if you already have front-end Javascript experience.
    2. 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.
    3. Hosting isn't the nightmare it was when Node was first released. Now.sh & similar make deployments & scaling a snap for beginners.
    4. Node adoption is currently growing. Pretty much every other ecosystem I can think of (excluding Golang) is shrinking or stagnating.
    5. 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!

    2 points
  • Andy LeverenzAndy Leverenz, over 5 years ago

    I had this same problem. I ultimately chose to do it myself with Ruby on Rails but plan to later get on the JS bandwagon. Ruby on Rails probably the easiest point of entry to frontend and backend combined. The syntax is cleaner than PHP which makes me happy. It's certainly older but after learning it I realized it's the same thing as Laravel but with Ruby and you guessed it....Rails. More people are going the JavaScript route today which is perfectly fine as well, my only issue with that is it's still new and JavaScript is a loosely typed language. This is both great and discouraging at the same time because you may find 100 different ways to do one thing and the next person will tell you it's all wrong. It's getting better with ES6 though.

    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.

    2 points
  • Gonçalo MoraisGonçalo Morais, over 5 years ago

    JavaScript, I would say. Since it runs client-side and server-side, you would be learning a language that you could use across the whole stack. The resources around are plenty (free and paid) and the community is pretty cool. “Always bet on JS.”

    2 points
  • Caleb SylvestCaleb Sylvest, over 5 years ago

    Javascript would be a good way to go because you can build the frontend and backend with a js tech stack. But node can be tricky.

    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:

    https://github.com/heyspacetime/awesome-rails-education

    1 point
  • Siddhartha Gudipati, over 5 years ago

    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.

    1 point
    • Lasse AndersenLasse Andersen, over 5 years ago

      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.

      0 points
  • Kyle PierceKyle Pierce, over 5 years ago

    I think working on a project is the best way to get started. Doing tutorials never worked for me. I had to create something that I was passionate about getting it to work. I am a visual learner so I needed a programming language/framework with a tight feedback loop. (make a change, see the change). I found meteor.js a javascript framework. It has recently fallen out of vogue, but I feel the magic of things just working; make it an amazing for first-time programmers.

    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

    1 point
  • Clay MacTavishClay MacTavish, over 5 years ago

    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.

    JS/Node - It's JavaScript. But it is too volatile (no good testing solutions, ORMs and Frameworks - Express- change too often)

    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.

    1 point
  • Aaron Wears Many HatsAaron Wears Many Hats, over 5 years ago

    I'd initially ask what programming experience you currently hold? And then build off your strengths.

    If you've had experience writing front-end code in jQuery/JS/etc then looking at JavaScript/TypeScript is a good way to go. As mentioned above, python is good to learn too.

    1 point
  • Tait BrownTait Brown, over 5 years ago

    I would go against the grain here and say that with Serverless (focusing purely on FaaS) being on the rise, the industry is moving towards the trend of "writing infrastructure, not code". When it comes to FaaS (functions as a service), the big three (AWS, Azure, GCP) support different languages, but all share JavaScript/Node at the core, with Python as a close second.

    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.

    0 points
  • Darrell HanleyDarrell Hanley, over 5 years ago

    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.

    You can't go wrong going all in on Javascript though. You can build a robust backend using Node.js & Express. You can build mobile apps with React Native. You can build desktop apps, you can build robust web apps, etc.

    Really, when you hit a wall with Javascript these days, its because you need to do something very technically complicated, like AR, game development, or something that requires lots of heavy processing, in which case you'd have to move over to something like Swift or C# anyway.

    0 points