Kurze Vorstellung meinerseits.
Ich bin ja noch nicht so lange an der Hochschule.
Also ich habe,
bevor ich an der Hochschule Merseburg angefangen habe,
2020 habe ich als Software Entwickler und Software Architekt
bei einer Firma in Chemnitz
gearbeitet, die hieß, die heißt auch immer noch baselabs GmbH.
Die beschäftigt sich mit der Programmierung autonomer Fahrzeuge.
Davor habe ich in Dresden studiert und promoviert und ursprünglich
komme ich aus Berlin, nur um das mal so ein bisschen einzuordnen.
Meine Lehre im Kurzüberblick.
Ich mache sozusagen die Grundlagenausbildung für die
Wirtschaftsinformatiker und die Informatiker und auch
im Bachelor Wirtschaftsingenieurwesen
Dualer Studiengang.
Das umfasst die ersten vier Semester.
Dann habe ich auch noch ein paar Lehrveranstaltungen zusammen
mit anderen Kollegen, zum Beispiel die Algorithmen und Datenstrukturen
mit Professor Schenke und
eine Lehrveranstaltung über Rechnernetzprojekte, wo wir aber
eigentlich auch Programmiersprachen und Programmieraufgaben
bearbeiten.
zusammen mit dem Professor Heuert.
Und weitere Lehrveranstaltungen sind in Planung.
Genau.
Ich wollte einen Vortrag erst mal so aufteilen,
dass ich zunächst erst mal
grundsätzlich so ein bisschen sage, was Programmierung überhaupt ist.
Weil ich habe auch festgestellt,
bei der Diskussion mit Leuten, die eben nicht aus diesem totalen
Technikbereich kommen, dass da durchaus unterschiedliche Begriffe
wahrgenommen werden.
Auch in meinem privaten Umfeld erlebe ich das auch immer wieder.
Was bedeutet das eigentlich,
Programmierer oder Programmiererin zu sein?
Oder was bedeutet dieser Begriff Programmierung?
Was unterscheidet sich?
Wie unterscheidet sich ein Programmierer von jemandem,
der zum Beispiel ein Excel Sheet bearbeitet?
Ja, weil auch da kann man Formeln eingeben
und dann macht das was automatisch.
Das ist auch eine Form der Programmierung,
aber ein Programmierer macht noch etwas andere Sachen.
Dazu hier eine kleine Abbildung.
Der Rechner, den man hier in Schrankgröße sieht.
Das ist der ENIAC, das ist ein amerikanischer Rechner,
der als der erste universale Rechner gilt, der frei programmierbar ist.
Und man sieht auch sehr schön auf dem Bild,
die ersten Programmiererinnen waren
tatsächlich Frauen die diesen Rechner programmiert haben.
Der ist 1946 in Betrieb gegangen
und wurde
verwendet, um ballistische Systeme zu berechnen.
In Deutschland gab es zum Beispiel auch die Zuse Z3.
Die ist zwar vergleichbar damit, aber die ist eben nicht frei
programmierbar gewesen.
Also deswegen doch noch mal ein kleiner Unterschied.
Das Interessante hier ist ja, wie diese Frauen
diesen Rechner programmieren.
Die setzen hier tatsächlich Kabel
um Kabel in Schaltkreisverbindungen ein.
Also das war der Begriff, wie man damals programmiert hat
und das Programmieren an sich, ja, war jetzt nicht
so ein kreativer Prozess, sondern das war,
wir müssen jetzt ein gewisses Problem lösen.
Die Lösung
dafür ist irgendwie bekannt und wir müssen das jetzt
in diesen Rechner reinbringen.
Ja, und das haben die dann gemacht, sehr aufwendig gewesen, auch
relativ begrenzt in den Möglichkeiten hier
aber Universalrechner, also im Prinzip vergleichbar
mit den Möglichkeiten, die heute auch noch ein
normaler Computer oder ein Handy hat.
Was ist eigentlich so ein Computerprogramm
aus Sicht des Rechners?
Das hat vielleicht schon jeder mal gehört. Irgendwie ja.
Das ist im Prinzip einfach eine Folge von Bits und Bytes, die irgendwie
Instruktionen, Befehle und Daten codiert.
Und Bits und Bytes.
Naja, das sind
elektronische Zustände an oder aus null oder eins, wahr oder falsch.
So eine Befehlsfolge könnte zum Beispiel
so eine Verkettung von Bits sein, wie hier unten dargestellt.
Was das jetzt genau heißt, weiß der Rechner,
aber wir als Menschen wissen das in der Regel nicht, es sei
denn, man ist ein sehr hardwarenaher Programmierer.
So was gibt es natürlich auch,
aber das ist noch mal eine komplett andere Schiene.
So ein Computerprogramm aus Sicht des Menschen
ist im Prinzip erst mal
eine Lösungvorschrift,
eine Folge von Befehlen,
die ein bestimmtes Problem mithilfe eines Rechners löst.
Also so ein Programm ist im Prinzip eine formal
mathematische Berechnungsvorschrift
in einem maschineninterpretierbaren Format gehalten.
Und dieses Format
liegt uns in der Regel in Form von einer Programmiersprache vor.
Und Programme schreibt man dann in dieser textuellen Sprache
sozusagen als Text.
Also wie wir normal ein Word Dokument schreiben,
schreiben wir auch Programme in Textformat.
Und was der Programmierer oder die Programmiererinnen
dann machen, die implementieren im Prinzip einen Algorithmus bzw.
ein Modell, dass sich zur Lösung
einer Problemstellung irgendwie
sinnvoll ergibt oder entworfen wurde.
Und was die Aufgabe ist, dann sozusagen
das in so ein textuelles Programm umzusetzen.
Nun zu diesen beiden Begriffen wir hatten ja das gesehen
mit den Kabeln und dem Kabel umstecken. Ja,
das ist so ein bisschen nur dieser Umsetzungsbegriff.
Die Lösung ist irgendwie schon vorgegeben.
Also Variationsmöglichkeiten sind relativ begrenzt
und man programmiert das System irgendwie durch gewisse Eingaben.
Man bedient die Maschine so sozusagen direkt, man gibt ja Befehle.
Also was ich zum Beispiel auch noch aus meinen früheren Zeiten
kenne, ist, dem Großvater mal den Fernseher
zu programmieren, die Sender ein zu programmieren
oder was auch der Bruder, der Cousin
von meiner Frau häufig auch immer sagt, er programmiert
die Smart-Home-Anlagen von Kunden zum Beispiel.
Ja, das ist eine andere Art von Programmierung als
die, die wir jetzt hier in der Programmierung lehren und lernen.
Denn die umfasst im Prinzip eben auch
dieses Verstehen und Auswählen von den Modellen und den Algorithmen.
Auch das Entwerfen von Algorithmen inklusive
der ganzen Umsetzung, das heißt der Softwareentwickler bzw.
Programmierer, ja, das wird häufig sehr synonym verwendet.
Das ist aus meiner Sicht auch richtig.
Der ist wirklich
dafür zuständig, aus so einer Problembeschreibung
unter größtmöglicher Selbständigkeit und Eigeninitiative
eine Lösung zu entwickeln.
Und das umfasst eben
auch das Erstellen oder das Auswählen von Modellen
und das Erstellen und Auswählen und Verwenden von Algorithmen.
Also eine höchst kreative Tätigkeit.
Es gibt allerdings auch noch eine etwas vereinfachte
Definition, die man auch häufig in den sozialen Medien findet.
Der Programmierer als jemand, der Kaffee und diverse
Nahrungsmittel hier zum Beispiel Pizza in Programme bzw.
Folgen aus Bits und Bytes umwandelt.
Also ich erwische mich auch häufig dabei und kenne das auch noch aus der
Berufspraxis.
Das ist wirklich häufig so,
die meisten Programmierer trinken tatsächlich recht viel Kaffee.
Und arbeiten sehr viel an ihrem Rechner.
Natürlich. Und am Ende kommen dann halt entsprechende Lösungen raus.
Ich möchte auch noch ein kleines Wort sagen
zur Rolle der Programmierung
oder Softwareentwicklung im Bereich der Digitalisierung.
Ist ja auch irgendwie naheliegend.
Man sieht hier in den Diagrammen
die Anteile von Weltklassepatenten in
der Digitalisierung auf der linken Seite und speziell noch mal
für die Blockchain-Technologie auf der rechten Seite.
Und man sieht im Prinzip ja Nordamerika
Anteil von Weltklassepatenten relativ stabil zwischen 50 und 60 %,
dass endet hier irgendwie circa 2019
bis 2020 im Bereich.
Ostasien
auf dem aufsteigenden Ast und die europäische Union
inklusive Deutschland relativ im flachen Bereich.
Die Programmierer an sich, sind
natürlich hier in der Digitalisierung ein sehr wichtiger Treiber.
Sie sind sozusagen
die Maschinisten der Digitalisierung und ein sehr, sehr wichtiger Faktor.
Also ohne Softwareexperten,
ohne Programmierer, Softwareentwickler geht gar nichts.
Es ist ein sehr wichtiger Aspekt in der Digitalisierung,
wenn nicht sogar der zentrale Aspekt.
Und deswegen stehe ich auch heute hier.
Ich sehe das genauso und es ist auch sehr stark
meine eigene Einschätzung und Leidenschaft in dem Bereich.
Genau.
Jetzt kommen wir tatsächlich mal zum Punkt Lehre.
Da will ich jetzt kurz vorstellen, wie die Programmierung
aktuell so gehandhabt wird von mir in der Lehre und speziell auf
eine Veranstaltung,
die ich persönlich sehr schön finde und auch die Studenten
sehr schön finden.
Soweit ich das jetzt von außen wahrnehmen kann, sozusagen
sehr schön finden.
Genau
die ersten Semester bei uns, die sind relativ trocken.
Also wir machen erst so
strukturierte und objektorientierte Programmierung.
Also Begriffe, wie man sozusagen Programme strukturiert,
wie man Modelle in Quellcode in diesem Programmtext abbilden kann,
wie man Programme testet, wie man Fehlerbehandlung macht,
wie man Algorithmen in Programme umsetzt, wie man Algorithmen
bewertet.
Das wird natürlich dann auch in Zusammenhang mit anderen Fächern
in meinem Fachbereich und auch in anderen Fachbereichen kombiniert.
Also zum Beispiel in der Softwaretechnik
und Datenbanken und theoretische Informatik und auch
noch viele weitere Fächer.
Das Vorgehen in diesen, also
ganz besonders im oberen Teil hier auch in meinen
Veranstaltungen, ist so, dass die Studierenden sozusagen,
wenn sie mit der Programmierung in Kontakt kommen,
einerseits beschult werden in Form von einer Vorlesung
und gleichzeitig so Übungsaufgaben und Praktikumsaufgaben bearbeiten.
Das heißt, in meinem Fall gibt es ungefähr jede Woche
ein ganzes Übungsblatt
mit Aufgaben, manchmal auch ein paar Knobelaufgaben,
wo die Studenten, die Studierenden dann sozusagen
angehalten sind, diese Aufgaben zu bearbeiten.
Wir besprechen Lösungen gemeinsam.
Wir entwickeln auch Lösungen gemeinsam in einem Praktikumsformat
und es entwickeln sich teilweise sehr,
sehr schöne Diskussionen daraus.
Aber es ist eben
eher noch so auf diese rein technischen Kompetenzen gemünzt.
Also wie schreibe ich ein Programm, wie erstelle ich diesem Programmtext?
Wie kriege ich das Programm auf die Maschine?
Wie kann ich das ausführen?
Ja, das Berufsbild von so einem Programmierer/Softwareentwickler
ist aber
leider nicht der eines Einzelkämpfers.
Also findet man durchaus immer noch vorherrschend als ein Bild
dieser Hacker, der irgendwo im Kämmerlein sitzt und arbeitet
und da seine Lösung ausgeknobelt.
Klar, gibt es auch noch.
Aber die Tatsache ist, dass diese technischen Aspekte,
dieses Programmieren an sich nur ein Aspekt sind
der Arbeit eines Softwareentwicklers.
Also die gute Fachkenntnis, würde ich sagen, und da würde ich
das jetzt mal subsummieren, hier als ersten Anstrich genannt.
Daneben natürlich
Teamarbeit und Teamfähigkeit,
eine ganz wichtige Eigenschaft.
Denn es nützt nichts, wenn jemand
alleine Lösungen für sich entwickelt,
kann funktionieren für kleine Projekte,
aber im großen Umfeld, wo Sie richtig große Lösungen
wie so eine Suchmaschine wie Google oder so entwickeln,
dann brauchen Sie eigentlich mehrere 100 bis 1000 Entwickler
und die sind in Teams organisiert.
Was dann auch noch
häufig in der Lehre ein bisschen runterfällt,
ist so diese teamunterstützende Infrastruktur.
Das umfasst all diese Softwarewerkzeuge,
die man in der
Softwareentwicklung einsetzen kann, um irgendwie produktiv zu werden.
Versionskontrollsysteme, automatische Testssysteme,
automatische Softwareerstellungs-
und Zusammenbausysteme, Bildsysteme und so weiter.
Was in der Lehre eben,
na ja, eher so stiefmütterlich behandelt wird.
Ein weiterer wichtiger Aspekt ist Projektmanagement.
Da haben wir auch Kurse an der Hochschule.
Es ist aber eben auch
ganz besonders
wichtig, das
in Zusammenhang mit der Programmierung
mit der Softwareentwicklung zu machen.
Weil es
stellt doch noch mal ganz spezielle Herausforderungen.
Kommen wir gleich noch mal dazu.
Und dieser Begriff der Agilität, da hat man heute auch agiles
Projektmanagement in diversen Settings und Szenarios.
Das kommt ursprünglich
aus der Programmierung, aus der Softwareentwicklung.
Genau.
Und jetzt ist die Frage, wie man solche
Aspekte mit in die Lehre mit einbringen kann.
Und da möchte ich hier auf die Lehrveranstaltung
Programmierung 3 "Programmierprojekt" mal eingehen.
Das ist eine Lehrveranstaltung.
Aktuell noch im vierten Semester, demnächst im sechsten Semester
Angewandte Informatik.
Und die hat zum Ziel,
das professionelle Vorgehen bei der Softwareentwicklung
kennenzulernen und auch selber zu erfahren.
Dient als Vorbereitung auf die Berufspraxis.
Also ich bin selber relativ frisch noch aus der Praxis
kann ich jetzt aktuell noch sagen.
Das sind so Dinge,
die man im Studium relativ selten so richtig mitbekommt
und wo auch mir, als ich angefangen habe,
häufig auch Studenten gesagt haben, dass sie das vermissen.
Im ersten Semester habe ich das sehr oft gehört, dass ihnen hier
der Praxisbezug sehr stark fehlt und sie gar nicht wissen,
wofür sie das jetzt hier alles machen.
Irgendwelche Programmieraufgaben lösen oder so.
Und in diesem Zusammenhang
hatte ich das vorher zwar auch, aber an diesen
in diesem Zusammenhang
hat mich das noch einmal darin bestärkt,
so eine Lehrveranstaltung im Projektformat mit aufzusetzen.
Also Praxisrelevanz kommt im Prinzip
dadurch zustande, dass wir eben diese ganzen
Dinge, die man in der Praxis benutzt, Werkzeug, Entwicklungswerkzeuge,
Einhalten von Terminen, Lösen von technischen Problemen,
selbstständig Auflösen von Teamkonflikten und solche Sachen
mit Versuchen
in eine Lehrveranstaltung mit einzubetten.
Ich möchte auch kurz noch mal auf meine
auf meinen eigenen Hintergrund noch mit zurückgehen.
Also die Lehrveranstaltung,
die fußt so ein bisschen auf einer Lehrveranstaltung,
die an der TU Dresden angeboten wird, schon seit über 20 Jahren.
Ich war dort auch mal als in meiner Zeit als Student,
selber auch als Betreuer aktiv.
Also ich kenne die relativ gut
und da ist es so, ich habe halt noch geguckt,
was kannst du machen als Format für so ein Projekt,
so eine Projekt basierte Lehrveranstaltung
und nach kurzer Kommunikation mit meinen ehemaligen Kollegen dort
an der TU Dresden habe ich festgestellt
die haben in den letzten zwei Jahren doch ihren kompletten
Technologie-Stack auf ganz moderne Füße gestellt
und das die reine technische Umsetzung
und das Vorgehen bei der Implementierung
und den Aufgabenstellung, das hat mir sehr gut gefallen.
Deswegen habe ich das auch ein bisschen adaptiert.
Und auch wenn wir mal auf die
Gruppengrößen gucken, also die
schiere Menge an Gruppen, die, die dort betreuen, in so einem
Projekt Format so 30, 40, manchmal vielleicht auch 50 Gruppen
a sechs Studenten, das ist ein riesiges logistisches
Kunststück, das überhaupt
irgendwie in der Lehrveranstaltung unterzubringen.
Und ich muss sagen, ich war sehr begeistert,
als ich das gesehen habe und habe quasi
da ein bisschen
mithilfe technischer Hilfe und Unterstützung von dort
auch das hier so ein bisschen etablieren können.
Ja, genau.
Was sind jetzt die Erwartungen an die Studenten?
Na ja, die sollen eine
moderne Web-Anwendung entwickeln mit verschiedensten Technologien.
Die sind hier unten mal einfach logomäßig so dargestellt.
Das eine ist die Entwicklung von so einer Anwendung.
Daneben müssen sie natürlich auch so verschiedene,
also neben der Programmierung
auch noch verschiedene Kenntnisse
aus anderen Lehrveranstaltungen mit einbringen, also zum Beispiel
aus der Softwaretechnik, den Datenbanken
und natürlich
auch aus den Algorithmen und Datenstrukturen.
Neben dem reinen Programmieren
geht es natürlich in der Lehrveranstaltung auch darum,
fachliche und technische Dokumentation zu erstellen.
Also das wird häufig auch in anderen Lehrveranstaltungen gemacht.
Da wird aber dann nur die Dokumentation zum Beispiel erstellt,
hier in der Lehrveranstaltung, wo tatsächlich von Anfang bis Ende
ein kompletter Lebenszyklus für ein Softwareprojekt
durchzogen.
Was auch ein wichtiger Aspekt ist das Testen.
Unittesting auch
so ein spezieller Informatikerbegriff Integrations-Testing auch
und Versionskontrolle sehr, sehr wichtig.
Mit Versionskontrollsystem kommen Informatiker
massivst in Kontakt in der Praxis, findet in der Lehre häufig
überhaupt nicht statt,
also auch an anderen Hochschulen und Universitäten nicht.
Ist aber ein sehr, sehr wichtiger Aspekt.
Was sind sonst noch so Erwartungen an die Studenten?
Ja, die müssen auch ein stückweit
lernen, auch gerade wenn sie Softwareentwickler werden,
sich selbstständig Informationen zu erarbeiten.
Also es ist schwierig, als Lehrender
immer die Informationen in so einem riesigen Umfang,
wie sie nötig ist, für so eine Lehrveranstaltung
bereitzustellen.
Hier ist es ganz wichtig, dass die Studierenden lernen:
Okay, ich muss jetzt doch noch mal Google bedienen.
Ich muss jetzt auf die verschiedenen Plattformen gehen,
also hier zum Beispiel Stack Overflow ist eine ganz, ganz
phänomenale Plattform, um Programmiererfragen zu klären.
Und sie müssen ihre Scheu vor dem Englischen verlieren,
weil Englisch ist sozusagen
die Standardsprache in der Softwareentwicklung
oder in der Programmierung und insbesondere
also auch diese Plattform, die sie da für Dokumentationssuche
verwenden sollten, das sind englischsprachige
Plattformen.
Dann müssen sich die Studierenden als Team organisieren.
Also es sollen so an die sechs Mitglieder im Team
zusammenkommen.
Und es soll so sein,
dass natürlich alle Teammitglieder mit zum Erfolg beitragen.
Nicht, dass es dann zu Situationen kommt,
die kenn ich auch noch von früher, aus meinen Studentenzeiten damals,
wo es dann so
war, dass es häufig so war,
dass ein,
zwei Leute dieses Team getrieben haben
und der Rest, na ja, der hat sich so ein bisschen mitziehen lassen.
Ist natürlich alle irgendwie mit einzubinden.
Genau.
Was erstellen die die Studierenden?
Die erstellen sozusagen ein Projektportfolio.
Die einzelnen Zwischenergebnisse in der Lehrveranstaltung werden
als Portfolio gesammelt.
Übers Semester und zu bestimmten
Terminen, Meilenstein auch ein Begriff aus der Projektwelt
eingereicht sozusagen.
Die müssen terminlich dann da sein.
Und diese Abgabe,
dieses einhalten von Terminen,
die nehme ich immer als Prüfungsvorleistung.
Also die Bewertung erfolgt am Schluss und die Termine sind
eine Prüfungsvorleistung.
Und zum Abschluss gibt es dann eine Abschlusspräsentation,
wo sich jedes Team
über den Projektverlauf, über ihre Ergebnisse vorstellt
und wo es dann auch immer noch mal Diskussionen unter den Teams gibt
oder kritische Fragen.
Es ist eine sehr schöne Veranstaltung.
Es entwickelt immer eine sehr schöne Eigendynamik.
Genau.
Warum jetzt eigentlich diese Meilensteine?
Ja, da gibt es ja auch so ein schönes Diagramm.
Das kann man bei Wikipedia finden.
Das ist dieses studentische Aufschieben von Arbeit.
Wenn man jetzt sagt: Okay, wir geben jetzt zum Semesterende, hier
die Lösungen für das Projekt ab. Dann ist es häufig so.
Na ja, man landet hier bei dieser Kurve.
Ja, das sind so der Starttermin, und dann vergehen 2/3 der Zeit,
dann wird dann 1/3 der Arbeit gemacht und je näher der Endtermin
rückt, desto mehr Arbeit wird tatsächlich
dann erledigt, was dann natürlich am Ende zu einem gewissen Stau führt.
Ja, dazu eben die Meilensteine, die im Prinzip dazu dienen,
diese Kurven so auf kleine Intervalle zu beschränken,
die geht natürlich nicht weg, die Kurve.
Sie haben dann den ein Meilenstein
objektorientierte Analyse muss fertig sein.
Dann ist natürlich ja,
wir fangen an
und dann geht es in so einen kleinen
Bereich eben
genau so eine Kurve, nur ein bisschen gestaucht und eingegrenzt.
Und Ziel ist es eben dann doch irgendwie die Arbeit
über das Semester verteilt, gleichmäßig,
irgendwie
umzusetzen.
Kurz zum Entwicklungsprozess.
Ja, wir wollen auch agil entwickeln und auch nach dem
Prozessmodell "Scrum" entwickeln.
Aber wir wollen gleichzeitig natürlich auch vorab so
gewisse Planungsphasen mit
einbeziehen.
Das ist hier in dem sogenannten Angsthasen-Modell
mal dargestellt.
Da haben wir am Anfang
eine Projektinitiierung mit Anforderungsermittlung
und Projektplanung mit Architektur und Design auf der linken Seite.
Das sind so die ersten Teile, die die Studierenden erledigen müssen.
Und dann haben wir aus dem agilen Bereich Entwicklungszyklen.
Das sind diese Kringel im Hasenkopf drin,
das ist sozusagen die Umsetzung der Implementierung.
Und dann haben wir auf dem rechten Hasenohr so aufsteigend
die Abnahmetests
und die Erstellung von Projektdokumentation
und natürlich die Abschlusspräsentationen, die dann
sich auch noch dort eingliedert.
Scrum, an sich ist, denke ich, die dominante Vorgehensweise
bei der Softwareentwicklung, bei der agilen Softwareentwicklung,
insbesondere.
Das hat den Hintergrund, dass
Software Projekte selten komplett planbar sind.
Also Anforderungen ändern sich zwischendrin,
Phasen sind nicht so streng planbar, zwischendurch kommen
vielleicht mal zusätzliche Anforderungen dazu etc.
Die Studierenden selber,
die nehmen dann die Rolle in den Prozessframework jeweils ein.
Es gibt so verschiedene Rollen, kann ich gleich noch mal kurz zeigen.
Und dann gibt es
die Entwicklungszyklen nach Scrum, die nennt man Sprints.
Ja, das waren gerade auch die Kringel auf dem auf dem Hasen,
die da zu sehen waren
und ein so ein Entwicklungszyklus geht nicht mehr als eine Woche.
Also wir treffen uns quasi
jede Woche,
sprechen die Fortschritte, planen die nächste Woche und machen quasi
das wie in der Praxis, das auch gehandhabt werden würde.
Das noch mal grafisch dargestellt, wie so ein Team aussehen könnte.
Man hat hier rot
dargestellt, die eigentlichen Entwickler
dann gibt es eine herausgehobene Rolle, den Scrum Master.
Das ist so eine Art Mediator/Kommunikator,
der mit Externen kommuniziert,
der möglichst viele Probleme aus dem Entwicklerteam fernhalten sollte.
Und dann gibt es noch die Rollen des Auftraggebers
und das Product Owner.
Der Product Owner, der gibt so ein bisschen die
Marschrichtung bezüglich von Meilenstein
und Teilanforderung mit und ich als Lehrkraft übernehmen
dann praktisch diese beiden Rollen, zum Teil.
Alle anderen Rollen, die hier rot umrandet sind, die
füllt sozusagen das Team
von Studierenden aus.
Genau. So ein Sprint
läuft im Prinzip so ab, hier
links hat man sozusagen den Katalog an
Anforderungen, die die Studierenden am Anfang erarbeiten.
Dann gibt es jede Woche
sozusagen einen Planungsmeeting, wo man sagt okay,
für die nächsten Meilensteinen müssen wir eine gewisse
Menge an Anforderungen umsetzen.
Dann gibt es den Sprint bei uns, eine Woche
und dann setzt man sich wieder zusammen in der nächsten Woche
und guckt, was jetzt geschafft wurde und wie weit
die Studierenden praktisch gekommen sind mit ihrer Arbeit.
Und genau wenn wir dann am Ende fertig sind,
dann können wir ja hier so ein Entscheidungspunkt,
wenn wir fertig sind,
können wir sagen, wir haben alle Anforderungen umgesetzt, inklusive
vielleicht optionaler Dinge, die noch zu machen
gewesen wären, oder wir gehen in die nächste Iteration.
Also so geht das praktisch von Woche zu Woche.
Natürlich sind die Studierenden auch noch angehalten,
sich untereinander regelmäßig zu koordinieren.
Da nutzen die verschiedenste Kommunikationskanäle, zum Beispiel
Discord, MS Teams und all diese Plattformen.
Das entscheiden die dann jeweils selber, wie sie das machen.
Auch Planungswerkzeuge nutzen die selbstständig
und wählen die auch selbstständig aus.
Genau, das ist nochmal eine Zusammenfassung
der Meilensteine, die es so gibt.
Also es gibt insgesamt
sieben bzw.
acht Meilensteine, wenn man die Abschlusspräsentationen mitzählt.
Also ganz links oben im Ohr gibt es so eine Analysephase,
dann technische Designphase, wo dann ein technisches Konzept entwickelt
wird, dann in der Mitte diese Kringelphase.
Das sind die Implementierungsmeilensteine
mit verschiedenen Qualitätsniveaus
und am Ende gibt es dann eben Rechts
Test, Abgabe und Abschlusspräsentation.
Das sind die Meilensteine, die bestehen.
Genau. Dann gibt es noch diverse Hilfestellungen.
Also ich habe im ILIAS eine ziemlich umfangreiche Sammlung
von Artikeln, Lehrvideos zum Teil
selbst gemacht, zum Teil von Externen noch mit referenziert.
Ich bemühe mich auch hier und da mal jemand von extern aus einer Firma
zum Beispiel den Projektantrag mal vorstellt, mit einzuladen.
Genau da arbeite ich für dieses Semester noch dran.
Da ist jetzt noch nichts konkretes, feststehend,
aber ich bin noch ganz guter Dinge, dass das klappt.
Genau.
Ich helfe den Studierenden natürlich mit der Einführung der ganzen
Kerntechnologien, die wir haben, mit denen sie umgehen müssen.
Und wie gesagt, ich mache ein sehr intensives Coaching mit den Leuten.
Jede Woche sitzen wir da mindestens eine Stunde
zusammen, in kleiner Gruppe.
Dann auch noch wichtig Versionskontrolle.
Jede Gruppe hat ein github.com
Repository, das so eine zentrale Stelle,
wo man sozusagen Quellcode
ablegen kann und wo man sehr schön zusammenarbeiten kann.
Kann man theoretisch auch für andere Formate,
die nichts mit Programmierung zu tun haben, nutzen.
Dann gibt es diverse Beispiel Projekte,
die zu Inspirationszwecken da sind.
Es ist immer schwer auf der grünen Wiese anzufangen.
Es ist gut, wenn man Beispiele hat, die man sich anschauen kann
und die zeigen, wie man die Technologien verwenden soll.
Und die Beispielprojekte,
die haben teilweise sehr umfangreiche Dokumentation
und sehr ausführliche
Quellcode-Annotationen
eben auch für Dokumentationszwecke.
So, dass wäre es erst mal zu der Vorstellung.
Jetzt will ich mal kurz noch ein paar
Ergebnisse zeigen, wie das aussieht, was danach rauskommt.
Das war jetzt alles so ein bisschen sehr theoretisch.
Das kann zum Beispiel so aussehen.
Also hier haben wir zum Beispiel eine Anwendung, eine Webanwendung,
die für eine Apotheke, eine Ladensoftware darstellt.
Da sieht man halt hier den Anmelde-/Startbildschirm sozusagen.
Da hat sich gerade jemand eingeloggt und
im oberen Bereich
sehen wir hier zum Beispiel das angebundene Labor
als Auswahlmöglichkeit, eine Warenverwaltung,
eine Nutzerverwaltung, ein Bilanzsystem
und Reporting für die Krankenkassen.
Das sind überall aktive Funktionalitäten dahinter
und das ist kein Mock Up.
Das ist eine tatsächliche Anwendung, die auf einem Parteiensystem läuft.
Ja, wir haben einen Webserver, Webservices
und die laufen im Prinzip
in dieser Anwendung.
Und das, was Sie sehen, ist jetzt die Oberfläche dazu.
Genau.
Da kann man
hier zum Beispiel auf solche Menüs klicken, hier jetzt mal ausgewählt
der Nachbestellvorgang
für die Apotheke, dann hat man hier eine Eingabemaske.
Da kann man dann sagen okay, ich habe jetzt nur noch
20 mal
Aspirin, 20 Packungen Aspirin zu 7,89 €
und ich möchte jetzt noch
100 nachbestellen und dann macht man das, drückt man hier auf das Plus
und kann die Nachbestellung auslösen.
Auch sehr schön
war eine Campingplatzverwaltung, also komplett andere Domäne.
Hier konnte man sozusagen für den geneigten
Campingplatzbesucher sozusagen Campingplätze buchen.
Verschiedene Größen von Campingplätzen,
Zubehörauswahl, Badmintonschläger, Tischtennisschläger,
man konnte da Strom mit buchen und verkaufen in Kilowattstundenweise
oder nach Abrechnung, Wasserverbrauch etc.
Das ist jetzt hier mal ein Ausschnitt
aus dem Zubehörkatalog, hier ist dann der Preis.
Dann fügt
man, kann man wie in einem Webshop auch normal in den
Warenkorb hinzufügen und dann entsprechend ausleihen.
Da gab es hier auch noch mit einer Kalenderanbindung,
wo man dann verschiedene
Campingplatzgrößen, hat hier leider nicht ganz raufgepasst.
Zum Beispiel in der Hölle 666
ist zum Beispiel einer dieser
Plätze, der ist ein ganz besonders großer Platz.
Ist auch nicht immer frei.
Manchmal ist die Hölle voll oder zugefroren.
Also sind also die Studierenden, die haben hier immer mal
ein paar Witze platziert.
Also das dann zum Beispiel auch so eine Abfrage,
die Sie auch mal bei den Cookies sehen, wo Sie dann
der Cookiesetzung zustimmen, wenn Sie browsen.
Kennen Sie ja bestimmt. Wenn Sie auf
eine neue Webseite gehen, dann kommt so ein Fenster.
Dürfen wir Sie jetzt nachverfolgen und hier steht dann,
ob man seine Seele verkaufen möchte.
Also die sind mit sehr viel Spaß und Kreativität dabei gewesen.
Ab und an habe ich auch vor,
so externe Aufgabenstellungen zu vergeben.
Also die Aufgabenstellung jetzt,
die zwei, die wir gesehen haben, das waren tatsächlich so
vorgegebene von mir.
Hier sehen wir mal eine ganz andere Sache,
nämlich eine eine App, die wir für den Merseburger Elferrat
Faschingsclub entwickelt haben.
Das war auch mal im HoMe-Magazin in einer kurzen Vorstellung zu lesen.
Das ist
eine Android oder iPhone App, was komplett anderes.
Die läuft nicht im Browser, die läuft hier direkt
im Mobilfunkgerät, auf dem Endgerät.
Genau.
Und da kann man sozusagen, wenn der, wenn der Elferrat feiert,
kann er da zum Beispiel neue Liedtexte hinterlegen.
Also die haben ja für Faschingslieder
bestimmte Texte und man kann sich dann im Prinzip
auch mit der Originalmusik dann zum Beispiel bei YouTube
mit verlinken.
Wir sind auch kurz davor, die tatsächlich in den AppStore
in den Playstore von Android zu bringen.
So, jetzt bin ich fast am Ende.
Eine Sache:
Das Gros der Studierenden war mit vollem Eifer dabei.
Denen hat das Spaß gemacht.
Das war ein komplettes Coronasemester.
Wir waren online bis auf den Präsentationstermin
am Ende.
Leider sind trotzdem einige Dinge aufgetreten, die unschön waren.
Ich hatte große Probleme mit einigen Studierenden, die
das Konzept mit
den Meilensteinen
nicht verstanden hatten und dann dazu übergegangen sind, sich
direkt Inhalte aus dem Internet zu ziehen.
Und die als ihre eigenen auszugeben.
Das war eine sehr unschöne Angelegenheit.
Dann habe ich auch immer wieder Probleme mit Studierenden,
die einfach drei Wochen zu spät ins Semester starten
und ähnliche Dinge.
Das hat mir als Anfänger
doch ganz schön große Schwierigkeiten gemacht.
Da musste ich mich erst mal dran gewöhnen.
Jetzt kündige ich das groß an,
dass ich das von Anfang an
nicht gutheiße.
Genau.
Kurzer Überblick: Lehrevaluation.
Man kriegt immer leider nur ganz kleine Stichproben, aber
insgesamt ist die Lehrveranstaltung sehr,
sehr, sehr positiv angekommen.
Insgesamt als sehr gut von allen, die hier teilgenommen haben.
Schwierigkeitsgrad in der Mitte, leichte Tendenz zu schwer.
Finde ich auch gut.
Und auch ganz wichtig hier, ganz unten, hier.
Wie oft haben Sie schätzungsweise an der Lehrveranstaltung teilgenommen?
Also die haben eigentlich alle immer an jedem Termin teilgenommen.
Finde ich auch
sehr, sehr schön.
Lob und Kritik,
ja positiv hoher Praxisanteil, praktisches Arbeiten in der Gruppe,
Idee und Umsetzung von so einem Projekt
und der Lernweg an sich sind sehr positiv angekommen.
Hier wünscht sich noch jemand mehr Material zum Kurs.
Okay, den versuche ich natürlich auch
nach zu kommen.
Der schmale Grat zwischen Spaß
fruchtbar und unerträglich stressig.
Ja, den gibt es.
Das ist sehr schwierig einzuhalten.
Ich hoffe, ich treffe das auch in Zukunft noch.
Aber insgesamt war ich sehr, sehr, sehr froh
über die Evaluationsergebnisse und die Lehrveranstaltungen
und habe mich auch wirklich über die Abschlusspräsentation
und die Ergebnisse sehr sehr gefreut, muss ich sagen.
Genau.
Zum Abschluss noch ein Zitat
von Steve Jobs: "Jeder Mensch in diesem Land
sollte lernen, wie man einen Computer programmiert,
weil es dich denken lehrt." Und da ist tatsächlich,
zumindest meiner Meinung nach, durchaus eine Menge dran.
Gut, das
war's.