We Live in an increasingly digital society.
As of 2017, there are approximately 3.58 billion internet users worldwide.
This means that nearly half of the 7.6 billion people who live on planet earth have access to the internet, and they
use it for everything from entertainment to education, from communication to commerce, from keeping up to date on
current events to keeping up with the joneses in the business world. In fact, for many of us the internet is the
first (and sometimes the only) channel we use when reaching out to interact with the world in all of its complexity.
Want to skip to the sections that interest you the most? Who are we to tell you how to live your life?
You're free to jump to any of the specific sections right away.
So where are all the coders?
Despite the widespread application of computer code for web development, coders are still a relatively rare breed.
For one thing, the number of U.S. college students who pursue degrees in computer science has been hovering around
2.5% since the early 1980s.
Pretty low, given the ever increasing demand for programmers.
Why is this?
Well, it may have something to do with the money and time investments often associated with earning a computer science
degree. But perhaps even more than that, many prospective programmers get scared away by the complexity of it.
After all, learning code is essentially the same as learning a new language — several new languages, actually.
The reality is that you don't have to be a C.S. major or a tech wiz to learn how to code. Becoming web developers,
despite its complexity, is something that anyone can learn, as long as they have the passion and are willing to
with only 400,000 qualified developers to fill them,
those interested in acquiring in-demand career skills can certainly benefit from having web-development and coding on
their résumé, regardless of industry.
According to U.S. News & World Report,
certified professional web developers earn an average salary of $64,970, nation wide.
For many professional coders, demand and salary are only part of the equation. The chance to meet and overcome new
challenges on a daily basis, to conceptualize and introduce personalized artistic solutions, make it a fresh and
exciting career choice that never gets dull.
But perhaps even more than that, the simple truth is that in 2017 our global society is increasingly becoming a digital
society. And just as the ability to read and write words on paper was once a special skill held by a select few,
in the coming years and decades, coding ability is going to see a transition from optional to essential. In short,
learn programming, learn how to code, and you’ll be learning the keys to your future.
Interested in expanding your marketable skillset or even just at getting a jump on the trend? Are you asking yourself,
how does web development work? If so, get ready to take your first steps into a larger (digital) world, with the
2018 DevMountain Beginner's Guide to Coding. This guide will provide you with the foundation you need to begin
your adventure in web development, and lead you from being a beginner web developer to an intermediate web developer.
Again, you can learn a lot from simply investigating other sites, but for a more annotated insight, check out the most
current Stack Overflow Developer Surveys.
These surveys bring together professional developers’ insights into technologies, coding preferences, work habits,
user trends, and more.
Stack Overflow survey data can provide concrete information for you to use while you plan the structure of your site.
Additionally, Stack Overflow functions as a sort of forum where programmers and developers of all skill levels can
come together to share tips and tricks, and crowdsource solutions to potential problems. In order to submit or
answer questions, you’ll need to sign up for a free account, but non-registered users can still browse through
topics and answers using a simple search function. And given that the average response time is 10 minutes, this
resource may be essential in times of emergency.
Beyond Stack Overflow, various other programming and developer communities can be found on the web. Similar sites
include Experts-Exchange, GitHub, Toptal, Developers Forum, and SAP Community Network (which maintains a strong
focus on business coding). Likewise, Youtube offers a number of channels to help you connect with the developer
community, while also providing easy-to-follow tutorials for specific coding tasks.
With these resources in mind, let’s talk about the coding languages themselves.
When a site is loaded into a browser from a server, certain client-side scripts run within the browser itself, allowing
the page to function normally without needing to maintain a constant connection with the server. The front end
manages all user requests and interactions in a relatively contained, local bubble.
And while early websites — generally consisting of formatted text with the occasional animated GIF thrown in for
good measure — required very little in the form of advanced front-end development, 2017 sites are much more complex.
Front-end programming languages need to be capable of playing videos, loading data from other pages within the
page, expanding and minimizing individual objects, incorporating mouse-over functions, and more. To accomplish
these tasks, developers generally depend on a few front-end programming languages.
When information needs to be exchanged with the database, front-end scripts facilitate this by sending requests to
The following are the most popular choices for developers working on client-side development:
Hypertext Markup Language
HTML5 (hypertext markup language) is the most recent version of the classic HTML code that has been in use since
the early 1990s. HTML5 is compatible and supported on all major browsers and platforms, making it particularly
well suited for presenting web content across a variety of devices. Its usefulness as a cross-platform coding
solution has also made it very popular in mobile application development. HTML5 functions as the backbone of
all front-end design, with other languages filling what could be termed ‘supplementary’ roles.
Cascading Style Sheets
CSS (Cascading style sheets) as a language is more focused on issues related to webpage design. CSS gives programmers
the freedom to create a visual aesthetic that can be adapted to any particular device, operating systems, or
screen-size. As with HTML5, CSS is compatible with all web browsers. Additionally, both HTML5 and CSS code can
easily be updated using the DOM (document object model), a platform-and-language-neutral interface that programmers
can access to change elements of a page directly, without having to refresh the page.
interactivity within webpages. And while its function remains essentially the same, the increased focus on site
to automate tasks within web pages, add animations, and include interactive features that allow for dynamic,
is continuing to evolve at a rapid pace. As a developer, it's an essential language to know. Some have even talked
In addition to being vital to front-end development, it is also so widely used in professional backend web development
can be used for backend development as well.
and change without forcing a page reload. It does this by keeping certain page elements separate from the rest
of the page, and exchanging small amounts of data with server-side programs behind the scenes.
Ajax makes it possible to incorporate autocomplete, autofill into form boxes, and other server-interactive actions
into a webpage, without the hassle of forcing a postback or page refresh.
If you’ve spent any amount of time researching coding online, you may have discovered that a number of non- and low-code
development platforms are available.
These platforms are called Content Management Systems (CMS).
There are many CMS out there.
many site-builder platforms don’t generally give you access to the original source code.
Some of the more popular CMS options include Wordpress, Drupal, Wix and Weebly. As previously mentioned, the promise
of these platforms is that users will be able to build working websites with little to no coding knowledge. But
while this is certainly an attractive possibility, there are a few things you should understand before committing
to a site-builder platform.
Site builders force you to build and maintain your pages on their platform, which creates a number of potential problems.
For one thing, anything built on such a platform stays on the platform. Should you ever decide to try to migrate
your site to a new location, you’ll probably have to rebuild it from scratch — many site-builder platforms don’t
generally give you access to the original source code. Some of the more popular open-source platforms (such as
Wordpress) do give you access to all of the code. That said, trying to migrate sites from these platforms to other
platforms is still a very difficult task.
Another factor to consider is that a non- or low-code platform will most likely be using the same security measures
for all of the potentially thousands of sites that it hosts, making it a tempting target for cyber criminals, possibly
compromising your site in the event of hijacking or data theft.
Lastly, recognize that “free” site development often isn’t free at all. If you’re not paying a fee to use a low-code
development platform, then you’ll be paying by allowing the platform to advertise on your site — because in most
cases, when all is said and done, it’s not really your site at all.
However some management systems, like Wordpress, are different, in that they just provide the free management software;
everything else belongs to you.
Hand coding gives you the power to create what you want, on your terms, without limitations.
Wordpress specifically is a powerful, reliable platform, supported by an active community. Still, if you are planning
on building a site with any sort of complexity to it, you’ll end up having to rely on various third-party plugins
to do so (which may or may not continue to function properly down the road).
Hand coding gives you the power to create what you want, on your terms, without limitations. You may be able to accomplish
a lot with a CMS but will never be able to build an advanced, truly custom and sustainable site with. So, with
that understanding, let’s take a look at the areas of your site you’ll be developing.
We've already discussed some (but certainly not all) of the available coding languages for back-end development. But
let's take a moment to go over the back-end development definition. Back-end web development consists of all the parts
that make up the server-side of your website.
The backend consists of three parts:
The database is responsible for storing, organizing, and processing information so that it is easily accessible
The server is essentially the computer (hardware and software) that powers the entire process and on which ‘lives’
the website, as well as the database itself. Servers are responsible for sending, processing, and receiving
files and data requests, along with handling security and encryption tasks.
Web-server applications help facilitate interaction between the front-end browser functions and back-end systems.
Together, these components combine to create a working foundation on which users can interact with websites.
In developing for the back end, programmers rely on certain core building blocks.
The first core building block is the logic code.
This is your core business logic, and generally consists of a library of code that the rest of the application can
draw from in order to complete assigned tasks. Think of it as a set of rules; it details exactly how objects will
interact, while also enforcing the methods by which those objects are accessed and updated.
The next core building block is data management.
Data management is directly tied to your database. Your database will likely either be type SQL (relational) or NoSQL
(document based). The difference between these two database types is significant. Relational SQL databases organize
data in a very structured, defined way. These kinds of databases offer a number of advantages — they are widely-used
and directly compatible with a variety of platforms, they fit naturally into many software stacks, and they’re
straightforward (users can add, delete, and update information with relative ease).
However, SQL can make scaling difficult. NoSQL picks up where SQL leaves off. NoSQL has no specific schema, and allows
users to effectively interact with large amounts of data, usually via the cloud. NoSQL allows for greater flexibility.
Instead of relying on heavily structured tables, NoSQL solutions are document-oriented. Data is stored in documents
that can be located without being defined by fields (as happens with SQL). There are many database engines, such
as mySQL, SQL Server, Oracle, MongoDB, Cassandra, or Firebase (to name only a few).
Hosting Your Own Site
Public Cloud Hosting
The last core building block is your hardware.
Will you host your own site or use a public cloud? Hosting your site will give you greater control, and they’ll be
no disputation over who owns the files and documents that populate that site. On the other hand, using a public
cloud is generally less expensive, and the cloud providers are responsible for all server maintenance, and may
also be responsible for security (although you may be handling security yourself).
The goal of back-end development is threefold:
To maintain data integrity, to support performance and scalability, and to ensure security.
To meet these objectives, developers often rely on a number of frameworks. Frameworks are software solutions that
provide tools and libraries designed to simplify the web development process. Standard development tasks include
authorizing users, communicating with databases, establishing security protocols, formatting output, and routing
URLs. Frameworks aren’t necessary for server-side development, they are highly recommended. Some of the most popular
frameworks for for backend developers are Phoenix, Express.js, Django, Flask and Laravel.
Framework Development Tasks
One of the more popular web servers;
with all major platforms
REST is the most popular API platform.
Node enables your system to handle multiple requests at once, without waiting for tasks to be completed and returned.
This makes it possible for Node to perform a variety of functions, including collecting form data, modifying database
information, managing files on the server, and generating dynamic content on your page. Node.js is just one of
many choices you can make for web server software such as Apache, IIS and Nginx.
Essentially, back-end development revolves around an API, with the front end making API calls, and those calls executing
the back end code. This gives you a layer of abstraction between your web app and back-end code. You can change
the way the back end operates without having to update the frontend code. The only dependency the front-end has
on the backend is the endpoint that it hits to execute the code. REST Apis usually also send and receive data using
REST is the most popular API platform. REST is built on the idea that you have a set of endpoints (or web addresses)
that allow you to create, read, update and delete data. It uses standard HTTP methods like POST, GET, PUT, and
DELETE, respectively. The most popular framework for documenting and consuming APIs is Swagger.
For your site to be reachable and recognizable on the web, it’s going to need a domain name.
Any individual can register for a domain name, all it takes is a small fee to register with ICANN (Internet Corporation
for Assigned Names and Numbers). There are a many services that will help you with this such as GoDaddy, Network
Solutions or Hover. Once finished, you will own the right to that name for one year, with yearly renewals needed
to retain the domain for longer than that.
Internet Corporation for Assigned Names and Numbers
To register for a domain name,
simply brainstorm several possible domain names that would be suitable for your business.
These names need to be unique from other domain names currently in use across the internet, but they should also
be as straightforward as possible. Remember that there are a number of possible extensions that are available,
such as .com, .net, and .org. This means that even if your domain name is not available with one extension, it
may still be available with a different extension. And while each extension is generally associated with a specific
kind of organization (.com usually refers to commercial businesses, .net implies networking sites, and .org is
for nonprofit organizations), the reality is that there aren’t any legal limitations over who can use which of
these extensions. Other extension options include .biz, .info, .tv, and .US.
With your list of potential names, you’ll either need to choose a hosting service or decide to host on your own server
(check with your internet service provider to make sure that they allow web hosting, as some do not, and will actually
block all traffic to your site).
FOR THOSE USING A HOSTING SERVICE,
the next steps are to check the availability of your domain name until you find one that isn’t already in use, fill
out several in-depth forms, and finally pay for the domain name using either a credit card or an online payment
system (such as Paypal).
IF YOU ARE SELF HOSTING THE PROCESS IS A BIT LONGER.
Your next steps are to assign a server on which your site will live, acquire a static IP address so that visitors
can reach your site, invest in server-control software, reconfigure your firewall and router for website hosting,
and finally rout domain traffic to your server.
Here are some basic tips
FROM EXPERTS TO HELP ENSURE THAT YOUR CODING JOURNEY STARTS OUT ON THE RIGHT FOOT:
Document what every function is, what it is for, why you are including it, and any other specifics that come to mind.
You may think that devoting hundreds of hours to your site will result in a sort of omniscience regarding your code,
but the truth is you will forget.
Implement version control, as it will help you keep track of changes to your site over time. This will give you the
opportunity to reload previous versions of your pages, in the event that you make a change to your site that completely
screws everything up.
Always keep backups. Of what, you ask? Let’s just put it this way: if it’s something that can be backed up, then back
it up. It doesn’t take much to unravel an intricate coding solution; backups give you a safety net should something
Follow the guides. There are a number of tutorials available online to help you get the most out of your frameworks
and other tools. Use them.
Use minification where possible to help ensure that your payload size (particularly for images, js files, and other
references) is as small as possible.
Make sure that your site isn’t exposing any more data than is necessary from server-side services. If the user shouldn’t
see it, then you need to make sure that the client isn’t loading it.