Den einen all-around Softwareentwickler, der alles kann, gibt es schon längst nicht mehr. Die Vielzahl an Programmiersprachen und Anwendungen hat eine derartige Komplexität mit sich gebracht, dass die meisten Coder sich auf ein Gebiet spezialisieren, das sie dann überaus gut machen. Es gibt schließlich auch nicht mehr den einen Lehrer in der Schule, der alle Unterrichtsfächer sicher unterrichten kann, oder den einen Ingenieur, der vom Hochtief- über den Straßen- bis zum Schiff- und Flugzeugbau alles kann. Würdest du dich in ein Flugzeug setzen, dass nicht von einem Spezialisten konzipiert wurde?
Mittlerweile gibt es immens viele Spezialisierungen in der Softwareentwicklung und IT. Früher wurde in erster Linie nach Programmiersprachen unterschieden oder in grobe Anwendungsgebiete. Da war man beispielsweise C++-Anwendungsentwickler, Systementwickler oder Netzwerk-Administrator. Inzwischen haben sich jedoch dermaßen viele unterschiedliche Sprachen, Frameworks, Technologien und Anwendungsgebiete herausgebildet, dass diese Einteilung nicht mehr genügt, und sich neue Unterscheidungen und damit auch neue Berufsbezeichnungen ergeben haben. Die heute am meisten nachgefragten Bereiche sind Frontend, Backend und Mobile. Darüber hinaus gibt es natürlich noch eine Vielzahl weiterer Fachgebiete, von denen man auch des Öfteren hört, wie beispielsweise Spieleentwicklung, DevOps oder Data Science.
Bleiben wir bei den Populärsten. Was machen Frontend-, Backend- und Mobile-Entwickler genau? Die Aufgaben und Fachkenntnisse unterscheiden sich teilweise sehr stark. Welche sind das und würden sie dir liegen? Wir stellen sie dir hier vor, so dass du herausfinden kannst, welcher Karrierepfad als Softwareentwickler dich am meisten interessiert.
Frontend-Entwickler
Der Frontend-Entwickler beschäftigt sich mit dem, was man als Nutzer zu Gesicht bekommt. Daher auch der Name: Frontend bedeutet Vorderseite. Neben der Programmierung zählen dazu Themen wie UI (User Interface), UX (User Experience) und die verschiedenen Interaktionsmöglichkeiten für den Benutzer.
Wörtlich genommen wäre jeder Entwickler, der eine Benutzeroberfläche baut, ein Frontend-Entwickler. Dabei kann es sich jedoch um sehr unterschiedliche Anwendungen handeln, von einfachen Webseiten, über komplexe Webanwendungen mit Social Features (siehe Facebook, Medium oder Google Mail), Systemanwendungen (wie Microsoft Word) oder Apps auf dem Smartphone, bis hin zu eingebettete Anwendungen (was zum Beispiel auf Fahrkartenautomaten läuft). Erfahrungsgemäß ist mit Frontend-Entwickler meistens der Entwickler gemeint, der auf den Frontend-Teil der Webentwicklung spezialisiert ist.
Die Webentwicklungssparte ist inzwischen derart umfangreich und dominierend in der Softwareentwicklungsbranche, dass sich daraus die Berufsbezeichnungen Frontend- und Backend-Entwickler herausgebildet haben. Während der Frontend-Entwickler der Webentwickler ist, der die Nutzeroberfläche baut, so ist der Backend-Entwickler derjenige, der sich um Server-Anwendungen und Datenbanken kümmert, also alles, was man als Benutzer nicht direkt sieht. Damit werden wir uns gleich im Anschluss beschäftigen.
Die Aufgabe des Frontend-Developers ist in erster Linie die Gestaltung der Weboberfläche mit HTML, CSS und JavaScript. Typischerweise wird ein Layout vom Designer vorgegeben, das dann technisch umgesetzt werden soll. Darüber hinaus geht es nicht nur ums Aussehen, sondern auch um die Funktionalität. Was passiert beispielsweise, wenn der Benutzer auf einen Button klickt? Öffnet sich ein Popup, wird man zur nächsten Seite geleitet, oder werden sogar Daten an einen Server geschickt? Darum muss sich der Frontend-Entwickler kümmern.
Die Anbindung an eine Server-Applikation bringt noch mehr Aufgaben mit sich. Hier müssen zum Beispiel Daten über eine API (Application Programming Interface, die Schnittstelle zur Server-Applikation) ausgetauscht werden. Soll sich der Nutzer einloggen können? Dann muss die Authentifizierung auch im Frontend umgesetzt werden. Je mehr Elemente und Interaktion eine Webseite beinhaltet, desto mehr Aufgaben und Herausforderungen warten auf den Frontend-Entwickler. Dabei gibt es bereits eine Menge Tools, Bibliotheken und Frameworks, die dem Frontend-Entwickler gewisse Aufgaben erleichtern.
Die Grundlagen, die jeder Frontend-Entwickler können muss, sind HTML, CSS und JavaScript. HTML ist eine Sprache, die den grundlegenden Aufbau einer Webseite beschreibt. Sie kennzeichnet Überschriften, Paragraphen, Links, Bilder und vieles mehr. CSS wird für das Styling benutzt, also gestalterische Dinge wie Farbgebung, Platzierung, oder Abstand von HTML-Elementen. JavaScript ist die Sprache, die für Interaktion sorgt. Im Gegensatz zu HTML und CSS ist es eine richtige Skriptsprache, die es ermöglicht, Funktionen, Wenn-Dann-Logik und Schleifen einzusetzen.
Um diese drei Sprachen rankt sich eine überaus große Community, die in den letzten Jahrzehnten ein umfassendes Ökosystem an Tools, Frameworks, Bibliotheken und Hilfssprachen hervorgebracht hat. Das Web entwickelt sich ständig weiter, und bringt immer wieder neue Standards und Werkzeuge hervor. Recht bekannt sind zum Beispiel HTML5 und CSS3 als Weiterentwicklung dieser länger bestehenden Sprachen. Das Äquivalent für JavaScript ist ES6 (ECMAScript 6), die aktuellste Weiterentwicklung bestehender JavaScript-Standards.
Nennenswerte Werkzeuge, die ein Frontend-Entwickler kennen sollte, sind zum Beispiel der Package-Manager npm, mit dem sich Projekte strukturieren und Bibliotheken als Abhängigkeiten ad-hoc laden lassen, und SASS, LESS und Stylus als Tools für CSS. JavaScript-Frameworks werden ebenfalls immer unabdinglicher für Frontend-Entwickler. Beispiele dafür sind React oder Vue.js.
Desweiteren braucht ein Frontend-Entwickler zumindest Grundkenntnisse der Funktionsweisen des Internets. Das beinhaltet grundlegende Protokolle wie HTTP und SSH, Wissen darüber, wie man APIs (Application Programming Interface) unter anderem mit der REST-Architektur anspricht, und Grundlagen in Web Security.
Neben dem technischen Wissen zeichnet einen guten Frontend-Entwickler auch ein Gespür für Design und UX (User Experience) aus. Denn letztlich ist es nicht nur die Funktion, die eine gute Weboberfläche ausmachen, sondern auch seine Ästhetik und Benutzerfreundlichkeit. Gerade in kleinen Firmen kann es immer wieder mal vorkommen, dass man keine vorgefertigten Designs zur Verfügung hat. Ein weiterer unabdingbarer Softskill ist die Kommunikationsfähigkeit, denn Konzepte, Vorschläge und technische Zusammenhänge müssen oft mit dem Team, Kunden, und manchmal auch Benutzern besprochen werden.
Der Berufseinstieg in die Frontend-Entwicklung ist subjektiv gesehen meist etwas einfacher als in die Backend-Entwicklung, denn man entwickelt die Dinge, die man sieht, und hat somit sofort sichtbares Feedback zu seinem Code. Das macht das Berufsbild als Frontend-Entwickler sehr beliebt, die Konkurrenz ist aber auch entsprechend größer. Es gibt jedoch nach wie vor eine ausreichend große Nachfrage nach Frontend-Entwicklern, um so gut wie jeden Entwickler unterzubringen. Und auch wenn viele Frontend-Entwickler ein abgeschlossenes Studium haben, eignet sich der Beruf immer noch gut für den Quereinstieg, was in der Branche keine Seltenheit mehr ist.
Beim Gehaltsspielraum ist es relativ unerheblich, ob man studiert oder sich die Fähigkeiten anderweitig angeeignet hat. Entscheidend ist die Berufserfahrung. Als Junior Developer ist ein Einstiegsgehalt von 2.500 - 3.000 € brutto monatlich mehr als realistisch. Als Senior Developer mit 5 Jahren Berufserfahrung werden es schnell zwischen 3.500 - 5.500 € brutto monatlich. Einen deutlichen Sprung macht man jedoch als Freelancer mit bundesweit durchschnittlichen 70 € Stundensatz und mehr.
In kleineren Firmen kann es vorkommen, dass sowohl Frontend- als auch Backend-Entwicklung vom gleichen Entwickler übernommen werden. Vielleicht ist euch bereits der Ausdruck Full-Stack-Webentwickler begegnet. Full-Stack meint die Kombination von Frontend- und Backend-Entwicklung. Meistens widmet sich der Backend-Entwicklung jedoch jemand anderes.
Backend-Entwickler
Was ein Backend-Entwickler macht ist oft weniger greifbar, weil man es nicht so direkt sieht wie beim Frontend-Entwickler. Backend ist der Oberbegriff für den Teil der Anwendungen hinter der Oberfläche: Die serverseitige Software, die Daten in einer Datenbank verwaltet und mit Clients kommuniziert. Clients sind die Frontend-Applikationen: die Webseiten, aber auch Apps oder Systemanwendungen. Oft wird das gleiche Backend für mehrere zusammengehörende Clients benutzt. Die Twitter App greift beispielsweise auf das gleiche Backend zu wie die Twitter Webseite.
Webseiten und Webanwendungen haben sich weit von den anfänglich statischen und drögen Gebilden, die sie zu Beginn der Personalcomputer und des Internets waren, fortentwickelt. Heute muss eine Webseite, die Besucher anzieht, neben ansprechend aussehen auch komplexe interaktive Anwendungen ausführen können, zu denen ein ganzes System an serverseitigen Programmen und Datenbanken gehört.
Die Aufgaben des Backend Developers leiten sich direkt daraus ab. Er programmiert den Server, auf dem die Daten in Datenbanken verwaltet werden und die Anwendungen laufen. Er stellt eine Schnittstelle, ein API, für die Clients bereit, mit der sie die benötigten Daten abrufen können. Um gleichzeitig Daten für verschiedene Clients (Twitter App und Twitter Webseite wie oben genannt) ausliefern zu können, einigt man sich auf eine Schnittstelle.
Die Anwendung auf dem Server für die Datenschnittstelle wird auch Service genannt. Wenn übermäßig viel auf dem Server passieren soll, wird das gerne auf mehrere kleine Anwendungen aufgeteilt, die miteinander kommunizieren. Ein Ticketverkaufssystem zum Beispiel muss verfügbare Tickets anzeigen, den Benutzer sich anmelden lassen, die Buchung verarbeiten, dem Nutzer sein Ticket zuweisen, Nutzerlisten erstellen, Tickets validieren und so weiter. Jede der genannten Aufgaben kann als eigenständiger Service laufen, der mit den anderen kommuniziert. Diese Aufteilung in kleinere Anwendungen nennt man Microservices.
Vieles, was ein Backend können soll, muss nicht mehr selbst geschrieben werden, sondern kann als Cloud-Lösungen ausgelagert werden, zum Beispiel zu Firebase oder den Amazon Web Services (AWS). Dieses Konzept nennt man Serverless. Serverless ist nicht unbedingt ein optimaler Name, da schon noch ein Server vorhanden ist. Aber der Backend-Entwickler muss sich zumindest nicht mehr selbst darum kümmern. Der Begriff hat sich so eingebürgert.
Während Serverless-Architekturen oft von Startups benutzt werden, die so Ressourcen und Zeit sparen, kommt eine Auslagerung an Dritte für größere Firmen aus verschiedenen Gründen meist nicht in Frage. Selbst wenn Teile der Server-Applikation, oder bestimmte Services, zu Serverless-Anbietern ausgelagert werden, braucht es immer noch einen Backend-Entwickler, der diese Teile in die Gesamtapplikation integriert.
Was die Server-Applikation macht, bezeichnet man gewöhnlich als Business Logic. Das Wort stammt aus der Umsetzung von Geschäftsprozessen im Code. Ein Beispiel ist die Zahlungsabwicklung in einem Online-Shop, die als Backend-Service implementiert wird. Aber auch beispielsweise die Steuerung von Produktion und Vertrieb einer produzierenden Firma werden typischerweise mit einer umfangreichen Backend-Applikation aus Services und Datenbanken umgesetzt. Die Wichtigkeit des Backends für das Geschäft macht deutlich, welche Verantwortung mit dem Berufsbild des Backend-Entwicklers einhergeht und warum gute Backend-Entwickler händeringend gesucht werden.
Der Weg zum fertigen Backend-Entwickler ist lang. Ein guter Backend-Entwickler kennt meistens nicht nur eine Programmiersprache. Typische Sprachen, in denen Backend-Applikationen geschrieben werden, sind Java, Python, Ruby, .NET, Go und JavaScript. Meistens verwendet der Backend-Entwickler ein Framework, das in der entsprechenden Sprache geschrieben ist. Beispiele sind Spring Boot für Java, Django für Python, Ruby on Rails für Ruby oder Node.js für JavaScript. Diese Frameworks bringen bereits sehr viel an Funktionalität mit, so dass sich der Backend-Entwickler auf die Business Logic konzentrieren kann. Als angehender Backend-Entwickler spezialisiert man sich dabei meistens auf eines der Frameworks, hält aber immer die Augen nach anderen bzw. neuen Lösungen offen.
Mit Datenbanken sollte sich ein Backend-Entwickler ebenfalls gut auskennen. Das ist ein weites Fachgebiet, welches wir hier nur kurz anreißen wollen. Gewöhnlich unterscheidet man zwischen relationalen Datenbanken und dokumentenorientierten Datenbanken. Relationale Datenbanken basieren meist auf SQL, einer Structured Query Language, und speichern Daten in Tabellen ab. Beispiele hierfür sind MySQL oder Oracle. Dokumentenorientierte Datenbanken speichern ihre Daten in Dokumenten ab, oft in einer JSON-Struktur. Beispiele sind MongoDB oder CouchDB. Während relationale Datenbanken die Welt großer Firmen und der Enterprise-Software dominieren, werden in der modernen Webentwicklung inzwischen lieber dokumentenorientierte Datenbanken benutzt. Ein guter Backend-Entwickler sollte beide Konzepte verstehen und die verschiedenen Datenbanken mit seinem Code ansprechen können.
Für die Verknüpfung von Backend und Frontend sind auch für Backend-Entwickler Kenntnisse des HTTP-Protokolls und der REST-Architektur notwendig. Oft ist zudem weiteres Wissen über die Funktionsweise des Internets gefragt, wie zum Beispiel Routing und TCP/IP, DNS und die verschiedenen Internet-Protokolle. Darüber hinaus sollte ein Backend-Entwickler gut mit der Command Line umgehen können.
Das Anforderungsprofil an einen Backend-Entwickler ist hoch. Entsprechend gibt es sie auch nicht wie Sand am Meer, dabei stehen sie hoch im Kurs. Was lehrt uns Angebot und Nachfrage? Je weniger es gibt und je mehr sie nachgefragt sind, desto besser die Einstiegschancen und auch das mögliche Gehalt. Das Gehalt liegt im Durchschnitt höher als das des Frontend-Entwicklers. Einsteiger können mit 2.700 - 3.500 € brutto monatlich rechnen, wohingegen erfahrene Backend-Programmierer in der Projektleitung nicht selten jenseits der 5.800 € verdienen.
Mobile-Entwickler
Und dann gibt es noch eine jüngere Gattung von Entwickler, die sich rasend schnell entwickelt hat und eine eigene Kategorie verdient: Der Entwickler für mobile Endgeräte oder Mobile-Entwickler.
Wir schreiben das Jahr 11 A.I. (anno iPhoni). So gut wie jeder hat eins: ein sogenanntes Smartphone, egal ob iPhone oder Android-Phone. Viele haben sogar mehr als eins und Tablets zählen genauso zu den mobilen Endgeräten. Geschätzt sind mittlerweile 55% der Internetnutzung mobil statt stationär vom Desktop oder Laptop. Nicht verwunderlich also, dass eine eigene Generation Entwickler sich hauptsächlich mit Client-Anwendungen mobiler Endgeräte beschäftigt.
Der Mobile-Entwickler beschäftigt sich mit dem Bau eben dieser Apps. Apps müssen schnelle und einfache Anwendungen sein, die in schlankem Code geschrieben sind und wenig Datenvolumen benötigen. Eine Besonderheit der mobilen Geräte ist, dass sie in Bewegung sind. Zu den am häufigsten verwendeten Anwendungen zählen GPS-Navigation und das Suchen von Orten in der Nähe. Auf mobilen Geräten ist Benutzerfreundlichkeit unverzichtbar. Schreiben fällt schwerer als am Desktop, daher sollte vieles mit einfachem Berühren des Touchscreens funktionieren. Die Bildschirmgröße ist zudem limitiert.
Was die Benutzeroberfläche, das User Interface, angeht, gibt es zwischen Android und iOS bisweilen große Unterschiede. Ein Beispiel ist der Zurück-Button, der bei Android meistens in der Zeile ganz unten ist, bei iOS aber oben links in der Menü-Leiste. So unterschiedlich wie die Bedienung ist auch das System. Die Sprachen, die Frameworks und das mobile Betriebssystem unterscheiden sich so grundlegend, dass sich Mobile-Entwickler meistens entweder auf Android oder auf iOS spezialisieren. Sehr wenige können beides und Stellen werden auch so gut wie immer nur für eins der beiden ausgeschrieben.
Android-Entwickler müssen Java können. Seit ca. einem Jahr ist jedoch Kotlin die bevorzugte Sprache, die vom Android-System unterstützt wird. iOS-Entwickler müssen Swift können, und idealerweise auch Objective-C, was von Swift abgelöst wurde, aber in alten Apps manchmal immer noch benutzt wird.
Bei der Entwicklung von Apps ist die jeweilige Entwicklungsumgebung das wichtigste Werkzeug. Bei Android ist das Android Studio, bei iOS Xcode. Sie stellt die benötigten Tools zur Verfügung, wie zum Beispiel den Emulator für das Smartphone oder graphische Editoren zum Entwerfen von Layouts.
Für die optische Darstellung der App gibt es im Gegensatz zur Webentwicklung deutliche Einschränkungen vom System, beziehungsweise Design-Empfehlungen. Während für Android das sogenannte Material Design empfohlen und standardmäßig unterstützt wird, so ist es bei iOS sogar relativ aufwändig, das vorgegebene Design der UI-Elemente (User Interface Elemente wie Buttons etc.) abzuändern. Es zählt allerdings zu den empfohlenen Prinzipien, das Design möglichst ähnlich zu dem zu halten, was der Benutzer gewöhnt ist. Das bedeutet, je weniger man vom standardisierten Design abweicht, desto besser.
Meistens funktionieren Apps aber nicht isoliert auf dem Gerät, sondern rufen Daten über die Netzwerkverbindung ab. Bei WhatsApp beispielsweise müssen die Chat-Nachrichten sowohl vom Server auf das Telefon geladen werden, sowie ausgehende Nachrichten vom Handy auf den Server. Das bedeutet, dass sowohl Android- als auch iOS-Entwickler in der Lage sein müssen, APIs (Server-Schnittstellen) anzusprechen.
Da mobile Geräte stets in Bewegung sind, kann es öfter vorkommen, dass die Netzwerkverbindung unterbrochen wird, und das Smartphone temporär offline ist. Für solche Situationen müssen sich Mobile-Entwickler mit dem Thema Cache und Offline-Funktionalität auseinander setzen. So können beispielsweise bestimmte Daten in einer kleinen, lokalen Datenbank gespeichert werden, und sind auch dann verfügbar, wenn die Verbindung unterbrochen ist. Andere Lösungen sind bestimmte Inhalte, die ersatzweise angezeigt werden, um dem Benutzer zu sagen, dass die App gerade keine Verbindung zum Internet hat.
Hierbei muss der Entwickler auf eine gute Architektur achten, denn all diese Komponenten wollen gut verwaltet sein, damit der Code übersichtlich bleibt und die Funktionsweise kontrollierbar. Oft genutzte Architekturen sind Model-View-Controller (MVC), Model-View-Presenter (MVP), oder Clean Architecture. Ein Mobile-Entwickler sollte sich eingehend mit den verschiedenen Architektur-Mustern beschäftigt haben, und die gängigsten kennen.
Sowohl bei Android als auch bei iOS gibt es ein recht großes Ökosystem an Tools und Bibliotheken, die meistens open-source veröffentlicht sind und kostenfrei angeboten werden. Für Android gibt es beispielsweise die Bibliothek Retrofit, die es einfach macht, APIs anzusprechen und mit Backend-Applikationen zu kommunizieren.
Das Ökosystem ist jedoch schnelllebig, das heißt Bibliotheken sind schnell veraltet. Man muss sich ständig um die Pflege der Versionen kümmern und sich auf dem neuesten Stand der Technik halten. Es gibt für beide Plattformen entsprechende Newsletter oder Newsfeeds, die man nutzen kann, um sich auf dem Laufenden zu halten. Für Android ist Android Weekly sehr beliebt, für iOS entsprechend iOS Dev Weekly.
Das Feld der Entwicklung für mobile Endgeräte ist relativ jung, aber wächst überaus stark. Nachwuchstalente werden bei vielen Firmen, die eine oder viele Apps entwickeln, gesucht. Das Einstiegsgehalt ist mit 2.600 - 3.300 € brutto monatlich sogar besser als das des reinen Frontend-Entwicklers. Noch gibt es nicht ganz so viele Spezialisten wie im Web-Bereich, daher ist jetzt eine gute Gelegenheit, einzusteigen.
Das sind sie, die drei gängigsten Arten von Softwareentwicklern. Welcher möchtest du werden?