Goals!

What Programming Language Should I Learn First?

Ever wonder what programming language you should learn first?  I’ll review the common industries and common problems that people solve with different languages to help you figure out which is the right language for you.  I’ll also review the average salaries, and which language to choose for the highest paying salary.

Table of Contents

I. What problems are you trying to solve? Building a web site? Getting a job? Figure that out first.

II. If you’re going to start learning how to program, you better know your way around a computer.

III. Do you even need to code? Try to use off the shelf software first.

IV. Figure out what languages are used in different situations.

V. Figure out what languages are used in different industries.

VI. If you’re looking for highest paid, look towards the industry not the language.

VII. Stuck, just pick one!

VIII. Still don’t know? http://www.wfplsiu.com/

Common Questions

I. What programming language should I learn first?

A common question I see all the time in programming forums is ‘What programming language should I learn first?’. However, that’s the wrong question to start with. The more appropriate question is, ‘What language do I need to do ‘X’?’ >A programming language is just a tool designed to help solve a specific problem domain and there are literally THOUSANDS of programming languages. Each language is designed to solve a particular set of issues and some may be absolutely the WRONG language for a given problem domain. Most of the language syntax are very similar but do different things based on the problem domain. Once you define the problem, then you can begin to look at the various languages that can help you solve that problem.

This is an important point for many beginner software engineers, ‘Find the right tool for the job’.

II. Pre-requisites

Before we begin, while some may say ‘Just jump in’. I think there are a few pre-requisites for any new software engineer.

1. You need to feel very comfortable navigating the operating system of your choice. You should understand the basics of the file system structure (creating, deleting, updating) files.

2. You should be able to install applications on the operating system, and troubleshooting why that application isn’t working. IE. You should feel comfortable googling the error message and finding a solution online, AND implementing the fix.

3. You should know command line basics as well as navigating around using the command line.

If you’re not comfortable with some of this, getting started may be a frustrating experience. Sometimes things just don’t work! There are times when simple things like just installing the packages for a language might not work. You’ll need to dig around the operating system to figure out what was going on, trying to understand a cryptic error message. If this doesn’t seem like something that you feel comfortable doing, then you should probably stop now!

III. Do you even need to code?

So you’ve decided to continue, great! Before we talk about some programming languages and their standard use-cases and industries, I’d like to ask, ‘Do you even need to learn how to program?’. There are some instances, where you may not really even need to learn how to program. This generally includes people who just want to set up a blog, e-commerce site or entrepreneurs that want to build a new startup idea.

For bloggers and e-commerce entrepreneurs, I’d recommend using off-the-shelf software instead of trying to learn the ins-and-outs of a programming language. Becoming in proficient in a language doesn’t guarantee that you’ll be able to even build a site with the language. If you want to build a web-site, use technology that exists already. Time is the most important commodity, and getting to market early and fast is the more important than learning how to program.

For entrepreneurs, this point is especially important. If you’re a non-technical founder, your area of expertise should be the domain, and not the technical details of the implementation. While there are stories of founders learning to program and becoming billionaires (Instagram), those are just the outliers. Most of the time, it’s better and more efficient to find an engineer to team-up with or a vendor to help build your idea.

This is a common dilemma, should we buy or build the solution? Build it if you have the time, buy it if you don’t.

IV. What languages use in common situations?

A) Building a web site.

To build a website, the first thing you’ll need is HTML/CSS/JavaScript. Every browser interprets those elements and it’s what other languages will ultimately spit out. After you learn the basics of HTML/CSS/JavaScript, you’ll want to figure out to make web pages dynamic. Meaning, you’ll want to know how to make the website respond to a user’s interaction.    Some common languages used for dynamic websites are: PHP, Ruby, JavaScript, Python, C# and Java.

B) Building a mobile/desktop application.

Choosing a language for mobile and desktop applications largely depends on the platform that you’re targeting. For the Apple family of products (iPhone, iPad, Macs, AppleTV) your common languages are Obj-C, Swift and some JavaScript. For Android devices it’s primarily Java. For Windows development, it’s primarily C#.

C) Building a desktop/mobile game.

Largely, game development is primarily in C++, or for windows platforms, it’s C#. There have been attempts to build games using JavaScript in recent years, but for the really advanced games that you see on desktops and consoles, C++ is the way to go.

V. What languages are used in specific industries?

A) Small Medium Sized Businesses

Most of these business are looking for web-development. These sites are limited to very simple websites. They’re usually on a running a PHP based Content Management System (CMS) or a hosted application (Wix, Shopify, WordPress.com).

B) Startups

Typically startups use the language PHP, Ruby, JavaScript, and Python. It’s not very common for startups to use C# or Java. The lack of use for C# came from the lack of use of Windows as an operating system for servers. Most servers are a flavor of Linux and until recently C# applications didn’t run on Linux. Java wasn’t generally used because other languages such as PHP were much easier to get started and functional in. There are definitely startups that use C# and Java, but it’s still pretty uncommon to see.

C) Large Corporate

Having worked with large Fortune 500 clients, I can definitely attest to their affinity to use C# and Microsoft products. In addition to C#, you’ll see large corporates work primarily in Java. Some Fortune 500 are slowly introducing the scripted languages (PHP, Ruby, JavaScript, Python), but by-and-large they’re using C# and Java. I believe this was largely an extension of corporate customers looking for supported eco-systems, like Windows for their servers. To develop on Windows systems, you need C# and Java.

D) Finance

One exception to the large corporates are the finance companies. Depending on the type of finance industry it is, you’ll largely see Python, C++, Java, C#, Scala and R.

VI. I just want to get $$$$

Most of the time, find a language doesn’t really help you find a job that will pay you the most. The industry is much more important than the specific language. If you’re in an industry that is on a down trend, then the company won’t have money to pay you, regardless of what language you know. Look for high paying industries (finance and tech).

VII. Now, pick a language!

By now you’ll have narrowed it down to a handful of choices. Now it’s time to pick one. If you’re looking for a job, the first thing I would recommend is to make sure that you’ll be able to get a job in your area. Search for jobs that require that language. Can’t find any? If you’re not willing to move, then look to see the gigs available on a freelancing website. If there aren’t any, then I recommend find a different language if employment is your goal.

If you’re not looking for a job, then just pick one to begin. As I mentioned earlier, most languages are very similar in the high level concepts, but have their own idiosyncrasies. You won’t learn those idiosyncrasies until you start really using the language. So just pick a language and begin!

VIII. Still don’t know which language to use?

At this point, you should have an idea about which languages you need for your own situation. If you still have a problem try using this tool: http://www.wfplsiu.com/

Common Questions

A) Should I learn more than one programming language at once?

Definitely not! You should learn how to use each language on its own and then practice making things with the language. Once you feel like you know the language, pick some easy projects to do with the language. Once that’s complete, you can learn a complimentary language to help you move toward your goal. An example would be to learn HTML and get comfortable with the syntax of HTML. Once you understand HTML, you could move onto CSS to understand how to style the HTML. Once that’s complete, you would learn some JavaScript to make the elements on the page seem more dynamic. After that’s complete, you would learn a server-side language like PHP, Python, Ruby or JavaScript for the backend.

B) Are some languages harder than others?

Some language concepts are not necessarily harder, but they sure can be different. Some languages have different concepts that may force you to think differently about a problem. The language itself might even force you to think differently. That difference in thinking may be the biggest barrier to the language. Just like with learning a spoken language, the only way to get better at the language is through repetitive use of the language. Eventually, using it enough will give you the insights you need

C) But someone said ‘XXX’ is the best language! or someone said ‘XXX’ is the worst language!

Do you take everyone’s word as gospel? For some reason, engineers always feel their preferred language is the best and other languages they’ve used in the past are horrible. To be honest, their opinion doesn’t matter as long as you’ve determined what the problem domain is and you know that this specific language is the best choice for that given problem.

E) What is the difference between C, C++, Objective-C, and C#?

One of the early languages was C, C++ came after, adding some features to C. Objective-C came from it’s own set of ideas as to what should have been added to C. C# is similar to Microsoft’s version of Java, a language that was created to address the short comings of C++.

F) Are Java and JavaScript the same?

Java is the same as JavaScript as grape is the same as Grapefruit. The language syntax for Java and JavaScript are very different. Each are also used in very different situations.

G) What computer do I need to start programming?

For most languages you can use a four or five-year old computer to start programming. The latest state of the art computer isn’t needed.

H) Can I earn lots of money programming?

Salaries for engineers are definitely higher than other jobs. Here are the average salaries for some languages (from indeed.com):

Java developer $102,171 per year

C developer $95,778 per year

Swift developer $115,418 per year

Python $116,010 per year

PHP $86,343 per year

JavaScript $110,107 per year

C# developer $92,508 per year

Generally the higher end of the salary curve max out at about $200,000 a year.

I) Can I get a programming job without a Computer Science degree? Or without any degree at all?

You can definitely get a programming job without a computer science degree! That’s the beauty of programming, you’re entirely evaluated by your knowledge and not by what school you went to. The larger your body of work, the more likelihood that you’ll get noticed by a company. So keep working on different projects and keep adding those projects onto your resume!

J) How do I break into the industry and get an entry-level job?

There is definitely a chicken-or-egg problem with finding a job. Most entry-level jobs require at least 2 years experience, but you can’t get work experience without having an entry-level job! So how do you get around the requirement? Find projects to do that interest you. If you’re trying to work at a startup, build an application that uses the data from that startup. Or better yet, build a clone of the startup’s website using their language!