Web development has become a multilevel hierarchy-based process for quite long now, divided into two parts: front end and back end. A front end is a code executed in a browser that actuates website or web app display and ensures performance of all the elements across various devices, i.e. on the client side. A back end is the server rearward, or software and hardware base.
Primarily, a back end is a code executed on the server, from which a website or web app is uploaded. Also, a back end comprises databases of regularly updated websites:
Above all that, a back end includes algorithms driving powerful online platforms:
A back end may be a two-level system — with an in-house front end and a lower-level back end. For instance, WordPress is a website’s back end; but, for the admin, editors, and authors, the system consists of a front end (a handy engine control or content panel) and another back end (plugins, system PHP files, and MySQL database). Let’s look at it from a wider perspective: a server on which a website or web app is hosted is a back end; hosting control panel is a back end’s front end, while no-GUI Linux is a back end’s back end.
So, a back end encompasses hundreds and thousands of behind-the-scene processes that convey the output through a front end. This means that everything visitors or users do not actually see but what is working, is what we call a back end. But, first, you need to find back-end developers who could establish and configure a back-end infrastructure.
These specialists develop and deploy the server side of web resources. They can create the basic logic and design the architecture of a projected web app from scratch, and then compose the algorithms that will power the whole system. In fact, server code scalability, performance, and security depend on how rationally back-end developers do what they do.
Back-end developers know their way around DBMSs and can easily relate a code to a database and write query handlers for it. They feel at home when working with web servers receiving http requests from a front end and yield http replies; thus, they can effortlessly create an app that would consider server configuration and capabilities. The same is true for application servers if we speak of high-load or mobile apps.
A back end is not limited to a website or web app itself. It also incorporates web services that connect to other websites, apps, and services. Here are some common examples: pingbacks and trackbacks in blogs, sharing on social media, reCAPTCHA, online payments. Not only can back-end developers establish interaction with third-party APIs, they also can design their own one to which other resources will refer.
Though a developers’ key duties are analysing and specifying requirements, designing and programming, they are often entrusted with testing, debugging, and code optimisation. Large-scale teams and IT enterprises have testers and special programmers assigned to perform such tasks. On the other hand, in small startups driven by two web developers (a front-end dev and back-end dev), who creates a code shall check and refine it. But, it is way more reasonable to delegate these tasks to another team as a fresh eye is better for detecting errors or suggesting improvements.
For every task, a dedicated programming language, on which a source code will be composed, is selected. For the purposes of creating a website’s back end, the most commonly used language is PHP, while web apps can be created on PHP or some other languages, including:
Here are programming languages and database management systems used on the server side of popular websites:
|Website||Monthly visitors||Server languages||DBMS|
|1.6 billion||C, C++, Go, Java, Python||Bigtable, MariaDB|
|1.1 billion||C++, D, Erlang, Hack, Haskell, Java, PHP (HHVM), Python, XHP||Cassandra, HBase, MariaDB, MySQL|
|YouTube||1.1 billion||C, C++, Go, Java, Python||BigTable, MariaDB, Vitess|
|Yahoo||750 million||PHP||Cassandra, HBase, MongoDB, PostgreSQL|
|Amazon||500 million||C++, Java, Perl||PostgreSQL, RDS, RDS Aurora|
|290 million||C++, Java, Ruby, Scala||MySQL|
It’s not always that a back-end developer can handle most of the most common languages. However, what distinguishes a gift specialist is the ability to master a new language quickly and easily sort out the tasks when such a language is needed. That routine can be facilitated by universal development environments (Geany, IntelliJ IDEA, KDevelop, etc.) and cloud IDEs (AWS Cloud9 IDE, Codeanywhere, Repl.it, etc.).
Some auxiliary tools can also catalyse development. They include design and programming patterns, frameworks, and libraries (which are unique for every language). This is why any developer uses at least one toolset that helps them deliver on time, without hampering other team members’ work.
Professionals who often deal with relational DBMSs can handle a structured query language (SQL). Even those working with a NoSQL DBMS need to know what to do with this language as it is also supported in such systems. Those who are annoyed by and tired of the SQL have mastered and already use object-relational mapping (ORM).
Data fed to an application programming interface are converted into a specific format. Back-end developers who regularly configure or maintain APIs, get on well with an extensible markup language (XML), data interchange format JSON, software architectural style REST, and SOAP protocol.
One couldn’t handle any web server without dedicated server software, so every back-end dev is well versed in Apache HTTP Server, Lighttpd, Nginx. Even curious internet surfers have a rough idea about those programs as they came across various 5xx errors on faulty websites and would try to find out a cause. To work with application servers, professionals master such software as Google App Engine, IBM WebSphere, Java EE, Zend Server.
When a back-end dev needs to check performance of a web product on a local machine, they may use various server software packages — WAMP, LAMP, MAMP, XAMPP — depending on the operating system. They often deal with virtual and dedicated servers, so they automatically study and master hosting control panels, virtualization, containerization, and Linuxes. But, you shouldn’t make them administer servers to save hosting costs.
The same could be said for a front end, but the web dev industry wouldn’t know such a thing as full stack. Full-stack developers are back-end specialists who can develop a front end, and vice versa.
It’s no easy thing to hire an experienced back-end developer. Some try to source them on freelance marketplaces, others on HR portals, still others think it’s more reasonable to delegate development to a web studio team. None of these options is the best, so let’s look into each of them.
First, a company needs to find unemployed back-end specialists on service marketplaces like Fiverr, Guru, PeoplePerHour, Upwork. Then, an HR manager studies back-end developers’ portfolios and feedback. The next stage is negotiating on the scope of work, setting out the tasks (you’d better use Terms of Reference) and terms. After that, a customer can place an official order through a marketplace, with exact terms and specifications. Otherwise, you can publish an order first, and then process the requests following the same principle.
An employer creates a position on an HR resource like Adzuna, Indeed, Monster, Reed. Then, they flick through requests and study CVs of professional back-end developers. Alternatively, the employer can headhunt on the same portals or LinkedIn. After that, the employer asks a candidate for an interview where the latter would tell about themselves and learn more about what they need to do as a back-end dev in the employer’s company. All this looks like traditional employment.
This is something in between the first two options. Engaging a built-up remote team, a customer gets themselves a bunch of temporary employees. They source not all the specialists a remote team has but only those who they actually need, with an opportunity to involve someone they don’t need first, on a later stage. A third-party team only comprises verified and practised back-end developers. Moreover, they have some experience in working together, so there is no risk of sabotage.
The only shortcoming: in this case, the cost of services is higher compared to involving a single freelancer. However, it is still far cheaper than keeping employees.
On freelance marketplaces, back-end devs specify the minimum pay rate, usually from €9 or $10. In this case, customers can barely calculate the cost of service as most specialists offer such low rates only for something simple, e.g. consultation or project status analysis.
It’s way easier to evaluate the services of hourly-paid outsourced professionals. Usually, the hourly rate of remote back-end developers is the same and amounts to €45 or $50.
Relying on the salaries of employees may be inconsistent with what you will actually pay. Everything depends on the required experience or qualification. Recruitment managers usually group candidates by experience in years. However, developers prefer division into junior, middle, senior, and lead developers. These are levels that reflect skills, technology stack, and the ability to work independently. If you combine all these approaches, you will see the following:
The British IT labour market sees a great difference between London salaries and those in other regions and counties. We have collected open positions for three occupational levels from reed.co.uk and indeed.co.uk, and sorted them by level and city (London and other cities and towns). After that, we calculated the average salary for each of the 6 groups. Here’s how much a back-end dev is paid in Great Britain (effective March 2020):
|Level||Average annual salary (London)||Average annual salary (other cities & towns)|
|Junior||33,000 GBP||21,000 GBP|
|Middle||60,000 GBP||38,000 GBP|
|Senior||63,000 GBP||48,000 GBP|
Speaking of the Russian labour market, we can also notice a huge difference between Moscow salaries and those in other regions. We have collected open positions for three occupational levels from rabota.yandex.ru, and sorted them by level and city (Moscow and other cities and towns). After that, we calculated the average salary for each of the 6 groups. Here’s how much a back-end dev can be paid in Russia (effective March 2020):
|Level||Average monthly salary (Moscow)||Average monthly salary (other cities & towns)|
|Junior||60,000 RUB||34,000 RUB|
|Middle||143,000 RUB||92,000 RUB|
|Senior||194,000 RUB||144,000 RUB|