loader
banner

Resümee unseres Praktikanten


Wir sind Digital Artisans, und wie jeder Handwerker nehmen auch wir gern einmal Lehrlinge auf, um sie in unsere Handwerkskunst einzuführen. Heute stellen wir euch eines dieser Netscrapers-Nesthäkchen vor, nämlich unseren talentierten Praktikanten René Diana, der von August bis Dezember 2020 hauptsächlich für uns Kaffee kochen, das Büro feucht durchwischen und kistenweise Feierabendbier holen musste.


… Was natürlich Quatsch ist, und das bei weitem nicht nur aufgrund der Tatsache, dass wir zu fast 100% remote arbeiten und deshalb kein Büro im eigentlichen Sinne zum Durchwischen haben. Aber nein, René hat in seiner Zeit bei uns so einiges gelernt, das er euch nun in diesem Praktikumsbericht näher erzählen möchte. Auch ein Exkurs in sein finales „Lehrstück“, also ein Projekt, das er eigenständig durchgeführt und abgeschlossen hat, darf dabei natürlich nicht fehlen. Viel Spaß beim Lesen!


Meine Zeit bei den Netscrapers: Ein Erfahrungsbericht

Ich darf mich kurz vorstellen, mein Name ist René Diana und ich war während eines 5-monatigen Praktikums bei den Netscrapers als Software-Entwickler tätig. Zuvor habe ich die Technologische Fachoberschule für Mechatronik, Maschinenbau und Energie in Schlanders in Südtirol besucht, an der sich auch bald mein Interesse für Software-Entwicklung gezeigt hat. Nach dem Abitur wollte ich mich in die Berufswelt der Software-Industrie wagen und beschloss, dass ein Praktikum dafür zum Einstieg genau das Richtige wäre.


Aufmerksam auf die Netscrapers bin ich durch einen Zeitungsartikel über Christian in der Vinschgauer Bezirkszeitung „Der Vinschger” geworden. Dieser ließ in mir die Motivation wachsen, mich als Praktikant zu bewerben und so wertvolle Arbeitserfahrung in der Software-Entwicklung zu gewinnen. Zu meiner Überraschung und Freude bekam ich schon bald Antwort auf meine Bewerbung und wurde zu einem sehr netten Kennenlerngespräch eingeladen. Im August 2020 konnte ich dann auch schon mein Praktikum beginnen.


Bisher war ich es gewohnt, einen fixen Arbeitsplatz und mehr oder weniger streng geregelte Arbeitszeiten zu haben, weshalb die Arbeitsweise der Netscrapers neu, aber nicht unangenehm für mich war. Bei den Netscrapers wird Wert und Fokus auf verrichtete, qualitativ hochwertige Arbeit gelegt, anstatt auf die reine Zeit, die gearbeitet wird. Da ich diese Ansicht im Grunde teile, war es für mich kein Problem, mich bald daran zu gewöhnen.


Meinen Arbeitsplatz hatte ich im Coworking Space BASIS in Schlanders, ich konnte aber auch problemlos zuhause im Home Office arbeiten, denn die Netscrapers sind fast zu 100% remote organisiert. Die freie Einteilung der Zeit, solange die Arbeit zuverlässig geleistet wurde, hat mir besonders gefallen, da dies mir Freiraum gab, auch mal einen Vor- oder Nachmittag nicht so produktiv zu sein oder anderen Terminen Aufmerksamkeit zu schenken und die Arbeit einfach am nächsten Tag oder auch nachts nachzuholen.


… des Öfteren nachts.


Das Praktikumsprojekt „HackerNews“

Nach den ersten zwei, äußerst lehrreichen Monaten der Einarbeitung kam langsam die Idee auf, ein eigenständiges Projekt als Übung umzusetzen, um das zuvor Gelernte an einem praktischen Beispiel in Aktion sehen zu können. Aus diesem Grund ist schließlich auch ein Praktikumsbericht nebst (gekürztem) Blogbeitrag entstanden; zum einen als Fortschrittstagebuch für mich, aber auch zur Information für alle, die sich für die Web-Entwicklung und die Arbeitsweise der Netscrapers interessieren.


Die Aufgabe, auf die wir uns einigten, war es eine eigene Oberfläche in Angular (dazu gleich mehr) umzusetzen, um aktuelle Inhalte von HackerNews anzuzeigen und bewerten zu können. HackerNews ist, anders als der Name vermuten lässt, eine Social-News-Plattform, die hauptsächlich Artikel zum Thema Informatik und Unternehmungsgründung in relevanten Sparten bietet.

Was der Name vermuten lässt.

Aus der anfänglichen Idee ein einfaches Web-Frontend zu erstellen, um Inhalte von HackerNews anzuzeigen, wurde schnell viel mehr; so bekam ich die Möglichkeit, auch in die Entwicklung von Backend-Komponenten einzutauchen. Dieser „learning by doing“-Ansatz hat mir sehr gut gefallen und ich habe eine Menge dabei gelernt, das ich auch jetzt noch regelmäßig anwenden kann.

Angular, Express und .NET – Meine neuen besten Freunde


Keine Angst, dieses Bild wird bald viel ein klein wenig mehr Sinn ergeben.

Die Idee für das Projekt kam überhaupt erst auf, da zu dieser Zeit ein neues Projekt bei den Netscrapers begonnen wurde, bei dem Angular eingesetzt wurde, ein von Google entwickeltes Framework für Web-Apps. Ich hatte noch nie damit gearbeitet, weshalb wir beschlossen, für mich als Übung, mich eine eigene Applikation erstellen zu lassen. Thematisch und zu meinen privaten Interessen passend, wurde die HackerNews-Seite dafür ausgewählt. Meine Applikation sollte die Top-Stories der Seite anzeigen und es ermöglichen, für die einzelnen Stories einen Up-oder Downvote zu geben. Das war unter anderem gerade deshalb interessant, da es auf der offiziellen Seite nur die Möglichkeit gibt, Upvotes zu geben.

Nachdem ich mich in Angular eingearbeitet hatte, unter anderem durch Absolvieren der (übrigens sehr empfehlenswerten) Tour Of Heroes auf der Angular-Website, war ich schon bald mit der mir bis dato unbekannten Struktur vertraut und hatte ein grobes Design angefertigt, das die Top-Stories von HackerNews mithilfe von zwei Abfragen an die Websiten-API darstellen konnte. Zwei Abfragen deshalb, da die erste sämtliche Identifikationsnummern der Stories enthielt, die zweite dann für jede dieser IDs die eigentliche Story mit Inhalt.


Form follows function, aber könnte schlimmer sein.

Nun wurden die Stories mit dazugehörigem Bewertungs-Score und Up- und Downvote-Buttons dargestellt. Letzteres war jedoch noch nutzlos, denn die API erlaubt nur Lesezugriff und würde auch sonst nur Upvotes zulassen. Nach einiger Überlegung hatte ich die Idee für den zweiten Teil des Projekts, ein Backend mit Hilfe von Express.js, einem weiteren Webapplikations-Framework, zu erstellen.

Das Verschieben des Ladens der Topstories ins Backend war ein voller Erfolg, da dies nicht nur die Möglichkeit des Bewertens mit Up- oder Downvote bot, sondern mittels Cookies auch das mehrmalige Bewerten unterbinden konnte. Sicherer und effizienter wäre dies natürlich mit einer vollwertigen Authentifizierung, da in der von mir erstellten Variante durch Wechseln des Browsers oder Verwendung eines Inkognito-Tabs trotzdem noch mehrmals gevotet werden kann. Um den Rahmen des Projekts nicht zu sprengen, blieb es aber bei der einfachen Cookie-Variante.


Es funktioniert! Zum vollwertigen Social Media-Konzept fehlen nur mehr Fake News und Minions-Memes.

Bereits zu Beginn der Umsetzung des Backends mittels Express überlegten wir uns auch ein weiteres Backend mit Hilfe von .NET zu schreiben, da es in der täglichen Arbeit der Netscrapers viel gängiger ist und ich mehr Erfahrung in der dabei verwendeten Programmiersprache C# bekommen sollte. Zusätzlich lernte ich bei dieser Umsetzung noch etwas dazu, nämlich das Hinzufügen von Unit Tests. Unit Tests sind Software, welche den geschriebenen Code auf dessen Funktionalität überprüfen und sicherstellen, dass alle Komponenten auch so funktionieren wie geplant. Ich hatte zuvor damit keine Erfahrung, fand mich jedoch bald zurecht. Ich war jedoch überrascht, wie umfangreich diese Tests bisweilen werden können…

Verglichen mit der Express-Applikation war die .NET-Applikation zu schreiben viel strukturierter und übersichtlicher, und auch bei Problemen war es meist viel einfacher eine logische Lösung zu finden. Deshalb war es für mich persönlich auch die bessere Erfahrung als das Arbeiten mit Express, ich bin jedoch froh, beides ausgiebig kennengelernt zu haben.

Die Stunde der Wahrheit – Der Benchmark

In der Software-Welt geht nichts über harte Fakten und Zahlen, um die Effizienz einer Applikation festzustellen, und hier war es nicht anders. Besonders interessant war dies bei meinem Projekt, da zeitgleich zur Fertigstellung meines .NET-Backends, welches noch in .NET Core 3.1 erstellt wurde, .NET 5.0 veröffentlicht worden war. In einem Artikel hatte ich gelesen, dass diese neue Version um einiges leistungsfähiger sei als der von mir verwendete Vorgänger. Dadurch kam die Idee auf, die beiden .NET-Versionen untereinander zu vergleichen und dann beide mit dem zuerst erstellten Express-Backend.

Getestet wurde der Aufruf der HackerNews-Topstories mit Hilfe eines Tools namens Bombardier, das jeweils 1.000.000 Aufrufe über 300 verschiedene Verbindungen durchführte und die durchschnittlichen Aufrufe pro Sekunde, die benötigte Zeit, die Verzögerung und die Datenrate auswertete. Die Ergebnisse zeigten nicht nur einen deutlichen Vorsprung der beiden .NET-Versionen, sondern auch eine klare Steigerung von .NET 5.0 gegenüber seinem Vorgänger. .NET 5.0 war 27,28% schneller als .NET Core 3.1 und 97.08% schneller als die von Express benötigte Zeit; die restlichen getesteten Parameter zeigten ähnliche Vorsprünge.


Von unten nach oben: Lamborghini, Porsche, Eselkarren.

Fazit:

Im Großen und Ganzen war das Projekt für mich persönlich sehr interessant und vielseitig, da ich Einblicke in verschiedenste Technologien bekam, die mir nur teils oder noch überhaupt nicht bekannt waren. Meine Zeit bei den Netscrapers habe ich in vollen Zügen genossen, wertvolle Erfahrungen und solide Einblicke in die Software-Entwicklung gewonnen, aber auch kollegialen Teamgeist erfahren. Ich habe von Anfang an stets neue Aufgaben und Herausforderungen bekommen, an denen ich lernen und wachsen konnte, mir wurde aber auch wenn nötig unter die Arme gegriffen. Abschließend kann ich sagen, dass ich wirklich eine schöne Zeit bei den Netscrapers hatte, denn auch abseits aller beruflichen Erfahrungen war es immer unterhaltsam mit euch zu arbeiten!

Bildquellen: pexels.com, gifer.com, Screenshots des Autors, privat

Schreibe einen Kommentar

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