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.

Stefan Macke
Polyglot Clean Code Developer
About the Author
Ausbildungsleiter für Fachinformatiker Anwendungsentwicklung und Systemintegration, IHK-Prüfer und Hochschuldozent für Programmierung und Software-Engineering.

10 comments on “Was ist eine ausreichende fachliche Tiefe des Abschlussprojekts?

  1. Avatar 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 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. Avatar 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 Stefan Macke sagt:

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

  5. Avatar 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 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. Avatar 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 Stefan Macke sagt:

    Hört sich erstmal gut an.

  9. Avatar 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 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.

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