AllgemeinSoftware

10 Sachen die Entwickler 2019 wissen sollten

Veröffentlicht

Ob Neueinsteiger oder Profi, neue Sachen gibt es dank der rasenden Entwicklung von IT-Technologien in der Softwareentwicklung immer zu erlernen. Aber was muss man im Jahre 2019 eigentlich genau wissen? In dem folgenden Blogbeitrag wollen wir Ihnen einen Einblick in die wichtigsten Begrifflichkeiten, Strukturen und Softwaretechniken geben, die man in 2019 als Entwickler kennen sollte.

1. Datenstrukturen und Algorithmen

Als Programmierer sollte man Datenstrukturen und Algorithmen gut kennen; daran führt kein Weg vorbei. Es ist eines der wichtigsten Themen eines jeden Bewerbungsgesprächs und ohne Kenntnis der grundlegenden Datenstrukturen (z.B. Arrays, Linked Lists, Maps und Sets) ist es kaum möglich, eine reale Anwendung zu schreiben. Hierbei sind insbesondere Kenntnisse über das Serialisieren/ Deserialisieren von diesen Datenstrukturen in sogenannte JSONs nicht unwichtig. Dies wird hauptsächlich beim Austausch zwischen verteilten Systemen genutzt.
Ein weiteres Themenfeld, dass Sie sich als Entwickler in Zusammenhang mit Datenstrukturen und Algorithmen aneignen sollten, ist die optimierte Suche auf Datenstrukturen und das Bewerkstelligen von Suchproblemen mit idealer Laufzeit.

2. Entwurfsmuster

Entwurfsmuster sind trotz ihrer anfänglichen Lernkurve ein sehr wichtiges und hilfreiches Thema in der Softwareentwicklung. Sie ermöglichen es, bewährte Problemlösungen zu implementieren und sparen so Zeit und Aufwand in der Implementierungsphase. Durch die Verwendung gut verständlicher und dokumentierter Lösungen wird das Endprodukt für Team Mitglieder um einiges verständlicher. Wenn die Lösung leichter zu verstehen ist, dann ist sie im weiteren Sinne auch leichter zu warten.
Da die meisten Firmen Entwurfsmuster verwenden, ist es durchaus von Vorteil sich bereits auf diesem Gebiet Kenntnisse angeeignet zu haben, wichtige Entwurfsmuster sind beispielsweise Singleton-, Observer-, Model View View Model – (MVVM), Model View Presenter – (MVP) und Model-View -Controller – (MVC) Muster. Auch RESTfull APIs und Microservices zählen zu den wichtigsten Entwurfsmustern. Mehr zu Microservices finden sie in unserem Blog-Beitrag zu diesem Thema.

3. Datenbanken/SQL

Auch an Datenbanken führt im Jahr 2019 noch längst kein Weg vorbei. Angesichts der Allgegenwart von Datenbanken und ihrer immer steigenden Größe und Komplexität wird von einem Programmierer erwartet, dass er mit wesentlichen Datenbankkonzepten wie Normalisierung und Tabellendesign sowie SQL vertraut ist. Es gibt viele Datenbanken, aber es genügt, nur eine zu kennen. Der springende Punkt ist, dass man mit der Datenbank vertraut sein sollte. Man sollte wissen, wie man Daten einfügt, aktualisiert, löscht und SQL-Abfragen schreibt, um sie abzurufen.
In den letzten Jahren ist allerdings auch die Beliebtheit von sogenannten No-SQL Datenbanken angestiegen. No-SQL bezeichnet Datenbanken, die einen nicht-relationalen Ansatz verfolgen und so mit der langen Geschichte rationaler Datenbanken wie SQL brechen. No-SQL-Datenbanken wurden aus der Notwendigkeit heraus entwickelt, große, unterschiedliche Mengen von Dimensionen wie Raum, Zeit und Lokation auf möglichst effiziente Weise zu speichern und zu verarbeiten. Ein Anwendungsfall für eine No-SQL Datenbank wäre beispielsweise eine Geo-Datenbank.

4. UNIX

Wie SQL hat auch UNIX durch die ständige Weiterentwicklung den Test der Zeit überstanden. Auch UNIX gibt es seit mehr als 30 Jahren und genauso wie SQL wird es für viele weitere Jahre prominent sein.
Trotz seines Alters ist UNIX keinesfalls eingestaubt oder gar veraltet. Stetige Updates bringen immer wieder Neuerungen und Verbesserungen mit sich. Da jeder Entwickler irgendwann, ob gewollt oder ungewollt, auf Linux-Maschinen arbeiten muss, sind gute Kenntnisse der UNIX-Befehlszeile ein Muss.
Es ermöglicht ein effektiveres Arbeiten: Man kann Dateien durchsuchen, wissen, was mit dem System vor sich geht, indem man dessen CPU- und Speicherauslastung überprüft, sowie grundlegende und erweiterte Aufgaben ausführen. Auch die meisten Webserver/Webtechnologien, welche wir jeden Tag verwenden, würden ohne Linux-Server nicht existieren. Aus diesem Grund setzt sogar Microsoft in Windows 10 heutzutage auf Linux als Subsystem.

5. Containertechnologien

Wie lässt sich eine Software über unterschiedliche Plattformen und Infrastrukturen „bewegen“, ohne dabei ständig an die jeweiligen Voraussetzungen für den Betrieb angepasst zu werden? Die Antwort hierzu liefern die sogenannten Container. Sie stellen eine genormte, deterministische Umgebung für Anwendungen dar, welche somit einheitlich ausgeführt, kompiliert und getestet werden können. Wer also schnell und ohne großen Aufwand auf verschiedenen Systemen Anwendungen testen oder schreiben will, für den sind Container unentbehrlich. Die weit verbreitetste Containertechnologie stellt Docker da. Mehr über Docker finden Sie in unserem Blog-Beitrag.

6. Objektorientierte & funktionale Programmierung

2019 sollten Entwickler mit beiden Programmierparadigmen vertraut sein. Zwar bevorzugen viele der moderneren Programmiersprachen ein Paradigma, unterstützen aber mehrere.

Objektorientierte Programmierung
Die Objektorientierte Programmierung baut auf dem objektbasierten Programmierparadigma auf, welche Objekte zum Kapseln von Daten und Funktionen verwendet und erweitert diese durch Konzepte wie Vererbung und Polymorphie.
Objektorientierung gilt seit Jahren als Standard in der Programmierung. Man kann alle erdenklichen Aspekte der realen Welt in Klassen und Objekte bringen. Sowohl Business- und Webanwendungen, als auch andere Software werden meist objektorientiert modelliert und implementiert.

Funktionale Programmierung
Ein funktionales Programm besteht aus einer Reihenfolge von Funktionsaufrufen. Eigenständen Wertezuweisungen existieren nicht. Alle Elemente können als Funktion aufgefasst werden. Typische Einsatzgebiete für funktionale Programmierung sind künstliche Intelligenz, Compilerbau und mathematische Anwendungen. Sie ist der mathematischen Notation entsprungen und angelehnt sowie höher abstrahiert als die objektorientierte Programmierung.
Insbesondere bei der Lösung von Suchproblemen, die Suche bei bestmöglicher Laufzeit, haben Mechanismen aus der funktionalen Programmierung in andere Programmierparadigmen Einzug gefunden.
Grade dank dieser Verschmelzung ist es für Entwickler wichtig, beide Paradigmen zu kennen um abwägen zu können, welches zur Anwendung geeignet ist.

7. Aktuelle JavaScript-Entwicklung

Webentwickler kommen nicht um JavaScript oder äquivalente Skriptsprachen wie TypeScript herum. Für das clientseitige dynamische Ausführen von Code im Webbrowser gibt es aktuell keine realistische Alternative. Inzwischen kann JavaScript jedoch weit mehr als das. Grund dafür sind vor allem eine aktive Entwickler-Community und die vielen entstandenen Frameworks, Libraries und Tools. Mit JavaScript lassen sich nun auch Desktop- und Webanwendungen ohne Probleme realisieren. Für ersteres eignen sich Electron und Node.js.
Momentan im Trend ist die Entwicklung von modularen Clientseitigen JavaScript-Code, welcher JavaScript Dateien zur Nutzung im Browser zusammenführt und in einer Datei bündelt.
JavaScript führt seit 6 Jahren die Liste der beliebtesten Programmiersprachen in der alljährlichen Stack Overflow Umfrage und es scheint sich auch erstmal kein Konkurrent zu finden. Dementsprechend sind gute Kenntnisse in JavaScript überaus hilfreich und für viele Arbeitgeber auch wünschenswert.

8. IDEs

Die moderne IDE ist das wichtigste Werkzeug für jeden Programmierer. Für C-, C++- und C#-Programmierer ist die Wahl klar: Visual Studio. Und für Python-Entwickler wird Jupiter Notebook von Tag zu Tag immer besser.
Java-Programmierer haben die Wahl zwischen drei großen IDEs: Eclipse, NetBeans und IntelliJ IDEA.
Interessant ist hier auch das Hervorkommen von IDEs als Webanwendungen. Aktuelle IDEs wie Visual Studio Code und die aktuellste Eclipse-Vorschau basieren auf Webtechnologien.
Einen Vergleich der momentan erhältlichen Visual Studio Versionen bieten wir Ihnen hier.

9. GIT

Versionskontrolle wird verwendet, um den Quelltext historisch zu sichern, auf alte Punkte jederzeit zurückspringen zu können und um kollaborativ damit arbeiten zu können. Programmierer und Softwareentwickler müssen Versionskontrollwerkzeuge wie Git kennen. Glücklicherweise haben Git und Github den Markt gestrafft und in knapp 70% der Unternehmen wird Git verwendet, sodass Kenntnisse von Git meistens ausreichen um in der Arbeitswelt mitzukommen.
Git gut zu erlernen sollte eine Priorität für jeden Entwickler sein, und man sollte mit fortgeschrittenen Versionskontrollkonzepten wie Branching und Merging sowie dem Tool selbst, das sowohl die Befehlszeile als auch die GUI verwendet, vertraut sein, da Git dezentralisierte Arbeiten ermöglicht.

10. Netzwerkgrundlagen

Die heutige Welt ist eine vernetzte Welt und überall dort, wo man hingeht, findet man Computernetzwerke, angefangen von zu Hause, wo man über Wi-Fi seine Geräte nutzen kann, bis hin zu Schulen, Hochschulen und Büros, die Local Area Networks (LAN) und das Internet nutzen. In den letzten Jahren kommen auch vermehrt Personal Area Networks (PAN) zum Einsatz, um die Verbindung zwischen Geräten auf kleine Räume begrenzt zu ermöglichen.
Viele der Anwendungen, die man schreiben wird, werden auch keine eigenständige, sondern eine Client-Server-Anwendungen sein, bei der die Anfrage über das Netzwerk an einen Server geht. Clients greifen von überall auf Ihre Anwendung zu.
Unterm Strich muss man die Grundlagen des Netzwerks verstehen, um Ihre Anwendung zu verstehen, zu entwickeln und zu unterstützen.

LV

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.