Nach drei Jahren Informatikstudium „Software-Engineering“ an der HTWG in Konstanz am Bodensee und paralleler Beschäftigung bei YMC nutze ich diese Gelegenheit zu zeigen, was im Studium gelehrt wird und Praxisrelevantes in der Wirtschaftswelt, speziell in der Web-Agentur YMC, angewendet werden kann.

Da ich das Studium „Software-Engineering“ an einer Fachhochschule absolviere, wird der Lehrinhalt mit vielen praktischen Aufgaben vermittelt. Das ist natürlich nicht mit einem Studium an einer Universität zu vergleichen, wo der Schwerpunkt in Theorie und Mathematik liegt. Im Grundstudium spielt die Mathematik trotzdem eine zentrale Rolle. Sie bildet die Basis für fast jede technische Disziplin und ist in vielen Informatikbereichen notwendig. Bei YMC werden hauptsächlich Internet-Applikationen entwickelt und da ist mathematisches Grundwissen nützlich, aber es ist kein Hochschulniveau nötig. Jedoch fördert die Mathematik das logische und abstrakte Denken. Neben der Mathematik wurde im Grundstudium das Programmieren in C++, Rechnerarchitekturen, Digitaltechnik und etwas Assembler beigebracht. Das Wissen ist nötig um zu verstehen wie der Rechner von der Anwendung bis auf die Elektronikebene runter funktioniert und zusammenhängt. Als sehr nützlich habe ich die Vorlesung “Systemmodellierung” empfunden, wo UML ein Kernthema war und was Grundvoraussetzung für das Erstellen von sauberer Software-Architektur ist. Ebenfalls wurde objektorientiertes Programmieren mit C++ und logisches Programmieren mit Prolog unterrichtet. Auf objektorientiertes Programmieren mit PHP5 wird bei YMC grossen Wert gelegt.

Das Hauptstudium umfasste neben einigen weiteren Grundlagenkurse auch fachgerichtete Vorlesungen. Als sehr nützlich haben sich die Kurse „Datenbanksysteme“, „Software-Architekturen“ und „Software-Engineering“ erwiesen. Bei YMC sind MySQL-Kenntnisse erforderlich. Die Vorlesung „Datenbanksysteme“ bot mir die Gelegenheit, dieses Wissen noch einmal gründlich zu wiederholen und sich mit komplexeren Datenbankabfragen auseinander zusetzen. Weitere Themen wie Commit/Rollback, Trigger, Normalformen, Views, Transaktionen/Locking und andere Datenbankmodelle wurden behandelt. Im Kurs „Software-Architekturen“ wurden diverse Software-Architektur-Patterns und Entwurfsmuster für Software-Entwicklung präsentiert, wovon ich das eine oder andere Pattern auch bei YMC im Code wiederfand oder selber angewendet habe. Weiterhin wurden Techniken für verteilte Kommunikation und einige Dienste speziell für Java präsentiert. In der Vorlesung „Software-Engineering“, worum es geht wie man Software entwickelt, wurde auf alle gängigen Entwicklungs- und Projektmethodiken eingegangen. Bekannte Versionsverwaltungssysteme wie SVN, Git oder Jazz wurden vorgestellt. In diesem Zusammenhang haben wir verschiedene Kollaborationsplattformen, insbesondere Jazz, ausgetestet. Damit ist eine komplette Software-Entwicklung innerhalb einer IDE (Eclipse) mit Versionsverwaltung, Bugtracker und Projektmanagement möglich. Mit nur einer Plattform kann ein agiles Projekt realisiert werden ohne jemals die IDE zu verlassen. Bei YMC sind einzelne Vorgänge auf verschiedenen Plattformen verteilt. Der Entwickler bei YMC entscheidet selbst, welcher Editor oder IDE er unter Linux einsetzt. Oft verwendet wird die IDE PhpStorm mit welcher auch Git als Versionsverwaltungssystem aus der IDE bedient wird. Als Bugtrackingtool wird von Atlassian Jira verwendet. In der Online-Projektmanagement Software Liquidplanner werden Projekte festgehalten, geplant und getrackt. Diese drei Plattformen sind nicht direkt miteinander verknüpft, was einige Nachteile nach sich zieht. Somit sind die Entwickler unter anderem an Konventionen gebunden um die Datenkonsistenz über die Plattformen hinweg zu gewährleisten.

In der gleichen Vorlesung “Software-Engineering” wurden ebenfalls verschiedene Projekt- und Aufwandsschätzmethodiken vorgestellt, die in der Wirtschaft zum Einsatz kommen. Begriffe wie agile Projektentwicklung, Scrum, Extreme Programming, Wasserfallmodell und Rational Unified Process wurden erklärt. Das Projektmanagement ist bei YMC ebenfalls sehr agil gehalten. Bei YMC wird in einem Projektteam Scrum und in einem anderen Projektteam Kanban eingesetzt. Spannend war der direkte Vergleich zu sehen was im Studium zu Scrum gelehrt und wie es bei YMC eingesetzt wird. Entwickelt wird teilweise mit Methodiken des Extreme Programming: Pair Programming, tägliches Standup Meeting, Code Reviews, User-Stories und wöchentliche Deployments. Aufwandsschätzungen erfolgen bei grösseren Projekten im Team nach der Best und Worstcase Analyse.

Ein weiteres sehr spannendes Thema in diesem Kurs war die modellgetriebene Entwicklung. Mit der modernen Sprache Scala wurde eine domänenspezifische Sprache (DSL) inklusive Generator mit Hilfe von Xtext und Xtend modelliert. Als Software-Entwickler ist es ein Muss sauber zu programmieren und daher wurden die bekannten Programmierprinzipien wie DRY, KISS und diverse Methoden um Code zu messen vorgestellt, an die sich auch die YMC hält. Ebenfalls wurden in der Vorlesung verschiedene Continous Integration Tools sowie automatisierte Build- und Unittest-Werkzeuge ausgetestet. In einem eigenen Kapitel wurden die verschiedenen Programmierparadigmen vorgestellt. Rückblickend war dieser Kurs von grosser praxisrelevanter Bedeutung.

Diverse weniger umfangreiche Vorlesungen wie „XML“, „Internettechnologien“, „Werkzeuge“ und „Software-Qualitätssicherung“ vermittelten teilweise sehr brauchbares Wissen, das auch bei YMC sehr von Nutzen ist. Zwar wurden diverse Code-Analysen wie zum Beispiel mit valgrind und gcov in C++ und Unit Testing mit JUnit für Java durchgeführt, das Wissen ist aber genau so für jede andere Sprache, im speziellen für PHP bei YMC nützlich. In einigen Vorlesungsstunden wurden auch für YMC relevante Themen wie JQuery, CSS3, HTML5, Semantic Web, PHP und XML aufgegriffen. Das Schreiben und Testen von sauberen Code ist von grosser Bedeutung. Dazu wurden die verschiedenen Teststufen, Testarten und Werkzeuge bis hin zu Frontend-Testing mit Selenium vorgestellt.

Rückblickend beurteile ich das Studium an der HTWG in Konstanz als sehr praxisnah und empfehle ich jedem, der in einem Informatikstudium viel programmieren, Zusammenhänge verstehen und technisches Grundwissen erfahren will und mit Leistungsdruck umgehen kann. Grosser Wert wird auf praktische Aufgaben und Teamarbeit gelegt. Manche Fächer haben aber auch keinen direkten Bezug zur Praxis, vermitteln jedoch Grundlagen und klären Zusammenhänge. Viele Themen werden gestreift, um davon einmal gehört zu haben. Erst in der Arbeitswelt wird man vom Studenten zu einem Spezialisten. Wer von diesem Studium zu YMC kommt, bringt hilfreiches Wissen in den Bereichen objektorientiertes Programmieren, MySQL, Linux, Software-Architektur und Patterns, Softwareentwicklungsabläufe mit Scrum, Git, Extreme Programming und Unit-Testing mit. Allerdings sind tiefergehende Kenntnisse in PHP5, JavaScript und weiteren Internettechnologien für eine Tätigkeit bei YMC zwingend nötig.

0 Kommentare

Einen Kommentar abschicken

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