What kind of software developer do you want to be?

Front end, back end, or mobile developer

Eva Louise
Hamburg Coding School
12 min readDec 25, 2018

--

Death to Stock by Maresa Smith — Modern Workshop (05)

The jack-of-all-trades software developer, able to do everything is a thing of the past. The software industry has expanded to a much larger number of programming languages ​​and technologies. To do the job well, a developer needs to specialize in one field.

This is akin many other professions. School teachers do not teach every subject. Engineers have specializations, too, for instance 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 categorized by 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, we see a whole range of job titles in the field of software development.

The most common areas for programmers nowadays 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 needed expertise, and how do they differ from each other? This article aims at helping you discover how you would 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 applications 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.

The front end developer’s task is to develop the interface of a website with HTML, CSS and JavaScript. Typically, a designer first creates a layout for a website, and the front end developer then has to implement said layout. This goes beyond just looks. Functionality is very important. For example, what happens when the user clicks on a button? Will a pop-up open? Will it bring you to the next page, or will it send data to a server?

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.

The indispensable basic skills for front end developers are HTML, CSS, and JavaScript. HTML is a language which describes the basic structure of a website. It marks headings, paragraphs, links, pictures, and much more. CSS is for styling, coloring, placement, or spacing of HTML elements. JavaScript is the language that is used for creating interaction. Unlike HTML and CSS, it is a proper scripting language which provides functions, if-then logic, and loops.

Death to Stock by Richard Smith — Farm (8)

The more elements on a website, the more tasks and challenges for the front end developer. Fortunately, there are a lot of tools, libraries and frameworks which help with these tasks. The community of web developers is extensive. They have created an ecosystem of tools, frameworks, libraries, and languages. The world wide web is constantly evolving. New standards and tools come out time and again. You might have heard of HTML5 and CSS3 as state-of-the-art standards for HTML and CSS. For JavaScript, the latest standard is ES6 (ECMAScript 6).

A notable tool, for example, is the package manager npm. Front end developers use it for structuring projects and loading libraries as dependencies. For CSS there are helpful tools like SASS, LESS, and Stylus. JavaScript frameworks are increasingly important as well. Two famous examples are React or Vue.js. You can learn more about the latter by taking a course here at Hamburg Coding School.

Furthermore, a front end developer needs at least basic knowledge about the internet technologies which make up the world wide web. This includes basic protocols like HTTP and SSH. He or she needs to know about APIs (Application Programming Interface) as mentioned earlier 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 works, 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 positions. But there is still enough demand for front end developers, and more open positions than available experts. Furthermore, 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 cannot 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 which 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.

Death to Stock — Weekend work (6/10)

The back end developer’s job is to take care of exactly this. They program the server which 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 which 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 individual services. These smaller individual applications are called microservices. A back end developer needs to draw the 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, a back end developer is still needed 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 back end application consisting in services and databases. This means, the back end part of an application is most important for a business. It is 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 sought after.

The road to becoming a back end developer is long. A good back end developer generally knows more than one programming language. Typical languages for writing back end applications are Java, Python, Ruby, .NET, Go, and JavaScript. Back end developers often use a framework from the corresponding language. This can be, for example, Spring Boot for Java, Django for Python, Ruby on Rails for Ruby, or Node.js for JavaScript. These frameworks come with a lot of functionality and helpful tools so that the developer can focus on the business logic itself. Good back end developers specialize in one of these frameworks, but keep their eyes open for other or new solutions.

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 his or her 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 €.

Mobile developer

And then there is a younger generation of developers which grows rapidly and deserves its own category: the mobile developer.

Death to Stock — Creative Community (5/10)

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. Tablets are mobile devices as well. Today, an estimated 51% of internet usage is mobile instead of stationary from a desktop or laptop. It comes as no surprise that there is a new generation of developers which 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 therefore 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 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 most important providing necessary tools such as the smartphone emulator or graphical editors for layout design. For Android the development environment is Android Studio, for iOS it is Xcode.

In contrast to traditional web development, in mobile development there are stringent design limitations for the user interface. Android, for example, supports the recommended Material Design by default. For iOS, it is 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 needs 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, thus it happens a lot that network connection is interrupted and the smartphone 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 cached there, it can be available even when connection is lost. Another solution is to display a message telling the user 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. Connection to the API or 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 are 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 quickly become 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?

This article was also published on the site of Hamburg Coding School as well.

--

--