How statistics are calculated
We count how many offers each candidate received and for what salary. For example, if a Back-End Web developer with Symfony with a salary of $4,500 received 10 offers, then we would count him 10 times. If there were no offers, then he would not get into the statistics either.
The graph column is the total number of offers. This is not the number of vacancies, but an indicator of the level of demand. The more offers there are, the more companies try to hire such a specialist. 5k+ includes candidates with salaries >= $5,000 and < $5,500.
Median Salary Expectation – the weighted average of the market offer in the selected specialization, that is, the most frequent job offers for the selected specialization received by candidates. We do not count accepted or rejected offers.
Trending Back-End Web tech & tools in 2024
Back-End Web
What does a back-end developer do?
A back-end developer is in the back end of a more or less invisible system of unseen work, but vital all the same to web development. Back-end developers make sure the website or application works how it should. They have to deal with servers, databases, and application logic. They develop systems and processes. They maintain databases. They deal with bugs. They interface with APIs. They make security systems work correctly.
Specifics differ from firm to firm, but on the back end a back-end developer might oversee some, most, or all of the following:
- Developing the systems and processes to meet the application’s specified requirements
- Maintaining databases, including data storage and retrieval, organization, backups, and security
- Finding and fixing bugs in the back-end code
- Managing any APIs the company uses to integrate applications, both externally and internally
- Conducting performance optimization to increase efficiency and improve the user experience
- Building and managing libraries of code for reuse by developers across the business
- Helping develop the overall architecture of the application’s back-end
- Securing the application from cyberattacks
Back-end developers also work together with front-end developers to transform their function into user-facing content in the app interface. Back-end developers often deal with managers, architects, designers, researchers, IT security and so many others to make web applications work.
In the end, front-end developers aim to make the interface fun, playful, and interactive while back-end teams build up the invisible structures that power the front-end.
Back-end Developer Skills
Ok, so we now know what a back-end developer does (mostly). But what does she need to know in order to do it? In this part, we’ll be looking at the primary skills to look for if you’re hiring a back-end developer, or if you’re hell-bent on becoming one.
Programming Languages
Web developers use a multitude of languages to build the servers, databases, and application logic on servers. Here is the list:
Python
Python is a general-purpose programming language, commonly used for building the non-public, or ‘back-end’, part of software programs and web applications currently charging you for breakfast, dinner, or that retro toy you ordered on a whim on a marketplace site last night. It is a powerful language that is enjoyable to write in, and able to operate well for any purpose you throw at it. Every back-end programmer should at least have a basic level of knowledge about it.
Java
Java, another general-purpose language, is often used in the back-end of application development for the same reason. It’s deployable across many environments and flexible enough to power very large, complex, high-performance software projects.
PHP
PHP is a so-called server-side programming language – this basically means, you create a website using PHP which dynamically loads content at the demand of the user (or the browser requesting the page). PHP dynamically builds the page on the server from content of housed databases. The opposite of this is a static website – which means you create a website, and it’s stored completely on the servers and therefore presented exactly the same to all visitors – even if, in PHP, the display can be different.
Other Languages
True, there are many other programming languages that back-end developers might prefer. There’s Ruby, a high-level language that allows one to build both web and mobile applications in a quick and effective manner, there’s C, a lower-level language (and the most popular language in the world), and there’s .NET, a framework provided by Microsoft to build websites and web apps.
Furthermore, a back-end developer might write code in SQL (Structured Query Language) or JSON (JavaScript Object Notation), programming languages that are geared towards database management.
Front-End Languages
Although it’s often the case that the back-end developer works almost exclusively on the server-side in a language like PHP or Java, some basic knowledge of front-end languages such as HTML, CSS, and JavaScript will still come in handy when you work on a web-based project. In general, there are three technical languages that you learn on the front end:
- HTML (HyperText Markup Language): Codes content (text and links) and structure of a web page. All web pages are built with HTML, and its file names always end in .html.
- CSS (Cascading Style Sheets): Because Cascading Style Sheets are a programming language that describes how pages should look – without it, the web would be filled mostly with seas of block text and images with no layout or style. CSS is also the reason that web page content adapts to fit different browser sizes and devices.
- JavaScript: Often abbreviated as JS, developers use it to change animations, dynamically update page content, and on websites run scripts without having to ask the back-end.
These languages will make it easier for you to work with front-end developers and designers and, if there is a bug that uses both front-end and back-end resources, it will help you to diagnose it faster. They are also good skills to learn in general, especially if you want to learn design or become a full-stack developer.
Database Management
Moving data in or out of the application database, a significant part of the back-end developer’s work, comes under the scope of modern database technologies.
Databases can be divided into two types: relational databases and non-relational databases. Relational databases store related data points like a customer such as name, and email or account ID. Relational Databases are data arranged in a tabular manner with relata in the same row and the language used to interact with it is SQL.
Then, in contrast to relational databases, non-relational databases (or NoSQL databases) don’t typically store data points based on their relatedness (though they might relate the data nonetheless). Instead of rows in tables, non-relational databases store their information in Extensible Markup Language (XML) and/or JavaScript Object Notation (JSON). Useful knowledge about NoSQL database programmes, such as Redis and MongoDB, can go hand-in-hand with SQL on the back-end.
Server-Side Software
Back-end developers get process versions in server systems. You should be familiar with standard server software such as Apache, Nginx, Microsoft IIS, and Linux-based operating systems. You should know how web servers receive and handle requests for web pages on websites, how they store the data they get, and the basics of keeping them scalable and safe.
APIs
An API – an application programming interface – is a set of definitions and protocols that allows two applications (or pieces of software) to talk to and share data with each other. An API goes out and listens for incoming requests from another application, and then responds by carrying out that request (which could be requesting or modifying some chunk of data in the database of the other app). Every time you see one piece of software reused in another, APIs made it possible. Apps such as Facebook, YouTube, Google and Spotify make tons of their data available through public APIs.
There are plenty of APIs in existence today, the most prominent of which are REST APIs. If you want to be a web developer, you’ll need to have a working knowledge of REST APIs (and possibly SOAP ones), a technology that ties together not only different applications owned by different vendors, but also individual back-end services.
Data Structures and Algorithms
In contrast to other, more concrete technologies that will be discussed below, data structures and algorithms are highly conceptual but still incredibly important. A competent back-end developer must have a decent understanding of these areas to perform his or her job, which is why they appear in the academic curriculum of computer science.
Making a picture in the mind: a data structure is a pattern we use in a computer to organise data. The above examples were arrays, linked lists, trees, and tries; hash tables, heaps, stacks, and queues – the back-end developer will run into most or all of these at some point in their career.
Broadly, an algorithm is a defined process to solve a problem. Every back-end developer is familiar with the foundational algorithms of computer software: you’ll use some form of sorting algorithm; you’ll write some kind of search algorithm for searching texts or databases; you’ll parse and compare strings; you’ll hash stuff to make comparisons between string lengths easier; you’ll use recursive algorithms, or code that’s essentially a textual expression of how a function repeats itself.
Other Important Skills
There is also much more that you can learn in the domain of back-end programming than just those core skills, as listed above. Here are some more skills that you will find useful as a back-end programmer:
- Experience with a version control system — likely Git, as well as familiarity with GitHub
- Knowledge of orexperience with server management
- Communication skills, and an ability to explain complex technical topics to non-experts
- Time management skills, as you’ll likely be balancing several responsibilities at once
- Understanding of cloud computing and hosting
- Understanding web accessibility best practices
- Understanding cybersecurity best practices
Where is Symfony used?
Powering Up the Rebels - Drupal
- Symfony components give Drupal its webmaster Jedi skills, leveling up this CMS to a force to be reckoned with in the galaxy.
The High-Speed Express - Laravel
- Laravel sprints through web app development like an Olympic runner on a caffeine buzz, thanks to Symfony's legs.
The Magnificent Magento Makeover
- Magento embraces Symfony bits to transform e-commerce shops into catwalk supermodels of functionality.
EZ Publish's Secret Sauce
- The EZ Publish CMS whips up content like a gourmet chef, spicing up the digital experience with dashes of Symfony.
Symfony Alternatives
Laravel
Laravel is a PHP web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling.
Example: Basic routing in Laravel
Route::get('/greeting', function () {
return 'Hello World';
});
- Eloquent ORM for expressive database operations
- Built-in authentication and authorization
- Extensive community and resources
- Learning curve might be steep for beginners
- Performance can be slower compared to lighter frameworks
- Overhead for smaller projects
Spring Boot
Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run".
Example: Basic controller in Spring Boot
@RestController
public class HelloController {
@RequestMapping("/hello")
public String index() {
return "Greetings from Spring Boot!";
}
}
- Rapid development with embedded server and configuration presets
- Supports a wide range of Spring ecosystem components
- Huge community and enterprise backing
- Can be complex due to Spring ecosystem
- Steeper learning curve for Java and Spring Framework
- May be too verbose for simple tasks
Express.js
Express is a minimal and flexible Node.js web application framework that provides a robust set of features for web and mobile applications.
Example: Basic route in Express.js
const express = require('express');
const app = express();
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});
- Minimalistic, fast, and unopinionated
- Robust routing and middleware capabilities
- Large number of available plugins
- Lack of convention can lead to messy codebases
- Reliance on middleware for basic features
- Callbacks may lead to "callback hell" if not managed well
Quick Facts about Symfony
A Stroll through the Symfony Park
Once upon a time in the year 2005, Fabien Potencier decided to conjure up a new PHP framework, and thus Symfony was born! It was like someone shouted "Expecto Patronum!" and out popped a framework ready to battle the dementors of repetitive coding tasks.
Version Galore, Oh What a Score!
Travel through the Symfony time portal, and you'll witness an epic saga of versions. From the humble beginnings with Symfony 1.0, we've merrily rolled into 2023 where Symfony 6 hammers down on complexity like Thor's Mjölnir. Each major release was like opening a prized Kinder Surprise - you never knew what fabulous treat you were about to get, but you knew it was going to be good!
Bundled Up in a Neat Bow
It's not a bird, it's not a plane, it's... a bundle! In Symfony, everything's a bundle - sort of like how in "The Lego Movie" everything is awesome. These bundles are little self-contained packages of joy that let you add functionalities to your application without a flick of a magic wand or needing to bargain with a crossroads demon.
// Use this spell to summon a bundle
$bundles = array(
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
new Acme\DemoBundle\AcmeDemoBundle(),
);
What is the difference between Junior, Middle, Senior and Expert Symfony developer?
Seniority Name | Years of Experience | Average Salary (USD/year) | Responsibilities & Activities |
---|---|---|---|
Junior Symfony Developer | 0-2 | 30,000 - 50,000 |
|
Middle Symfony Developer | 2-4 | 50,000 - 80,000 |
|
Senior Symfony Developer | 5+ | 80,000 - 120,000 |
|
Expert / Team Lead Symfony Developer | 8+ | 120,000+ |
|
Top 10 Symfony Related Tech
PHP
Without PHP, using Symfony is like trying to make a smoothie without a blender – utterly fruitless! As the backbone language of Symfony, it's imperative that you can navigate through PHP like a pirate does through treacherous seas. Whether you're slinging basic syntax or invoking advanced object-oriented concepts, make sure your PHP skills are shipshape.
// An example of PHP class definition
class PirateShip {
public function sail() {
echo "Arrr, we're off to find treasure!";
}
}Composer
Think of Composer as your trusty first mate; it manages PHP package dependencies faster than a crew can swab the deck. Forget about manually searching for packages and versions. With Composer, you command your dependencies with ease, keeping your project updated and avoiding mutiny from outdated libraries.
// Require a new package using Composer
composer require symfony/symfonyTwig
Twig is like the crow's nest of Symfony – it gives you a high vantage point to craft templates with an eagle's eye perspective. This templating engine lets you separate your logic from your views, so you can create swanky, dynamic web pages devoid of PHP's tentacles entangling your HTML.
{# An example of a Twig template #}
<ul>
{% for pirate in pirate_crew %}
<li>{{ pirate.name }} the {{ pirate.rank }}</li>
{% endfor %}
</ul>Doctrine ORM
Doctrine is like the ship's navigator, guiding your data on its journey to and from the database islands. As an object-relational mapper, Doctrine makes it easy to query and handle data without having to engage in database-speak. It's the bridge between your PHP objects and the database – without the threat of walking the plank!
// An example of finding a treasure using Doctrine ORM
$treasureRepository = $entityManager->getRepository('App:Treasure');
$treasure = $treasureRepository->find($treasureId);Symfony Console
The Symfony Console is like the captain's wheel – it gives you control over the console commands that steer your application. From generating code to executing custom tasks, this handy tool ensures you won't have to navigate stormy manual processes at sea.
// Creating a custom console command in Symfony
php bin/console make:command app:find-treasureYAML & XML
YAML and XML are like the treasure maps of project configuration. YAML, with its clear, clean syntax, marks the spot for your configurations with an 'X' for excellence. Meanwhile, XML, with its tag-based structure, offers a more verbose approach to declaring your app's settings. Choose your map wisely and let the configuration adventure begin!
# An example of YAML configuration
services:
App\Pirate\Parrot:
arguments: ['%parrot_name%']
<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services">
<services>
<service id="App\Pirate\Parrot">
<argument>%parrot_name%</argument>
</service>
</services>
</container>Git
With Git as your trusted lookout, you'll avoid the treacherous waters of version control nightmares. It lets you commit your changes with the confidence of a captain claiming new lands, branch out into new features like exploring unknown shores, and merge with ease, avoiding the cannon fire of code conflicts.
// Basic Git commands to get you sailing
git clone https://github.com/your-repository.git
git add .
git commit -m "Set sail on the seven seas of code"
git pushTesting (PHPUnit, Behat)
Scurvy isn't the only plague to keep at bay; bugs can infest your code! Use PHPUnit for your unit tests to scrutinize every nook and cranny of your application. Embark on feature expeditions with Behat for behavior-driven development, ensuring your app behaves just like a well-trained parrot.
// An example of a PHPUnit test case
public function testPirateSings() {
$pirate = new Pirate();
$this->assertEquals('Yo ho ho and a bottle of rum', $pirate->sing());
}API Platform
Launching an API is like firing a cannonball – you want it to hit the mark with precision. That’s where API Platform comes in, offering a bundle of tools to build your API fleet with speed and swagger. Whether ye be creating REST or GraphQL APIs, ye’ll have a powerful arsenal at your disposal.
// An example of creating an API resource with API Platform
/**
* @ApiResource
*/
class Ship {
// ...
}Webpack Encore
Last but not least, hoist the mainsail with Webpack Encore, a tool that compiles all your front-end assets with the efficiency of a bosun's whistle. Crafted specifically for Symfony, it helps to bundle your JavaScript and CSS materials, making sure your ship not only sails smoothly but looks the part too.
// An example of using Webpack Encore
// webpack.config.js
Encore
// ...
.addEntry('app', './assets/js/app.js')
.addStyleEntry('global', './assets/css/global.scss')
// ...
;