How To Choose a Backend Programming Language

backend languagesOne of the most important decisions you’ll have to make early on in your path as a new programmer is deciding which language you want to pursue.

Your choice of first language may very well determine how you go about learning to code, which areas you focus on, and ultimately influence your decisions later on. That said, if you’re serious about becoming a good programmer, your first programming language will not be your last, and after you get through some of the early hurdles of learning to code you can always reevaluate your language choice.

In this post I’ll cover some of the basic things you might consider when choosing a back end programming language. If you’re trying to choose between front end and back end, or aren’t sure of the difference between the two terms, I recommend you read this post first.

Not A Question Of Ability

Before I get into the specifics of each language, however, I want to stress that fundamentally, every programming language could accomplish the same things as any other language.

Your choice, then, shouldn’t be based on a language’s fundamental capabilities, but what you choose to use the language for.

You can read more about this concept here.

Ruby

Firstly, let’s consider Ruby, which is often coupled with it’s partner framework, Ruby on Rails.

Ruby is a great language for new developers, and definitely my top choice for most rookie coders. That’s because the basics of Ruby are easier to learn than some of the other choices in this list.

Ruby is a relatively “young” programming language. It was developed in the late-90s and became popular only in the last decade or so. The focus of Ruby (and Rails) is on streamlining many of the nitty-gritty processes that other languages force you to customize and code at every step.

This means that for beginners, you can get farther, faster. If you follow along with some common tutorials, like Michael Hartl’s Ruby on Rails Tutorial, or the One Month Rails program, you’ll be able to get up and running with full-service web apps in just a few weeks.

Many popular web applications, include mega-giants like Twitter, built their sites using Ruby on Rails.

Python

Python is another popular scripting language. Like Ruby, the basics of Python are fairly easy to learn, but the disadvantage is that the integration with building a live web-application is not as seamless as the connection between Ruby and Rails.

Python is a great choice for a beginner if you’re interested with playing around with a programming language, but aren’t trying to put up a web application immediately.

For this reason, Python is often taught by universities in an introduction to programming course, where the focus is on learning the fundamentals of programming through command-line applications, not putting together websites.

Java

Java is one of the most widely used programming languages. It’s use grew exponentially throughout the 90s, and because of this, many of today’s software systems are still based around the Java language.

If you’re going to be a professional developer, you’ll probably want to learn either Java or C eventually, but I can’t say it’s the best choice for beginners.

That’s because the learning curve with Java is fairly steep, and there’s a lot of configuration and semantic details that could easily throw a beginner off track.

C, C+, C++, and Objective-C

Like Java, the C languages are extremely popular, and underpin many software systems, but they’re not the easiest route to learning to program.

C languages continue to be extremely popular, and if you have a desire to build native iPhone apps, Objective-C is a must-know.

R, Matlab, and Octave

Last but certainly not least, this group of languages is used primarily for programmers and systems that rely on intense and complicated mathematical calculations.

Generally not used as a first language, these are matrix-based systems that are good for programmers interested in artificial intelligence, probabilistic analysis, and other Big Data, NP-Hard or NP-Complex algorithms, where small differences in processing speed and algorithmic intricacy can make a huge difference in the program’s efficiency.

The same tasks, language choice often comes down to programmer preference, and/or ease of use/appropriateness of a language to complete a given task more efficiently than another.

When you talk to developers, many can be dogmatic about their own preferences, and argue that language or framework X is better than language Y for a thousand reasons.

A good friend and technical project manager once put this most succinctly:

“Language choice is like religion. Everyone’s evangelical about their own choice, and no one can definitively prove that any one is better than the other.”

Why All Programming Languages are Created Equal…Sort of

The first and most important thing to know about choosing a language is that it’s not a question of what any one language can do that another can’t.

That means that all languages fundamentally have the same limits and abilities. That said, every language has it’s tradeoffs, and some languages are better suited for certain types of calculations and processing than others.

Turing Completeness

turing completeI’ll spare you the mathematical details, but this is a concept that was proved by Alan Turing early on in the life of computer science.

Basically, there 6 primary operations that underly every single calculation performed by programming languages.

All modern day programming languages can complete each of these 6 actions. While this may seem like a small number of actions, it represents what all complex mathematical tasks can broken down into.

To give a simple example, think of the concept of adding. At first glance, you might think of addition as distinct from subtraction or multiplication. But, subtraction is just the addition of a negative number, and multiplication is simply repeated addition of the same number. (3×2 = 3 + 3; 3×4 = 3+3+3+3, etc).

When you start to think about how these tasks can be broken down, you can realize more complex relationships. Exponents, for example, can be broken down into multiplication, and multiplication is just repeated addition.

The point is: given the 6 basic mathematical tasks, any coding language can accomplish all of the same functions as any other.

Languages Are Like Religion

lisp religionBecause languages can fundamentally achieve the same tasks, language choice often comes down to programmer preference, and/or ease of use/appropriateness of a language to complete a given task more efficiently than another.

When you talk to developers, many can be dogmatic about their own preferences, and argue that language or framework X is better than language Y for a thousand reasons.

A good friend and technical project manager once put this most succinctly:

“Language choice is like religion. Everyone’s evangelical about their own choice, and no one can definitively prove that any one is better than the other.”

How To Choose

The result, then, is that you should choose a language based on your own preferences and aspects you want to learn.

You can read more details about which languages are best suited for which tasks in this post.

Choosing a Front End Programming Language

If you’ve decided to focus on becoming a front end, as opposed to a back end developer, your choice of languages to work with narrows significantly.

Related Post: Understanding The Difference Between Front End and Back End Programming

Your First Step: HTML and CSS

html and cssAs a front end developer, it is absolutely essential that you have a firm grasp of both HTML and CSS.

Many newbies confuse the two, so it’s important to understand what each is used for.

HTML, which stands for HyperText Markup Language, is a universal language used across the web, and is used to give structure to web pages. The basics are incredibly simple to learn, and you can probably master it in just a few days.

The confusion comes because HTML, by itself, is not used to determine the appearance of a web page. For this, most websites use CSS.

CSS is a styling language, and allows you to define elements of a page’s look and feel. This is integrated closely with the use of HTML tags, so it’s important to first understand how HTML functions, and then work on incorporating CSS into your page design.

Academically, you can understand the basics of CSS fairly quickly, but incorporating good design into your pages is something that takes a lot of practice and experience.

The Second Step: Choosing a Javascript Framework

javascript frameworksOnce you have a firm command of both HTML and CSS, you’ll want to move on to learning javascript, using one of the popular frameworks.

Javascript is a scripting language that operates on the client side, as opposed to backend languages, which operate on the server side. This means that when a user loads a webpage, the website loads any necessary javascript components into the user’s browser, so they’re available to execute on command, without loading the page.

Because of this, the use of javascript frameworks has become increasingly popular over the last few years, since they provide for a fast and seamless user experience.

To be frank, it doesn’t really matter which javascript framework you choose. Like so many issues surrounding language choice, there are tradeoffs to each, but most can accomplish all of the same functionality.

As a beginner, you don’t need to worry about why one framework is better than another. Once you learn one, you’ll be able to more quickly expand to others should you decide to change.

I recommend you begin your work with jQuery, which is a simpler, slimmed-down version of javascript. This will help you accomplish more faster, and build the confidence and knowledge that will allow you to expand to the more complex frameworks.

Some of your other options you might then consider are:

  • Angular.js
  • Backbone.js
  • Ember.js
  • Node.js

To learn more about any of these Javascript frameworks, consider using a program like Code School or Thinkful. You can check out my Code School review and Thinkful reviews for more details.

Don’t Feel Overwhelmed

I know that this post seems like it’s throwing a ton of information about how many languages and frameworks you need to learn.

I really want to encourage you not to feel overwhelmed and just take things step by step. Start with HTML and CSS, and then worry about Javascript. Each step you take will make the next step easier, and after a few months you’ll be able to switch seamlessly back and forth between different options.

Front End vs. Back End Programming Languages

One concept that confuses many beginners interested in learning to code is the distinction between front end and back end programming.

In this post I’ll outline the main differences between the two, and how to decide which is right for you.

Understanding the Difference between Front End and Back End Programming Languages

Front End Languages

front end programming languagesThe term front end refers to languages and frameworks that deal with client-side applications.

Basically, you might think of these languages as the languages that represent the user experience side of the equation.

While recent years have seen increasingly complex programming logic going into javascript applications, in general front end languages do not carry a lot of “heavy lifting.”

They’re not concerned with how data is stored or results calculated, and instead focus on how that information is delivered and presented to a user.

Because of this, front end languages, as a whole, tend to involve less complex math and focus more on incorporating design elements into web-applications.

Back End Languages

backend programming languagesBack end languages, on the other hand, form the backbone of the more complex programming processes.

This includes everything from data encryption and storage to detailed mathematical calculations and analysis.

In general, back end languages will get a request from the front end language, perform the task, and then return the solution or other deliverable back to the front end language.

Which Is Right For You

Choosing which side to focus on is an important decision, since it will largely determine the direction you take with your programming career or hobby.

Back end languages tend to have a higher barrier to entry, and require more time to learn and master. They focus more on mathematics and algorithms to accomplish their purpose, and require a desire to focus on algorithmic problem solving.

Front end languages, on the other hand, tend not to require complex math. While you can (and will) implement algorithms using Javascript, in general the front end programmer focuses more on the implementation of design and user experience. You need a detailed eye regarding how graphics and information are presented.

There is no one right answer, and the overwhelming majority of development teams have individuals that specialize in each field, since there’s an inevitable need for a seamless integration between the two.