The jack-of-all-trades software developer who is able to do everything is a thing of the past. The software industry has grown. Today, there is a large number of programming languages and technologies. To do their job well, a developer needs to specialize in one field.
This makes sense, because it’s the case in so many other professions. School teachers do not teach every subject. Engineers have specializations too, like civil engineering, ship building or aircraft construction. Or would you want to board a plane which wasn’t built by a specialist?
In the past, software development specializations were usually the programming language or technology. You were a C++ application developer, a systems developer, or a network administrator. But with new languages, frameworks and technologies came new classifications of software specializations. Today, there is a whole range of job titles in the field of software development.
The most common areas for programmers today are front-end, back-end, and mobile development. Of course there are other specializations, some of which you may have heard of. Does game development, DevOps or data science ring a bell?
Let’s stay with the main three areas. What exactly do front end, back end, and mobile developers do?
What are their tasks and expertise and how do they differ from each other? And how would you do in each of these roles? Find out which software development specialization is the one for you!
Front end developer
Front end development is all about what the user sees. It’s in the name: front. This includes UI (user interface), UX (user experience) and any means of user interaction.
Technically, every developer who builds a user interface is a front end developer. But so many things have a user interface: simple websites (homepages), complex web applications (see Facebook, Medium, or Google Mail), systems applications (like Microsoft Word on Windows), apps on smartphones, or embedded applications (which for example run on vending machines and kiosks). Typically, the term “front end developer” refers to the developer specialized in the front-end part of web development.
Connecting the front end to a server application adds more tasks to this list. In this case, data needs to be exchanged via an API (Application Programming Interface, the interface with the server application). Does the website allow for the user to log into an account? If so, authentication needs to be implemented in the front end as well. A front end developer needs to create and program all of these functions.
Furthermore, a front end developer needs at least basic knowledge about the internet technologies that make up the web. This includes basic protocols like HTTP and SSH. They need to know about APIs (Application Programming Interface) and REST. And they need to know the basics of web security.
Besides technical expertise, a front end developer should know the principles of good design and UX (user experience). After all, what makes a good web interface is not only that it’s working, but also that it is visually appealing and user-friendly. When there’s no designer available, front end developers need to take care of layouts, assets and UX themselves.
Another essential soft skill is communication, since developers need to discuss technical concepts, suggestions, and feasibility with the team or customers on a regular basis.
For many, getting started in front-end development is much easier than back-end development, because you get visible feedback about your code immediately. Because of this, jobs in front end development are very popular, so there is more competition for these positions. But there is still enough demand for front end developers, and more open positions than available experts. And even though many front end developers have a university degree in computer science, it is usually not a hard requirement. Second career coders also find their place in the industry.
As for salary, it is usually irrelevant whether you went to university or acquired your skills another way. The decisive factor is your professional experience. A junior developer can easily earn a gross starting salary of € 2,500 - 3,000 per month. A senior developer with 5 years of professional experience will most likely earn between € 3,500 - 5,500 a month. As a freelancer you can make even more, with an hourly rate of € 70 or more in Germany.
In smaller companies, the developer sometimes has to do the job of both the front end and back end developer. Maybe you have already heard the term full-stack web developer. Full-stack refers to the combination of front and back end development. But usually someone else is in charge of back end development.
Back end developer
What a back end developer does is often less obvious, because you can’t see it as directly as what the front end developer does. The back end is the part of the application behind the surface. It is the server-side software that manages databases and communicates with clients. Clients are the front end of websites, apps, and system applications. Often, the same back end is used for several clients. For instance, the Twitter app accesses the same back end as the Twitter website.
The back end developer’s job is to take care of exactly this. They program the server that manages the data of databases and runs calculations. They provide an interface, an API, for all the different clients to retrieve the data they need.
A program that runs on a server is called a service. If a service needs to do too many actions for different purposes it can be split into smaller applications. These smaller services communicate with each other. For example, a ticketing system for an airline has to display available tickets, allow the user to log in, process the booking, assign the ticket to the user, create user lists, validate tickets, and so on. On the server, each of these steps are implemented as small services. These smaller applications are called microservices. A back end developer needs to do this division and implement a seamless communication between them.
Once a back end has been split up into smaller microservices, parts of it can be outsourced to cloud-based solutions, such as Firebase or Amazon Web Services (AWS). This concept is called serverless. Serverless is not an optimal name because there still is a server, only the back end developer does not take care of it anymore. The term serverless has made it into the vernacular nonetheless.
Small companies or startups often use a serverless architecture, because they save resources and time this way. For larger companies it is usually out of the question to outsource to third parties due to a variety of reasons. But even when certain services are outsourced to serverless providers, it still needs a back end developer to integrate those parts into the global application.
The code of the server application is commonly called business logic. The word comes from the implementation of business processes, for example the payment processing of an online shop. But also traditional processes like the production and distribution of goods are typically managed by a comprehensive backend application that consists of services and databases. This means, the back end part of an application is most important for a business. It is the place where the processes most vital for a business are implemented in code. That’s why a back end developer’s job is so important and why talented professionals are desperately being sought after.
A back end developer needs to be familiar with databases. This is a wide field which we only want to touch briefly here. Commonly, we differentiate between relational databases and document-oriented databases.
Relational databases for the most part are based on SQL, a structured query language, and store data in tables. MySQL or Oracle are examples of relational databases.
Document-oriented databases store their data in documents, often in a JSON structure. MongoDB or CouchDB are examples of document-oriented databases.
While relational databases are the standard in large companies and enterprise software, document-oriented databases are preferred in modern web development. A good back end developer should understand both concepts and be able to connect to different databases with their code.
To link back end and front end together, a back end developer needs to know the HTTP protocol and REST architecture. Moreover, he or she should know internet technologies, such as routing and TCP/IP, DNS, and internet protocols. In addition, a back end developer should be able to handle the command line well.
The profile of qualifications for a back end developer is extensive. There is a lot to learn, so you cannot find a talented back end developer on every corner. What does supply and demand teach us? Of course, the salary is higher on average than for a front end developer. Beginners can expect € 2,700 - 3,500 pre-tax per month, whereas experienced programmers managing projects often earn over € 5,800.
And then there is a younger generation of developers that grows rapidly and deserves its own category: the mobile developer.
It is the year 11 AI (anno iPhoni). Nearly all of us have one: a so-called smartphone, whether it’s an iPhone or an Android phone. Many even have more than one. And tablets are mobile devices as well. Today, an estimated 51% of internet usage is mobile instead of stationary from a desktop or laptop. It is no surprise that there is a new generation of developers, that only develops client applications for mobile devices.
The mobile developer builds these apps. Apps have to be fast and simple. They should be written in slim code and use little data volume. A characteristic of mobile devices and their apps is that they are in motion. Some of the most commonly used apps are for GPS navigation or searching for nearby places. User-friendliness is a must. Typing is harder on a mobile device than on a keyboard, so most things should work with just the touch of a button on the screen. Screen size is also limited.
Between Android and iOS, there are some significant differences in the user interface. An example is the back button. On Android it is located in the bottom line, but it’s in the upper left corner of the menu bar on iOS. This is only one of the many differences. Also, programming languages, frameworks, and the mobile operating system are so different from each other that mobile developers usually specialize in either Android or iOS. Very few can do both, and job postings are almost always advertised for only one of the two.
Android developers need to know Java. For about a year, however, Kotlin has been the preferred language supported by the Android system. iOS developers need to know Swift, and ideally also Objective-C, which was replaced by Swift, but is still used in some older apps.
In app development, the development environment is the most important tool. It provides the necessary tools, such as the smartphone emulator or graphical editors for layout design. For Android it is Android Studio, for iOS it is Xcode.
In contrast to web development, there are clear design limitations for the user interface. Android, for example, supports the recommended Material Design by default. For iOS, it’s even relatively hard to change the pre-set design of UI elements (user interface elements such as buttons, etc.).
One of the guiding principles, however, is to keep the design as close as possible to what the user is used to. This means the less you deviate from the standardized design, the better.
Most apps do not work isolated on the device alone, but retrieve data via connecting to the network. For example, WhatsApp need to load chat messages from a server, and send outgoing messages to the server. Thus, both Android and iOS developers need to be able to address APIs (server interfaces).
Mobile devices are always in motion, so it happens a lot that the network connection gets interrupted and the smartphone is temporarily offline. Therefore, mobile developers have to deal with the issue of cache and offline functionality. For example, certain data can be stored in a small, local database. If it is cached there, it can be available even when the connection is lost. Another solution is to display a message that tells the user that the app is currently disconnected from the internet.
To do that successfully, the developer has to pay attention to good architecture. He or she has to split the code into components, each of which have a clear responsibility. The connection to the API, or the cache are such components. The code has to be clean, so that the developer can always trace the data flow in the application.
Popular architectures include Model View Controller (MVC), Model View Presenter (MVP), or Clean Architecture. A mobile developer should have studied the various architectural patterns in detail and know the most common ones.
For both Android and iOS, there is a large ecosystems of tools and libraries. For the most part they are open-source and offered for free. The library Retrofit, for example, makes it easy for Android to connect to APIs and communicate with back end applications.
The ecosystem is fast-paced: new versions are released on a regular basis, and libraries are quickly becoming obsolete. You constantly have to take care of maintaining versions and staying up-to-date on the latest technology. Newsletters and news feeds on both platforms are great resources to stay current. Android Weekly is very popular for Android, and iOS Dev Weekly for iOS respectively.
Development for mobile devices is still a new field, but rapidly growing. Young talents are in high demand by the many companies developing one or several apps. The starting salary is around € 2.600 - 3.300 pre-tax a month (even better than that of the regular front end developer). There are not too many specialists in this field yet, making it a good time to get involved.
Here they are, the three most common types of software developers. Which one do you want to be?