2010-06-30

Wie man eine Diplomarbeit (Masterarbeit, Abschlussarbeit, Seminararbeit) schreibt - (nicht nur) für Informatiker

Dieser Blogeintrag gibt meine Erfahrungen wieder, die ich während meiner Diplomarbeit im Fach Informatik gemacht habe. Dies soll keine Einführung in wissenschaftliches Arbeiten sein, sondern stellt vielmehr eine Sammlung von praktischen Tipps zur Organisation und Durchführung des Projekts "Diplomarbeit" dar. Dieser Text ist aus Sicht eines Informatikers geschrieben, möglicherweise ist er aber ebenso für Studenten anderer Fächer interessant. Das Besondere bei Abschlussarbeiten in der Informatik ist vielleicht, dass es (oft) nicht nur um das Verfassen der eigentlichen Arbeit geht, sondern zusätzlich um das Erstellen eines Softwaresystems. Inzwischen ist das aber auch in anderen Fächern (Physik, VWL, Medizin, ...) durchaus üblich.


Eine Bemerkung vorab

Seit meiner Arbeit ist jetzt schon etwas Zeit vergangen, und einige meiner Freunde arbeiten inzwischen an der Uni und betreuen selbst Abschlussarbeiten. Die fast einstimmige Aussage lautet, dass Durchfallen dabei so gut wie unmöglich ist. Das hat einen einfachen Grund: Der (schlechte) Diplomand müsste dann ein zweites Mal betreut werden, und dazu hat niemand wirklich Lust. Eine wirklich schlechte Arbeit wird daher mindestens mit "ausreichend" bewertet.


Vorbereitung

Grober Zeitplan: Die Dauer der Abschlussarbeit ist zwar von der Prüfungsordnung vorgegeben, aber üblicherweise fängt man viel früher an als man die Arbeit anmeldet. Man sollte daher mit seinem Betreuer vorab klären, wieviel Zeit veranschlagt werden kann/soll/muss. (In meinem Fall war es so, dass die durchschnittliche Dauer am Institut ein Jahr beträgt - in der Prüfungsordnung stehen 6 Monate.) Dabei ist auch zu berücksichtigen, ob man sich ganz auf die Arbeit konzentrieren kann oder noch einen Nebenjob hat.

Was kommt danach? Meine Empfehlung lautet, die Abschlussarbeit ganz ans Ende des Studiums zu legen. Grade die letzten Wochen können arbeitsintensiv und kraftraubend sein, und idealerweise plant man danach einen Urlaub. Ich hatte einen Monat nach Abgabe noch eine letzte mündliche Prüfung - die lief zwar ganz gut, empfehlen würde ich es aber nicht.


Arbeitsmittel

Ich habe mir einen separaten Laptop für die Diplomarbeit angeschafft. Das mag sich etwas übertrieben anhören, für mich war es aber eine gute Entscheidung. Benutzt man den privaten Laptop/PC, gibt es alle möglichen Dinge, die einen ablenken: Fotos, Videos, Musik, Skype, IM, Spiele, ... Während man eigentlich an der Diplomarbeit arbeiten will, vertrödelt man so möglicherweise die Zeit mit anderem.


Backup

Das Thema Backup begegnet einem als Informatiker oft. Spätestens beim Schreiben der Diplomarbeit sollte man sich damit beschäftigen:
  • Der Laptop kann gestohlen werden
  • Der Laptop kann kaputt gehen
  • Man kann sich ein Virus einfangen
  • Möglicherweise löscht man selbst versehentlich wichtige Daten
Daher sollte man die Daten regelmäßig auf ein externes Medium (USB-Stick, externe Festplatte, CD) sichern. Zusätzlich kann man noch ein Backup im Netz machen (z. B. bei Dropbox oder GMail).

Bei der Datensicherung sind zwei Aspekte zu unterscheiden:
  • Wiederherstellen (Recovery): Enthält das Backup alle Daten, die zum vollständigen Wiederherstellen einer funktionierenden Arbeitsumgebung nötig sind?
  • Archivierung: Löscht man aus Versehen eine wichtige Datei, wird das vielleicht erst zwei Wochen später bemerkt. Hat man dann nur ein einziges Backup (das vom Tag vorher), ist in diesem Backup die Datei nicht vorhanden. Man sollte also bestimmte Backups (z. B. eins pro Woche) behalten und nicht überschreiben.
Beim Wiederherstellen muss man sich außerdem die Frage stellen, welcher Aufwand damit im Fall der Fälle verbunden wäre. Ich hatte gegen Ende so viele zusätzliche Programme, Skripte, Erweiterungen etc. installiert, dass es zwar prinzipiell mögliche gewesen wäre, das alles auf einem neuen Rechner wiederherzustellen. Das hätte aber Tage in Anspruch genommen. Zeit, die man u. U. nicht hat ... Mögliche Lösungen dafür sind Festplattenimages oder virtuelle Maschinen (z. B. VirtualBox).


Arbeitsplatz

Üblicherweise hat man die Wahl zwischen einem Arbeitsplatz zu Hause oder in der Bibliothek. Die Vorteile der Bibliothek sind, dass man den Tag nicht vollkommen isoliert verbringt und gleichzeitig nur von wenigen Dingen umgeben ist, die einen ablenken. Ich habe mir aus dem gleichen Grund auch bewusst keinen Internetzugang für die Bibliothek eingerichtet. Wenn ich etwas im Netz recherchieren musste, habe ich entweder einen öffentlichen PC benutzt oder mir eine Notiz gemacht und es dann abends zu Hause erledigt.


Literaturrecherche

In Büchern zum wissenschaftlichen Arbeiten gibt es fast immer auch ein längeres Kapitel zur Literarturrecherche. (In etwas älteren Büchern findet man Hinweise wie man sich in einer Bibliothek zurechtfindet oder wie man seine Literatur mittels Karteikarten organisiert. Das ist natürlich inzwischen alles hinfällig.) Ich will an dieser Stelle das Thema nicht vertiefen, sondern nur folgende Tipps geben:
  • Bei der Recherche besteht die Kunst darin, die richtige Balance zwischen zu viel und zu wenig zu finden. Einerseits besteht die Gefahr in Literatur "zu ertrinken", immer mehr und immer weiter zu lesen und mit der eigenen Arbeit gar nicht anzufangen. Andererseits ist ein gewisser Überblick über den aktuellen Stand der Forschung wichtig, weil man sich ansonsten mit Fragen beschäftigt, die schon längst beantwortet sind.
  • Google Scholar und Citeseer haben mir gute Dienste erwiesen.
  • Schon während der Recherche das Literaturverzeichnis anlegen. Das muss man sowieso irgendwann machen und es hilft, die Übersicht zu behalten.
  • Soll die eigene Arbeit ein Kapitel über den aktuellen Stand der Forschung enthalten, empfiehlt es sich, das möglichst direkt nach dem Studium der Literatur zu verfassen.



Programmieren

Jedem, der noch wenig Erfahrung mit Softwareentwicklung hat (und allen anderen auch), empfehle ich dringend The Pragmatic Programmer. From Journeyman to Master von Hunt und Thomas. Wer nicht das ganze Buch lesen kann oder will, sollte sich zumindest mit den folgenden Konzepten vertraut machen:
  • Versionskontrolle
  • Unit Tests
  • Build Automation
Nicht ganz unwichtig ist auch die Wahl eines geeigneten Editors bzw. einer IDE. Ich habe sowohl die Software als auch den Text mit Emacs geschrieben. Grade im Java-Umfeld ist Eclipse auch nicht schlecht. Die Wahl ist letztlich Geschmackssache, aber man sollte sich zu Beginn für ein Werkzeug entscheiden und sich etwas einarbeiten.


Der Text

Deutsch oder Englisch? Hat man vor, später zu promovieren und Teile der Arbeit wiederzuverwenden, sollte man auf Englisch schreiben. Dafür spricht weiter, dass man sein Englisch trainiert und man englische Fachbegriffe aus der Literatur nicht umständlich ins Deutsche übersetzen muss. Hat man dagegen keine hohen wissenschaftlichen Ansprüche an die Arbeit, den Arbeitsvertrag in der Wirtschaft schon unterzeichnet und will es nur irgendwie schnell hinter sich bringen (ich übertreibe jetzt etwas), sollte man bei seiner Muttersprache bleiben.

Latex oder Word? Ich habe mit beiden Systemen längere Texte verfasst und kann von Word nur abraten. Die Vorteile von Latex sind:
  • Layout ist vorgegeben, man muss selber nicht viel Zeit investieren, damit der Text "gut aussieht"
  • Latex-Dateien sind Plain Text, somit kann man ein Versionskontrollsystem benutzen
  • Bei Problemen ist es einfacher, im Internet nach Lösungen zu suchen (das ist meine Erfahrung)
  • Benötigt man mathematische Formeln, ist das deutlich einfacher als mit Word
  • Es gibt ein gutes System zur Literaturverwaltung (BibTex)
Einziger Nachteil ist die etwas höhere Einarbeitungszeit. Am Ende wird sich die aber auszahlen.

Programmversionen und PDF: Möchte man die Arbeit im CopyShop, in der Uni oder bei einem Freund ausdrucken, muss man berücksichtigen dass dort evtl. eine andere Word-Version installiert ist und sich dadurch das Layout ändern kann. Um dem vorzubeugen kann man eine PDF-Version der Arbeit erstellen. Allerdings kann es auch beim Erzeugen von PDF aus Word heraus Probleme mit dem Layout geben. Mit der PDF-Funktion von OpenOffice habe ich hingegen gute Erfahrungen gemacht. Bei Latex stellt sich das Problem naturgemäß nicht, dort ist die Ausgabe sowieso eine PDF-Datei.

Versionskontrolle: Sollte man auch für den Text benutzen. Word und OpenOffice haben eigene Versionsverwaltungen eingebaut, damit kenne ich mich aber nicht aus. Subversion kann gut mit Binärdateien umgehen und hat den Word-eigenen Diff-Modus integriert. Bei Latex ist die Versionskontrolle einfacher (s. o.).

Stilfragen (Darf man in der Ich-Form schreiben? Wie zitiert man am besten? Etc.) beantwortet Technisches Schreiben: (Nicht nur) für Informatiker von Rechenberg. Das Buch ist in erster Linie nützlich, wenn man auf Deutsch schreibt.

Gliederung: Beim Strukurieren des Textes hat mir das entsprechende Kapitel in Computerprojekte im Klartext von Dawson sehr geholfen.

Schreiben: Bei modernen agilen Methoden der Softwareentwicklung findet man als wichtiges Prinzip die iterative Vorgehensweise, bei der in kurzen, festen Zeitabständen lauffähige Versionen veröffentlicht werden. Dieses Prinzip lässt sich meiner Meinung nach auch auf das Verfassen des Textes anwenden:
  • Ständig schreiben. Grade wenn neben dem eigentlichen Text auch ein Softwaresystem erstellt werden muss, liegt die Versuchung nahe, den Text erst in den letzten Wochen zu verfassen. Da der Text aber einen engen Bezug zur Software hat, fällt das Schreiben deutlich leichter, wenn man "im Thema drin" ist, d. h. während man die Software programmiert. Außerdem erhält man früh vorzeigbare Ergebnisse und nimmt den Druck aus den letzten Wochen vor der Abgabe.
  • Schrittweise Verbesserung. Nach einer langen und ausführlichen Vorbereitungsphase den Text "in einem Rutsch" druckreif aufs Papier zu bringen ist oft problematisch. Einfacher ist es, mit Stichpunkten, Skizzen und Textschnipseln anzufangen und den Text dann in kleinen Schritten zu verbessern.  Auf diese Weise vermeidet man auch die berühmte Angst vor dem leeren Blatt Papier.
Für wen schreibt man? Mir war anfangs nicht klar, welchen Kenntnisstand man beim Leser voraussetzen kann bzw. welche Begriffe eingeführt und erklärt werden müssen und welche nicht. Mein Betreuer meinte, dass der Text von jemandem mit einem Diplom in Informatik, allerdings nicht unbedingt mit dem gleichen Vertiefungsgebiet, verstanden werden sollte. Dieser Hinweis hat mir oft geholfen.

Einleitung und Schluss: Manche Gutachter lesen nur die Einleitung und das Abschlusskapitel und überfliegen den Rest der Arbeit. Bei diesen Abschnitten sollte man sich also besonders viel Mühe geben.

Korrekturlesen: Man sollte sich rechtzeitig um Personen kümmern, die die Arbeit Korrektur lesen. Das bedeutet auch, dass der Text nicht erst kurz vor Schluss fertig wird, denn die Korrekturen müssen natürlich entsprechend übernommen werden.

Weitere nützliche Tipps finden sich in Studien-Arbeiten von Deininger, Lichter, Ludewig und Schneider.


Abschlusspräsentation

Zu diesem Thema kann ich wenig sagen, hier gibt es natürlich wieder eine Menge an Büchern über Vortragstechniken, Aufbau von Präsentationen etc. Allen die mit Latex arbeiten kann ich das Paket FoilTex empfehlen.


Selbstorganisation

Tagebuch: Ich fand es nützlich ein Tagebuch/Projektbuch zu führen. So behält man den Überblick, an was man gearbeitet hat, welche Dinge länger gedauert haben als geplant und wie die Arbeit vorangeht.

Entscheidungen aufschreiben. Im Laufe der Diplomarbeit sind verschiedene Entscheidungen zu treffen, z. B. bei der Wahl eines Artikels, an dem man sich orientiert, einer bestimmten Methode, die man anwendet, einer Fragestellung, die man genauer untersucht etc. Ich kam während meiner Arbeit manchmal in die Situation, dass ein paar Wochen später nicht mehr genau klar war, was bei dieser oder jener Entscheidung genau den Ausschlag gegeben hatte. Daher kann es nützlich sein, sich die Gründe - die man im Moment der Entscheidung natürlich klar vor Augen hat - kurz zu notieren.

Gesprächsnotizen. Während der Gespräche mit meinem Betreuer wurden immer eine Menge unterschiedlicher Dinge besprochen, die ich ohne Notizen nie alle behalten hätte. Ich habe mir während des Treffens kurze Stichpunkte notiert und dann abends oder am nächsten Tag ein ausführlicheres Gesprächsprotokoll erstellt. Das half auch bei der Vorbereitung auf das nächste Gespräch.

Allgemeine Tipps und Richtlinien zur Selbstorganisation bietet das Buch Getting Things Done. The Art of Stress-Free Productivity von David Allen. Die dort vorgestellte Methode ist grade bei Softwareentwicklern in den letzten Jahren populär geworden. Wer nicht direkt das ganze Buch lesen möchte, findet vielleicht Frank Westphals Podcast-Episode interessant.


Abgabe

Um nicht auf der Zielgraden zu scheitern, sollte man rechtzeitig folgende Dinge klären:
  • Wo muss die Arbeit abgeben werden? Wie sind die Öffnungszeiten? 
  • Wieviele Exemplare muss man abliefern? Gibt es Vorgaben hinsichtlich des Layouts, der Seitenzahl etc.?
  • Wann hat der CopyShop geöffnet? Wie lange dauert es, die Arbeit binden zu lassen? Welches Format wird erwartet (Word, PDF, ...)?

Wie geht's weiter?

Bewerbungsprozess und Karriereplanung wären Themen für eigene Postings. Hier nur ein paar Literaturempfehlungen:



Creative Commons License