Ultimate Guide To Programming Languages
Ultimate Guide To Programming Languages
FIREHOSE
INTRO
If you want to become a Full Stack Developer, you need to decide which programming
language youre going to learn. And if youve done some research and looked into the dozens
of web development technologies out there, youve probably noticed two things:
1.
2.
But where exactly do you start? And how do you separate what matters from what doesnt?
In order to figure out which programming languages are relevant for your goals, you need to
understand all technologies that go into creating modern web applications.
This guide will help you understand everything thats out there for you to learn; what you
should learn, when you should learn it, and what you should start learning today to put
everything in motion. By the end, youll understand how to navigate the ever-changing
industry while focusing on the things that actually matter. Well cover 10 main sections.
THEFIREHOSEPROJECT.COM
TABLE OF CONTENTS
1. THE SKY-HIGH LOOK AT MODERN WEB APPLICATIONS
WEB APPLICATIONS
DATABASES
FRONT-END
BACK-END
2. FRONT-END LANGUAGES
HTML
CSS
JAVASCRIPT
VANILLA JAVASCRIPT
JQUERY
3. DATABASE SYSTEMS
RELATIONAL DATABASES
NOSQL DATABASES
USAGE IN THE REAL WORLD
4. BACK-END LANGUAGES
RUBY
NODEJS (JAVASCRIPT)
PHP
PYTHON
C++
JAVA
.NET (C#)
5. WEB APPLICATION FRAMEWORKS
EXPRESSJS
DJANGO
6. FRONT-END FRAMEWORKS & TECHNOLOGIES
ANGULARJS (NOW ANGULARJS 2)
REACTJS
EMBERJS
7. PROFESSIONAL DEVELOPER PROFILES
SOFTWARE DEVELOPER AT A BIG CORPORATION
WEB DEVELOPER AT STARTUPS AND MID-SIZED COMPANIES
APP DEVELOPER
9. HOW TO BECOME AN ADAPTABLE PROGRAMMER
WHAT ALL IN-DEMAND PROGRAMMERS KNOW
SKILL PROGRAMMING
ALGORITHMS, DATA STRUCTURES, BIG OH NOTATION
TEAM EXPERIENCE
KNOWING MULTIPLE PROGRAMMING LANGUAGES
THEFIREHOSEPROJECT.COM 3
Facebook, Twitter, Instagram, Pinterest, and Yelp are examples of web applications.
DATABASES
Databases store the information that powers our application. Our web
application will connect to our database in the access data. There are many
different types of databases and ways to store user-generated data.
FRONT-END
The front-end of our web application is very close to the things that users see. Frontend code is usually very visually-oriented. Changing the code at this level will impact
what users see.
BACK-END
Back-end code is the glue that allows us to take abstract things, like user requests
for a specific page on the internet and database connections, and split things out in
a format that is visually processable (front-end). In most cases, its where the most
complex logic lives.
Full-stack developers are expected to understand each of these layers. Each layer
also has a variety of different technologies that can be used.
Now, lets do a deep-dive into each of the layers, talk about the problems they need
to solve, and work through the different solutions (technologies) that are out there.
Once we fully understand the problems, well be able to make a decision about the
correct tool for the job.
THEFIREHOSEPROJECT.COM 4
2. FRONT-END LANGUAGES
Its 2016, and people expect the web applications that they visit to have slick user
interfaces. By learning things on the front-end, youll be able to build the type
of fluid interfaces that are in high demand. This is a skill that all web developers
need to have. Heres exactly what you need to know if you want to become a web
developer.
Web browsers (like Google Chrome, Internet Explorer, Safari, etc) understand 3
different coding languages. Front-end code encompasses all the languages that
browsers understand.
HTML
The building block of the internet. Its a way to code up
documents in ways that web browsers understand. Every
single website on the internet uses HTML in some fashion.
CSS
Describes how the page should look. Its the lipstick of the internet.
JAVASCRIPT
Sometimes youll want to change the contents of a page or visual representation of a
page without doing a full page refresh. In order to do this, youll need to write code that
runs inside a web browser. If you want to be a full-stack developer, you need to know
the technologies that web browsers know how to run: JavaScript, HTML, and CSS.
Lets walk through how JavaScript actually works inside web browsers.
VANILLA JAVASCRIPT
Modern web browsers all support the ability to modify the content on the page and
use cool ways to get data from different locations without reloading the page using
JavaScript.
The Javascript that web browsers understand required many lines of code to do very
simple tasks. To get around these shortcomings, an awesome developer implemented a
way to make JavaScript easier for web developers. He called it jQuery.
JAVASCRIPT _ JQUERY
Most modern web applications use jQuery because it makes JavaScript development a
lot easier. jQuery essentially allows you to write just a few lines of code to achieve the
same thing that would take dozens of lines of code without it. With a little bit of jQuery
and JavaScript, you can implement a lot of custom functionality that runs in the browser.
THEFIREHOSEPROJECT.COM 5
3. DATABASE SYSTEMS
Users expect web applications to keep track of a certain state of the application.
If you were using your computer, you would use files to store information. With
web applications, we save information that users provide in a database. There
are many different types of databases, and if youre going to be a web developer,
youre going to need to learn how to use them. In this section, well go through a
rundown of the different database options out there.
Web applications generally need to store user entered data in some way.
Instead of storing data in files, web applications store data into a database that
allow users to add and extract data from the database.
There are two main categories of databases. Relational database and NoSQL
databases. Both have pros and cons.
RELATIONAL DATABASES
Relational databases use a language called SQL (pronounced sequel), which is the
Structured Query Language as a protocol to deal with the database. There are several
implementations of SQL that are generally used in production: MySQL, MariaDB,
PostgreSQL, Oracle, Microsoft SQL.
You can connect to these databases with almost any programming language pretty
easily. Although each implementation has slight quirks that cause it to be slightly
different than the other implementations, the implementations are basically identical
with small changes that are pretty easy to pick up.
Once you learn one implementation of SQL, you should be able to be comfortable
in other ones. Its much like learning English in the UK or the US, there are some
differences, but the fundamental language is usually the same.
When you think about the data, it will be stored in a manner similar to an excel sheet:
there are tables in the database, which has columns and rows. And similar to keeping
your excel columns understandable, SQL requires you to specify the columns headers
up-front.
SQL is a tried and true database and is used by many modern web applications.
Yahoo! uses PostgreSQL extensively, and Google and Facebook both use
MySQL.
One of the big developments in writing database driven applications is known as ORMs
or Object Relational Mappings. Systems are in place to convert regular code that is
written in a programming language to the exact SQL commands that are needed to
communicate with the database. ORMs for SQL databases exist in most programming
languages.
THEFIREHOSEPROJECT.COM 6
ORMs make it very simple to get the data you need out of a database, or push additional
data into the database. This means instead of writing SQL code, which is written in
a different language than the other code in your application, the code that you write
will be in the same programming language that youre already used to and will be a lot
easier to read than the SQL commands the database actually needs in order to run.
NOSQL DATABASES
NoSQL databases are a relatively new phenomenon. Instead of having a defined
structure, they allow you to have lists of databases and push anything into the list
regardless of the structure.
Inconsistencies can exist in how the data is stored. Its generally considered a bad idea
to do so. Youll generally want entries to have a consistent structure, but the NoSQL
database is flexible and will accept anything.
There are a number of different NoSQL databases: MongoDB, CouchDB, RavenDB,
Redis.
Currently, we dont really have a standard for how data should be stored inside of
NoSQL databases, so each NoSQL database will be considerably different. That
means if you learn one type of NoSQL database, it wont translate well to any other
implementations.
MongoDB is one of the most popular implementations of NoSQL databases. It has a few
features that allow for some interesting properties while scaling up an application to
millions of users with hundreds of millions of database requests (or building applications
at so-called WebScale).
Mongos features make it a good solution for ad servers and other applications that
need to handle hundreds of millions of requests a day. On the flip side, it makes it a
poor choice for things like marketplaces, eCommerce sites, or other sites that handle
less than 10 million requests per day (which is most web applications).
THEFIREHOSEPROJECT.COM 7
4. BACK-END LANGUAGES
When youre building any web application, you need to have a server to power and
make it dynamic. The server that powers our web application will run on a specific
technology and will likely perform most of the work that the web application needs
to do. Because of this, one of the most critical components of a web developers
toolkit will be a programming language. The issue is that there are so many
programming languages out there, and picking the right one can feel intimidating.
In this section, well give you a rundown of key programming languages and help
you understand what you need to know.
Programming languages and web frameworks will allow you to write code that
will allow you to store information in a database, retrieve the data, and determine
what a user should see (like which avatar should be in the top-nav of the website).
First, you need to pick a programming language to use inside a server. Each
programming language has popular web application frameworks as well.
A POPULAR CHOICE
FOR A BACK-END
LANGUAGE IS RUBY
NODEJS (JAVASCRIPT)
You can also use JavaScript in the back-end as well. When JavaScript is used in the
back-end its called NodeJS. NodeJS is exactly the same as JavaScript, except it
indicates that it is JavaScript that is not running in the front-end.
JavaScript has a number of complicated language features that make it a good
choice to learn once youve mastered a different programming language.
Things that make JavaScript hard to learn as a first language are anonymous
functions, callbacks, prototypical inheritance. Complicated topics like these are
deeply ingrained into JavaScript, so even to understand basic code you need to
understand a few very complex computer science topics.
THEFIREHOSEPROJECT.COM 8
Its much easier to learn JavaScript after becoming a competent programmer in other
languages first.
PHP
PHP came out around the same time as ruby, and saw a lot of early success. Now,
however, companies that run PHP code are generally using older technologies instead
of cutting edge ones. PHP is very polarizing. People either love it, or people think that its
an old, dying language.
Wordpress is built off PHP, which has played a significant role in its success. Because of
this, many PHP developers are hired to modify PHP blogs. These jobs can be interesting
at first, but eventually, they become really mundane. Working in Wordpress can be
boring because it doesnt give you the opportunity to use creative problem solving and
do real programming.
PYTHON
Python has become popular in data science and scientific computing. Its used by
companies like Google and Yahoo!
Pythons syntax looks very familiar to Ruby, so if you learn one language its pretty easy
to pick up the other. Theres one aspect of Python that developers like to discuss, and
its that it is incredibly white space sensitive. This means that the space character needs
to be perfect for your code to work. People tend to either love this or hate it.
C++
C++ is a low-level system language that requires developers to really think about the
hardware level of the code. Programmers working with C++ need to think about where
data gets stored. This is called memory management (sometimes pointer arithmetic),
and its very difficult to learn. But once you understand it, you understand how
computers work at a very deep level.
C++ is based off of the C language, which is very similar to C++. Most other programming
languages are build in the C language. However, there really arent that many jobs
for developers working with C or C++. Still, its an important part of the programming
language discussion.
JAVA
Java is the language that backs much of the non-consumer facing aspects of large
corporations.
THEFIREHOSEPROJECT.COM 9
Java runs on top of the JVM, which is the Java Virtual Machine. The JVM is incredibly
robust and scales very well. Javas syntax is heavily based on C++, but it provides
garbage collection with C++ style syntax. This generally makes Java easier to write and
work with than C++.
.NET (C#)
.NET (C#) is used a lot by big companies that build desktop applications. C#s syntax
is very similar to Javas syntax. Theyre basically identical. .NET has an awesome IDE
(integrated developer environment) and visual studio. In general, it makes developers
lives easier.
There are some other specialized languages that are used by developers who are very
specialized, but well get into those later on in this guide.
That was a lot. But try not to be intimidated by the number of languages out
there. Once you learn a first language, youll find that learning your additional
languages will come so much easier. So dont worry about picking an incorrect
language, it wont set you back too far. Your primary goal should be to just get
started and pick something that will get you coding.
Well get more into how exactly to do that in the last section of this guide. For
now, keep reading to get a rundown of web application frameworks.
THEFIREHOSEPROJECT.COM 10
The main web application framework that developers are using in 2016 include:
RUBY ON RAILS
Ruby on Rails is a web framework that focuses on developer happiness. Its core principle
is Convention over Configuration. What does this mean?
Even though there are many ways you can do a particular thing, there is a certain way
that the ruby community will deem correct. If you do things the correct way, your life
will be easier. Youll find that once you understand how one application works, youll
notice that other applications that are written by other developers will be organized in a
remarkably similar manner.
EXPRESSJS
ExpressJS is a web framework that runs on NodeJS. Its an un-opinionated web
framework, meaning that it doesnt make your life easier if you do things the right way.
Overall, remember that once you learn one web framework, youll be able to learn other
frameworks very quickly. The hard stuff to learn about web application development
applies to all frameworks equally: you need to understand databases, REST, HTTP
requests and more.
If youre good at Rails, youll be able to pick up Node/ExpressJS very quickly. If youre
good at ExpressJS, youll be able to pick up Rails quickly.
DJANGO
Django is an MVC framework, very similar to Ruby on Rails. A ruby on rails developer
could pick-up the basics of Django fairly quickly and the reverse is true too.
There are additional frameworks that run inside web browsers. Keep reading to
learn about what developers call front-end frameworks.
THEFIREHOSEPROJECT.COM 11
REACTJS
React is a cutting edge framework that was released
by Facebook. It uses an advanced concept of flux to
manage the information that can change during the
lifecycle of a web page. React is really cutting edge
and is constantly changing. New React technologies
keep coming out each day.
FRONT-END
FRAMEWORKS ALLOW
DEVELOPERS TO
BETTER ORGANIZE
THEIR CODE.
EMBERJS
Ember is a technology that is built using ruby on rails philosophies (convention over
configuration, etc.) and is intuitive for rails developers to learn. Ember is built by the
same people who are core contributors to the rails framework and this framework has a
bright future as well.
Front-end frameworks overall allow developers to better organize their code, however,
its unclear which frameworks will be most popular in the future and many developers
debate which framework is best.
Now that weve covered a ton of the different technologies that developers are using, we
want to talk about them in the context of real-world developer jobs. Keep reading to learn
about the technology profiles of developers at different types of companies all over the world.
THEFIREHOSEPROJECT.COM 12
C#
Big companies that ask their dev teams to build Desktop applications that
run on Windows generally use C#. Its one of the go-to languages of
companies that are nervous about open sources technology and only
want to use technology that is backed by a big player like Microsoft.
VB.net
Its common in the financial services industry for developers to use Visual
Basic.NET.
THEFIREHOSEPROJECT.COM 13
Python
Python is a coding language that has become popular in data science and
scientific computing. Its used by companies like Google and Yahoo!
JavaScript
APP DEVELOPER
Developers working on iPhone apps typically work with these languages:
Objective-C & Swift (and now Swift 2)
Developers building Android apps use Java and the Android SDK.
All of that said, the individual technologies do not matter too much.
Programming is about learning new technologies, languages, and frameworks
every single day. The key is to learn one coding language really well, because
once you do that, learning additional coding languages becomes a lot easier.
Keep reading on to the next section to figure out what you should be learning and why.
THEFIREHOSEPROJECT.COM 14
EVALUATE
TECHNOLOGIES
BASED ON MERITS,
NOT HYPE.
Lets think about a practical problem that you could face outside of the coding world.
First, we could use a wide variety of different tools. We could use a saw to cut
the wood, nails to connect the pieces of wood, a hammer to drive the nails
through the wood, and wood glue in places that arent appropriate for nails. A
drill could come in handy too, depending on the blueprints that were using.
2.
We could just use a hammer. Instead of cutting the wood with a saw, we could
use the opposite side of the hammer to split the pieces of wood into smaller
pieces. We could connect the pieces of wood with nails we drive into the wood
with the hammer. We could avoid using blueprints because those would just be
another thing wed have to learn to use.
THEFIREHOSEPROJECT.COM 15
As someone starting out, it can be difficult to determine the right tool for the job.
To do so, you need to understand the problems at hand and the problems that
each tool solves. You cant do this by chasing the hot technology of the week.
Instead, you need to figure out how to apply the different technologies in your
developer toolkit at the right time to solve the different problems that youll face
as a developer.
In other words, you need to learn how to become an adaptable programmer.
Keep reading to learn about the steps you need to take to make that a reality.
THEFIREHOSEPROJECT.COM 16
Just like a skyscraper, its the foundation that allows you to eventually reach incredible
heights as a programmer. This is what interviewers really care about. They know that if
you have a strong foundation in place, youll be able to learn whatever is thrown at you.
Lets break down the skills that you need to acquire to become a coveted adaptable
programmer.
LEARN HOW TO BE GOOD AT SKILL PROGRAMMING IN A RAW
PROGRAMMING LANGUAGE
You can learn many technologies (Rails, jQuery, Angular, ReactJS, etc.) that will provide a
certain way to solve various web development problems. For 90% of the problems youll
face, youll be able to find an elegant solution that is easy to solve using a framework.
These are problems that can be solved with about 1 line of code.
These tools are awesome, and make our lives as developers so much easier.
THEFIREHOSEPROJECT.COM 17
The remaining problems (the other 10%) are problems that arent easily solved with
these tools. Although these make up only a small percentage of the problems youll face,
youll often have to write dozens, even hundreds of lines of code, to do the tasks.
Being able to use a certain framework is valuable, but being an adaptable programmer,
who is able to take any problem and solve it without the use of a cookie-cutter solution,
is what is actually in demand. The best way to do this is to pick one programming
language at first and get really good at it.
Arrays
Hash Tables (aka Dictionaries)
Linked Lists
Trees
Stacks
Queues
Priority Queues
These concepts allow you to properly communicate like a developer. Theyre also often
the right tools to use for many problems.
THEFIREHOSEPROJECT.COM 18
Data structures transcend all fads. Learning them is critical to becoming an adaptable
programmer.
Now that weve explained what matters and what you need to learn to become
an adaptable programmer, lets jump into what you can start doing today to put
everything in motion.
THEFIREHOSEPROJECT.COM 19
General hype
Number of Google search results for the language
Average starting salary
THEFIREHOSEPROJECT.COM 20
THEFIREHOSEPROJECT.COM