Was ist eine ausreichende fachliche Tiefe des Abschlussprojekts?

Viele Projektanträge zum Abschlussprojekt werden abgelehnt, weil das umzusetzende Projekt nicht die nötige fachliche Tiefe aufweist. In unserem Prüfungssystem gibt es dafür sogar einen expliziten Ablehnungsgrund. Doch was heißt es genau, dass die fachliche Tiefe nicht erreicht wurde? Welche fachliche Tiefe ist überhaupt angemessen und wie erkenne ich als Prüfling, ob ich sie erreiche?

Mein Standardbeispiel: Projektverwaltung

Ich führe als Beispiel für eine übliche Projektarbeit für Anwendungsentwickler immer eine klassische Web-Anwendung an. Nehmen wir das oft strapazierte Beispiel einer Zeiterfassungssoftware oder einer Projektverwaltung. Dabei handelt es sich um eine kleine Web-Anwendung mit ein paar Datenbanktabellen, etwas fachlicher Logik und ein paar netten Oberflächen.

In solch einer Anwendung kann ich als Anwendungsentwickler alles zeigen, was ich in meiner dreijährigen Ausbildung gelernt haben sollte. Soll ich ein Projekt enpfehlen, führe ich deswegen gerne dieses Beispiel für ein fachlich ausreichendes Projekt für die Abschlussprüfung an.

  • Ich kann eine Datenbank modellieren, z.B. mit einem ERM oder Tabellenmodell.
  • Ich kann ein Klassendesign entwerfen, z.B. mit einem Klassendiagramm oder gar mit Test Driven Development.
  • Ich kann die Oberflächen gestalten, natürlich nach ergonomischen Gesichtspunkten und mit Mockups für den ersten Entwurf.
  • Außerdem muss ich mich um das Zusammenspiel der Komponenten kümmern und brauche dafür eine tragfähige Architektur, z.B. MVC.

Kurz gesagt ist in solch einem Projekt alles Technische enthalten, was man heutzutage in der Programmierung können muss. Und ich kann mich vieler Methoden der Softwareentwicklung bedienen, die mein planvolles Vorgehen dokumentieren.

Hast du auch ein paar konkrete Zahlen?

Als ganz grobe Daumenregel für Anwendungsentwickler führe ich immer ein „klassisches“ Webprojekt an: kleine Datenbank, ein bisschen Logik, Frontend drüber. Da kann man das volle Spektrum der Entwicklungstätigkeiten zeigen.

  • ca. fünf Datenbanktabellen
  • ca. fünf Oberflächen dazu.
  • ca. zehn Klassen (tendentiell eher mehr)

Sollte die Anwendung eine komplizierte Logik umsetzen, kann natürlich bei den anderen Komponenten entsprechend gekürzt werden. Diese grobe Richtlinie ist sicherlich nicht allgemeinverbindlich. Es kommt immer auf den Einzelfall an. Ich möchte nur deutlich machen, dass eine triviale Konsolenapplikation, die eine Textdatei einliest und wieder speichert, nicht ausreicht. Es sei denn, die Applikation verwendet dafür einen selbst programmierten Verschlüsselungsalgorithmus. 😉

Brauche ich alle Komponenten?

Das heißt nicht, dass jedes Abschlussprojekt alle genannten Komponenten umfassen muss. Nicht alle Unternehmen haben die Anforderung, Weboberflächen über Datenbanken zu gestalten. In vielen Betrieben wird eine bestehende Software erweitert, eine Oberfläche angepasst, oder eine Datenbank um zusätzliche Tabellen erweitert. Oft werden auch Programme benötigt, die keine grafische Oberfläche haben. Wenn es z.B. um den Datenabgleich zwischen ERP-System und Webshop geht, der nachts als Batchjob laufen soll, ist es völlig unnötig, eine schön gestaltete grafische Oberfläche dazu zu entwickeln. Daher ist es völlig legitim, auf die ein oder andere Komponente im Abschlussprojekt zu verzichten.

Auch heißt es umgekehrt nicht automatisch, dass man ein fachlich ausreichendes Projekt hat, nur weil alle Schichten Berücksichtigung finden. Eine Weboberfläche mit einem Formular, die simple CRUD-Operationen gegen eine Datenbanktabelle durchführt, ist selbstverständlich nicht umfangreich genug.

Mein Anti-Beispiel: SAP-Projekte

Dieses Problem haben meiner Erfahrung nach oftmals die Anwendungsentwickler im SAP-Umfeld. Hier wird häufig nur sehr wenig tatsächlicher Code produziert, sondern viel mehr Zeit für die hochkomplexe Infrastruktur verbraten. Da gehen allein schon 7 Stunden drauf, bis man den richtigen Einstiegspunkt in die „Transaktion“ (oder wie auch immer das dort heißt) gefunden hat. 😉 Und die meisten Inhalte lassen sich dann mit SAP-Mitteln generieren, sodass der Entwickler eigentlich fast gar nichts mehr tun muss.

Aber es gibt auch Negativbeispiele aus anderen Bereichen. Mein persönliches Highlight aus einer Abschlussprüfung war eine einzelne HTML-Seite, die mit 5 Zeilen JavaScript angereichert wurde. Das Problem war, dass der Prüfling selbst überhaupt nicht verstand, warum dieses Projekt nicht ausreichend war. Seine Ausbilder hatten ihn offensichtlich überhaupt nicht darauf vorbereitet. Und er war sehr enthusiastisch und freute sich richtig über sein Projekt. Das tat mir dann wirklich leid, da die Schuld für dieses unzureichende Projekt sicherlich nicht beim sehr motivierten Prüfling zu suchen war.

Methodik ist das A und O

Kurz gesagt sollte ein Abschlussprojekt zeigen, dass du methodisch Software entwickeln kannst, die eine gewisse Komplexität aufweist.

Es geht darum, dass du deine Fähigkeiten angemessen unter Beweis stellst. Du sollst methodisch Software entwickeln und die Projektarbeit wirtschaftlich umsetzen. Dazu gehört u.a. eine Betrachtung der Kosten und der Amortisation, der Einsatz von Modellierungs- oder Dokumentationsmethoden (z.B. ERM, UML, EPK, Mockups), das Erstellen sinnvoller Dokumentationen (z.B. für Kunden, Betrieb, Entwickler), das planvolle Vorgehen bei der Projektumsetzung (z.B. Projektplan, Iterationsplanung, Gantt-Chart), eine gute Qualitätssicherung (z.B. Unit-Tests, Abnahmeprotokoll) usw.

Fazit

Wenn du dir nicht sicher bist, ob dein geplantes Programm als Abschlussprojekt ausreicht, dann frag deinen Ausbilder oder deine Berufsschullehrer. Die sollten die nötige Erfahrung mitbringen und die Anforderungen der IHKen einschätzen können. Alternativ stell dein Projekt doch im Forum vor oder schreib mir eine Mail. Ich helfe dir gerne mit einer kurzen Einschätzung weiter.

Portrait von Stefan Macke
Polyglot Clean Code Developer
Über den Autor
Ausbildungsleiter für Fachinformatiker Anwendungsentwicklung und Systemintegration, IHK-Prüfer und Hochschuldozent für Programmierung und Software-Engineering.

20 Kommentare zu “Was ist eine ausreichende fachliche Tiefe des Abschlussprojekts?

  1. Sergej sagt:

    Hallo Stefan, würde mal gerne deine Meinung wissen ob eine Grafische Oberfläche (GUI) für eine bestehende Daten Bank als ausreichend für eine Projekt Arbeit sein könnte?

  2. Stefan Macke sagt:

    Hallo Sergej, das kommt wohl auf den Umfang der UI an. Ist viel Logik drin? Sind viele Screens zu designen? Gibt es einen komplexen Workflow?

    Normalerweise sollte ein UI ja frei von Logik sein. Daher würde mir ein simples „Zusammenklicken“ von Masken nicht reichen.

  3. David sagt:

    Hallo Stefan,

    ich sitze gerade an meinem Projektantrag und komme dabei leicht ins Grübeln ob das Projekt den Anforderungen genügen kann.

    Ziel ist es eine Reisekostenverwaltung zu entwickeln.

    Meine Firma hat eine eigene Plattform für ITSM Anwendungen entwickelt. Diese können mit einem Designer erstellt werden. Dass heißt Entitäten und Relationen werden über eine GUI eingetragen, das Layout per Drag and Drop zusammengestellt und am Ende Spuckt es mir eine Anwendung aus die ich dann verwenden kann.
    Die Reisekostenverwaltung selbst wird alles andere als Trivial. Es soll einen Verwaltungsbereich geben, es sollen Prozesse automatisiert werden (Antrag, Prüfung, Genehmigung, etc.), das Datenmodell muss ich natürlich auch entwerfen.
    Im Prinzip bietet das Projekt alles bis auf einen, zumindest meiner Meinung nach, angemessenen Anteil an tatsächlicher Programmierung, es wird aktuell wohl bei etwas JavaScript bleiben.

    Eine Option wäre natürlich die Anwendung komplett selbst zu entwickeln. Das könnte aber wieder schnell den Rahmen sprengen. Außerdem würde die Grundlage wegfallen, nämlich die bestehende auf der eigenen Plattform basierende Zeiterfassung um eine Anwendung für die Verwaltung der Dienstreisen zu erweitern um interne Prozesse nach und nach alle auf der eigenen Plattform zu verwalten.

    Ich bin mir da momentan sehr unsicher und wäre über eine kurze Einschätzung sehr dankbar.
    Entschuldigen sie die doch sehr lang gewordene Frage.

    Liebe Grüße!

  4. Stefan Macke sagt:

    Hallo David, dein Hauptanteil sollte Programmierung sein. Wenn du nur etwas „zusammenklickst“, würde mir das als Projekt nicht reichen.

  5. Stephan sagt:

    Hallo Stefan,

    mein Ausbilder möchte mit mir gerne die Redistribution von React Komponenten als Projekt angehen. Konkret soll ich dabei schauen, wie man React Komponenten zum Beispiel in Razor oder NET MVC einbinden kann und den eigentlichen Sourcecode möglichst abkapselt. Später sollen meine Erkenntnisse dann für unsere Produkte eingesetzt werden. Das ganze soll ich dann für das Projekt anhand einer Beispiel react Komponente darstellen. Möglich wäre da die Darstellung eines Barcodes oder Charts.

    Denkst du das reicht als Projekt?

    Danke schon mal 🙂

    Lg
    Stephan

  6. Stefan Macke sagt:

    Hallo Stephan, mh… das hört sich jetzt nicht nach einem „klassischen“ Projekt an. Eher nur Programmierung ohne Datenbank und Oberfläche, oder? Kann reichen, aber das ist anhand der drei Sätze schwer zu sagen. Stell deinen Projektantrag doch mal im Forum ein.

  7. Hassan sagt:

    Guten Tag Herr Macke ,
    in der Firma werden call detail records in einer csv file gespeichert . Ich würde diese Daten in eine Datenbank überladen und anschließend mit verschiedenen SQL Abfragen Charts erstellen um Statistiken darzustellen wie z.B welcher Mitarbeiter die meisten anrufe getätigt hat .
    Könnte ich das als Projekt für meine Abschlussprüfung verwenden ?

  8. Stefan Macke sagt:

    Hört sich erstmal gut an.

  9. Eugen sagt:

    Hallo Stefan,
    ich mache Praktikum, wo ich automatisierte Tests (E2E) mit JavaScript schreibe und möchte ich in Dokumentation zum Projekt ganze Prozess beschreiben, und meine frage ist ob JavaScript für Projekt reicht?

  10. Stefan Macke sagt:

    Hallo Eugen, das ist aufgrund dieses einen Satzes schwer zu sagen. Du musst schon genauer werden. Alternativ schreib mal einen Projektantrag und stelle ihn ins Forum für Feedback.

  11. Maximilian sagt:

    Hallo Stefan,

    ich mache mein Praktikum in einer Werbeagentur und mein Chef hat mir folgendes Projekt angeboten, bei dem ich mir nicht sicher bin ob der Umfang ausreichend ist:

    Erstellung eines Login-Bereichs auf der Agentur-Website für Kunden. Dort sollen bisher erstellte Projekte für die jeweiligen Kunden einsehbar sein und gegebenenfalls auch – Produkte bei denen dies Sinn macht – zu downloaden sein.
    Auch hat er mir gesagt, dass das Projekt auch erweitert werden kann, wenn es so noch nicht umfangreich genug ist.
    Behandelte Themen wären somit ja: Datenbanken, Frontend Gestaltung, Passworteingabe/Sicherheit.

    Mich würde interessieren ob du das Thema umfangreich genug findest und wenn nicht, womit man es erweitern könnte.
    Möchte mich jetzt schon bedanken, auch für die ganzen hilfreichen Infos auf deiner Seite.

    LG Max

  12. Stefan Macke sagt:

    Hallo Max, hört sich erstmal gut an, aber folgende Fragen/Anmerkungen hätte ich:

    • Warum einen Login selbst implementieren? Gibt es das nicht „fertig“?
    • Wenn du es selbst implementierst, achte unbedingt auf die Security, insb. der Passwörter!
    • Nur der Login wäre mir zu wenig (und außerdem langweilig). Du solltest den Fokus eher auf die Fachlichkeit (Projektliste, Produkte) legen und den Login „nebenbei“ mitmachen.

    Viele Grüße!
    Stefan

  13. Patrick sagt:

    Hallo Stefan,

    mein Praktikum mache ich in einem Medizinischen Unternehmen. Seit mehreren Jahren Sammeln sie Patienten Daten (Eigenes Datei Format), und nun wurde ein neues Gerät entwickelt welches die Dateien in ein anderes Format speichert wie das alte Gerät.

    Idee der Firma für mein Projekt ist es ein Programm zu entwickeln mit einer GUI, welches die alten Dateien in das neue Format Konvertiert, oder auch anders herum. Damit soll gewährleistet werden, das man die Dateien auf beiden Geräten nutzen kann.

    Da in dem Projekt keine Datenbank genutzt wird, frage ich mich ob das etwas für eine Projektarbeit ist? Oder ist Datenbankenanbindung nicht zwingend notwendig für das Projekt?

    Gruß

    Patrick

  14. Stefan Macke sagt:

    Hallo Patrick, wie oben beschrieben muss nicht jedes Projekt eine Datenbank haben. Wenn der Rest der Anwendung entsprechend komplex ist, sollte das kein Problem sein. Beim geschilderten Problem stelle ich mir das aber schwierig vor. Für mich hört sich das nach einer recht simplen Oberfläche mit Aufruf eines bestehenden Converters an. Das würde mir persönlich als Projekt nicht ausreichen.

  15. Andreas sagt:

    Hallo Stefan,
    ich mache mein Praktikum in einer Vertragsgesellschaft und mein Chef hat mir folgendes Projekt angeboten, Persönlichkeitstest DISG als Webanwendung, zuerst sollte Vorname und Nachname abgefragt werden, danach kommen 48 Fragen aus der alten Excel Tabelle, bis zur Auswertung soll nochmals email, Telefon abgefragt und das alles in Datenbank gespeichert und per email verschickt werden.

    Viele Grüße
    Andreas

  16. Stefan Macke sagt:

    Hallo Andreas, interessantes Projekt! Hast du auch eine Frage oder wolltest du nur dein Thema vorstellen?

  17. Philipp sagt:

    Hallo Stefan,

    für mich wurde folgendes Projekt vorgeschlagen:
    Immer Freitags, gibt es bei uns in der Firma ein gemeinsames Mittagessen (solange nicht gerade Corona ist). Bisher musste immer jemand einzeln klären, was bestellt wird, das dann wieder allen mitteilen und dann von jeder person einsammeln, was genau die Personen essen wollen (mit sodnerwünschen etc.).
    Um das zu vereinfach soll zur Unerstützung ein Programm angelegt werden, in dem die Person die verschiedenen Optionen zur Auswahl stellt (Pizza, Burger, etc.) und dann eine Abstimmung startet. An dieser Könnnen alle Mitarbeiter teilnehmen (natürlich jeder nur einmal). Die Ergebnisse werden ausgewertet und eine Mehrheitsentscheidung getroffen (Diese Kann durch den Admin immernoch verändert werden oder der Schritt komplett übersprungen werden und einfach eine Art des Essens Festgelegt werden) Dann geht eine Info an die Mitarbeiter raus und Bittet um die Genaue Bestellung (Dabei wird ein Link zu online Speisekarte versendet)
    Die Ergebnisse werden gesammelt und an den Admin weiter gegeben, der dann die Bestellung druchführ.

    Optionale Erweiterungen:

    Statistik, welche Art des Essens es letztes Mal gab
    Dem user Anzeigen, was er das letzte mal hatte
    Entscheidungsprozess Welches Essen es gibt basierend auf Mehrheitsentscheidung + Häufigkeit der Essensart

    Meinst du das ist von der fachlichen tiefe her Ausreichend? Umsetzung würde auf einem Internen Firmenserver mit PHP (Codeigniter) erfolgen

    Viele Güße

    Philipp

  18. Stefan Macke sagt:

    Hallo Philipp, auf den ersten Blick ein komisches Projekt. Habt ihr nichts Wichtigeres als euer Mittagessen zu bieten!? Aber davon abgesehen erfüllt es doch viele Anforderungen an „übliche“ Projekte mit DB und UI.

  19. Jens Mday sagt:

    Hi Stefan,

    mache meine Ausbildung zum Fachinformatiker für Anwendungsentwicklung und bin auf der Suche nach einem Thema für das Abschlussprojekt. Die Website meiner Firma ist schon ziemlich alt und nicht wirklich ansehnlich für ein IT-Unternehmen. Ich habe mir gedacht das ich eine neue Website (auch zB mit Kontaktformular) für das Unternehmen mit HTML und CSS erstellen könnte. Denkst du das würde ausreichen für ein Abschlussprojekt?

    Vielen Dank im Voraus und viele Grüße
    Jens

  20. Stefan Macke sagt:

    Hallo Jens, mh, nur HTML/CSS würde mir nicht reichen. Damit kannst du ja gar nicht programmieren. Irgendeine Logik solltest du schon implementieren, z.B. mit PHP.

Schreibe einen Kommentar

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

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax