
Hallo, mein Name ist Jarik Marwede und ich bin ein Software-Entwickler aus Deutschland.
Über Mich
Meine Softwareentwicklungsreise
Angefangen zu programmieren habe ich irgendwann in der Mittelstufe mit der Programmiersprache der Windows Befehlszeile namens Batch. Das war ziemlich interessant und hat mir die Grundlagen der Programmierung beigebracht. Nach einiger Zeit suchte ich allerdings nach einer neuen Sprache, weil Batch ziemlich beschränkt war.
Python
Nachdem ich ein paar Sprachen, die ich zu schwer fand, ausprobiert hatte, wie C# oder Java, lernte ich schließlich Python. Das war viel einfacher und ich konnte so gut wie alles machen, was ich mir vorstellen konnte. Es war außerdem das erste Mal, dass ich eine grafische Benutzeroberfläche mit Tkinter entwickeln konnte, was unglaublich spannend für mich war. Die nächsten Jahre verbrachte ich damit, Python so ausführlich wie möglich zu lernen und viele Programme zu entwickeln. Allerdings entwickelte ich in dieser Zeit ausschließlich Desktop-Anwendungen und wusste gar nicht, was man sonst noch alles programmieren konnte. Schließlich fand ich heraus, dass es mehr Programme gab, als nur Desktop-Anwendungen und begann mich auch für anderes zu interessieren, zum Beispiel Web-Entwicklung und maschinelles Lernen. Obwohl ich natürlich gern beides gleichzeitig gelernt hätte, entschied ich mich dazu, Web-Entwicklung zuerst zu lernen.
Web-Entwicklung
Allerdings konnte ich Web-Anwendungen, wie ich kurz darauf herausfand, nicht mit Python entwickeln. Generell kann man dies nur mit der Sprache JavaScript. Deswegen lernte ich, obwohl ich gerne alles in Python programmiert hätte, HTML, CSS und JavaScript. Ich war verwundert, wie ähnlich sich JavaScript und Python sind und kannte schon die Grundlagen von HTML und CSS durch das Programmieren von Web scrapern in Python. Bald lernte ich auch den Unterschied zwischen Front-End-Entwicklung und Back-End-Entwicklung.
Back-End Entwicklung
Die Kurse, von denen ich lernte, schlugen Node.js (eine JavaScript Runtime) für das Back-End vor, weil es auch mit JavaScript geschrieben wird, weshalb ich dies auch lernte. Ich versuchte auch mehrfach Python Frameworks wie Flask und Django zu benutzen, allerdings entschied ich mich später dafür, dass ich einfachheitshalber Express als Node.js Framework benutzen würde. Um die Kosten einiger meiner Projekte zu minimieren, lernte ich außerdem das Konzept der Serverlosen Entwicklung und Cloud-Funktionen kennen. Ich benutze AWS Lambda und einige andere AWS Produkte, um meine APIs zu entwickeln. In der zwölften Klasse begannen wir uns in der Schule mit PHP zu beschäftigen.
Front-End-Entwicklung
Während der Entwicklung meiner Anwendungen hatte ich des Öfteren ein großes Problem: Wie kann man den gleichen HTML-Code auf mehreren Seiten verwenden? Zwar hatte ich JQuery gelernt und konnte den Code damit dynamisch laden, allerdings kam mein Code so ziemlich schnell durcheinander. Daraufhin riet mir ein Freund, ich sollte ein Front-End-Framework wie Angular, React oder Vue lernen. Er empfahl mir Vue, also lernte ich das zuerst. Diese Webseite wurde selbst einmal mit Vue entwickelt. Aber nachdem ich verschiedene Strukturen für Webseiten/Webanwendungen gelernt hatte, merkte ich, dass Vue alleine als SPA Framework sich nicht gut auf die Ladezeit der Seite und die SEO auswirkte. Ich recherchierte über SSR und Static Site Generation. Um die Leistung meiner Webseite zu verbessern, entschied ich mich dazu Nuxt.js zu lernen, welches ein Framework für das Entwickeln von Vue Apps ist, mit dem die Seiten statisch generiert oder auf dem Server gerendert werden können.
C++ in der Schule
Nachdem ich zwischen der zehnten und der elften Klasse die Schule gewechselt hatte, hatte ich nun IT Unterricht und die erste Sprache, die wir lernten, war C++. Es war viel komplizierter als die Sprachen, die ich davor gelernt hatte, aber da es ein Anfängerkurs war, lernten wir nicht viel. Das erste Mal, dass ich mich richtig mit C++ auseinandersetzte, war für meine Facharbeit. Zusammen mit einem Freund entwickelte ich eine Cocktail-Maschine, welche Cocktails, die zuvor auf einem Touch-Bildschirm ausgewählt wurden, zubereiten konnte. Dafür benutzten wir einen Arduino Mikrocontroller, welcher eine eigene Version von C++ benutzte und mich dazu zwang mehr über Objekt orientiertes C++ zu lernen.
Java
Nachdem ich mein Abitur bestanden hatte, begann ich ein duales Studium bei der IServ GmbH und der Ostfalia Hochschule für angewandte Wissenschaften. Ab dem ersten Semester fingen wir an Java zu lernen. Es war nun schon einige Jahre her, dass ich das letzte Mal versucht hatte Java zu lernen und es lief dieses Mal ziemlich gut. Die Syntax war ziemlich ähnlich zu Sprachen, die ich schon kannte, wie C++ und JavaScript. Das einzige, an das ich mich noch gewöhnen musste, war das explizite Typensystem. Zuvor hatte ich nicht viel über Typen nachgedacht, während ich in Python oder JavaScript programmierte. Aber, da wir Java in fast jedem Kurs, in dem wir programmieren mussten, nutzten, gewöhnte ich mich daran und fing mit der Zeit an das Typensystem zu mögen, und zwar so doll, dass ich sogar anfing die optionalen Typenannotationen, die in Python eingeführt wurden, in meinen Hobby-Projekten zu nutzen und schließlich anfing TypeScript zu nutzen, um auch Typen in meinen JavaScript-Projekten verwenden zu können.
C/C++ im Studium
Während wir im Studium meistens Java zur Softwareentwicklung nutzten, hatte ich auch ein paar Kurse in anderen Programmiersprachen, wo sie für bestimmte Zwecke besser geeignet waren. In einem Kurs, der uns die Architektur eines Computers zeigen sollte, nutzten wir C, um wir damals in der Schule einen Mikrocontroller zu programmieren. Es gab außerdem einen Kurs, in dem uns die C Syntax beigebracht wurde und ich belegte später einen Wahlpflichtkurs über das Linux Betriebssystem, in welchem wir einen primitiven HTTP-Server schrieben. Diese Kurse fand ich ziemlich interessant und, in Kombination mit anderen theoretischeren Kursen, lernte ich dadurch viel darüber, wie Computer funktionieren.
Haskell
Eine weitere Programmiersprache, mit der ich während des Studiums in Kontakt kam, war Haskell. Ich nutzte es nur in einem Kurs meiner Vertiefungsrichtung (Software-Engineering), aber ich fand es faszinierend. Natürlich hatte ich schon von funktionaler Programmierung gehört, aber ich hatte bisher lediglich einige Funktionsweisen des funktionalen Programmierparadigmas in Python genutzt. Ich hatte noch nie eine Sprache benutzt, in welcher funktionale Programmierung vorgeschrieben war. Ein Kurs war natürlich nicht viel Zeit und ich konnte lediglich das Thema nur oberflächlich anreißen. Ich werde mich wohl in Zukunft noch weitergehend damit befassen, da ich das Thema sehr spannend finde.
PHP
Bei IServ, welches eine Firma ist, die eine Softwareplattform für Schulen entwickelt, die in ganz Deutschland genutzt wird, hatte ich wieder mit PHP zu tun. Dieses Mal war es sehr unterschiedlich zu dem, was ich an PHP code in der Schule geschrieben hatte. IServ ist eine enorm große Softwareplattform, welch in viele Module aufgeteilt ist und in den meisten davon das Symfony-Framework nutzt, um die Web-Entwicklung zu vereinfachen. Wir nutzten PHP nicht mehr als Templating-Sprache wie wir es in der Schule noch getan hatten. Stattdessen wurde die Twig Templating-Sprache benutzt und wir schrieben Objekt-orientiertes PHP. Als ich schließlich lernte, dass PHP ähnlich wie Python optionale Typenannotationen eingeführt hatte, begann ich es tatsächlich zu mögen. PHP wird wahrscheinlich nie meine Lieblingssprache sein, aber sie ist mittlerweile in Ordnung und Symfony ist ein wirklich mächtiges Framework, welches ziemlich angenehm zu benutzen ist, sobald man sich daran gewöhnt hat.