Tomatengetriebene Programmierung

Haben Sie sich schon einmal von einer Tomate beim Programmieren antreiben lassen Falls nicht, haben wir vielleicht eine interessante Methode des Zeitmanagements für Sie. Natürlich nicht, ohne gleichzeitig eine entsprechende Datenbank zur Verwaltung der Ergebnisse zu präsentieren. Wenn es Ihnen gefällt, arbeiten Sie vielleicht demnächst im 25-Minuten-Rythmus, und wenn nicht, können Sie vielleicht Ihre anderen Tätigkeiten mit der hier vorgestellten Datenbank auswerten.

Der Italiener Francesco Cirillo stellt auf seiner Webseite www.pomodorotechnique.com eine nicht ganz neue, aber sehr interessante Technik zum Zeitmanagement vor: die Pomorodo-Technik. Für die Durchführung dieser Technik brauchen Sie nicht viel:

  • einen Küchenwecker, beispielsweise in Tomatenform,
  • einen Bleistift,
  • eine Liste aller zu erledigenden Tätigkeiten,
  • eine Liste der heute zu erledigenden Tätigkeiten und
  • eine Möglichkeit, die damit erfassten Daten später auszuwerten.

Der Anlass zur Verwendung dieser Technik ist, dass viele Menschen sich kaum noch über einen längeren Zeitraum ohne Ablenkung auf eine Aufgabe konzentrieren können. Das hat nicht nur mit mangelnder Konzentration, sondern auch mit internen und externen Störungen zu tun: Sie möchten etwas trinken, essen oder andere Dringlichkeiten erledigen, rufen E-Mails ab, werden angerufen oder durch Kollegen oder Familienmitglieder unterbrochen.

Der Autor dieser Zeilen schaffte es bis vor kurzem bisweilen, mehrere Male pro Stunde E-Mails zu checken, zu surfen, Kaffee zu holen oder etwas zu naschen. Warum Weil gerade nicht genug Konzentration für die aktuelle Aufgabe vorhanden war und er sich ablenken wollte. Die Pomodoro-Technik brachte hier ein wenig Ordnung hinein.

25 Minuten Konzentration

Wie also funktioniert diese Technik Zunächst füllen Sie eine Liste mit allen aktuell und in nächster Zeit abzuarbeitenden Aufgaben. Eine Vorlage zum Ausdrucken finden Sie genau wie die tägliche ToDo-Liste unter www.pomodorotechnique.com/products.html. Dort gibt es auch eine ausführliche englische Anleitung der Technik im PDF-Format zum kostenlosen Download.

Jeden Morgen legen Sie dann eine neue ToDo-Liste mit den geplanten Aufgaben für diesen Tag an. Diese Liste wird von oben abgearbeitet, aber auf spezielle Weise: Zu Beginn der ersten Aufgabe stellen Sie den Küchenwecker nämlich auf 25 Minuten ein (eine 25-Minuten-Einheit heißt ab jetzt Pomodoro) und arbeiten genau so lange, bis der Wecker klingelt.

Tun Sie nichts, was nicht der Erledigung der aktuellen Aufgabe dient! Rufen Sie keine E-Mails ab, denken Sie nicht über die Gestaltung des Feierabends nach, rufen Sie nicht den Pizza-Bringdienst an!

Danach machen Sie ein X hinter die aktuell bearbeitete Aufgabe, damit Sie später nachvollziehen können, wie lange Sie für die Aufgabe benötigt haben. Anschließend machen Sie drei bis fünf Minuten Pause und beschäftigen sich mit etwas anderem – umhergehen, etwas trinken, zur Toilette gehen et cetera. Aber erledigen Sie keine Aufgaben, die mit Ihrer Arbeit zu tun haben.

Danach stellen Sie den Wecker erneut und arbeiten weitere 25 Minuten und so weiter. Nach vier Einheiten machen Sie eine längere Pause von 15 bis 30 Minuten.

Ein Pomodoro ist eine untrennbare Einheit. Sie dürfen weder kürzer noch länger als 25 Minuten an der ausgewählten Tätigkeit arbeiten. Wenn die Tätigkeit genau 25 Minuten dauert – perfekt! Wenn Sie länger für ihre Erledigung brauchen, teilen Sie diese auf mehrere Pomodoros auf (Aufgaben, die mehr als 5 bis 7 Pomodoros benötigen, sollten Sie in mehrere Aufgaben aufsplitten). Wenn Sie weniger als 25 Minuten für eine Aufgabe brauchen, sammeln Sie mehrere Tätigkeiten, die zusammen etwa 25 Minuten dauern (ich bin auf diese Weise das regelmäßige E-Mail-Checken losgeworden – es findet nun ca. einmal täglich zusammen mit einigen anderen organisatorischen Tätigkeiten innerhalb von 25 Minuten statt).

Wenn Sie eine Tätigkeit erledigt haben, streichen Sie diese sowohl aus der täglichen ToDo-Liste als auch aus der Übersichtsliste heraus.

Unterbrechungen

Es ist eine große Herausforderung, sich weder von internen (selbst initiierten) noch von externen Ablenkungen bei der Abarbeitung der 25-Minuten-Blöcke stören zu lassen. Was immer sich Ihr Kopf ausdenkt, um Sie von der Arbeit abzulenken, und wer auch immer Sie telefonisch, per SMS oder persönlich zu stören versucht: Es gibt kaum etwas, was nicht 25 Minuten oder gegebenenfalls zwei Stunden warten kann. Sollte eine Ablenkung ein Eingreifen nach dem aktuellen Pomodoro oder einem Vierer-Set erfordern, tragen Sie diese unten in die tägliche ToDo-Liste ein, markieren diese mit einem U für Ungeplant und kümmern sich zu gegebener Zeit darum.

Wenn Sie sich selbst abgelenkt und dies bemerkt haben, fügen Sie zur Liste der Kreuzchen (X) der aktuellen Aufgabe einen Strich (”) hinzu. Wenn eine externe Störung geschieht, die Sie durch Hinzufügen einer ungeplanten Aufgabe entschärfen konnten, tragen Sie ein Minus-Zeichen (-) in die Liste ein.

Dies soll als Überblick genügen. Vielleicht arbeiten Sie bereits sehr diszipliniert, falls nicht, probieren Sie diese Technik einmal aus! Vielleicht werden Sie mit der Pomodoro-Technik sehr schnell erkennen, wie viele Aufgaben sich in wenig Zeit konzentrierten Arbeitens erledigen lassen.

Alles erfassen!

Eine weitere wichtige Regel lautet: Erledigen Sie nichts, wenn es nicht als Aufgabe für diesen Tag definiert wurde oder als ungeplante Aufgabe hinzugekommen ist. Wenn Sie einmal beginnen, zwischen zwei Pomodori weitere Aufgaben wie das Abrufen von E-Mails et cetera durchzuführen, funktioniert die Technik nicht.

Aufwandschätzung

Wenn Sie die Technik einmal adaptiert haben, können Sie weiteren Nutzen daraus ziehen. So ließe sich beispielsweise pro Aufgabe festlegen, wie lange Sie brauchen, um diese zu erledigen. In diesem Fall tragen Sie in die Übersichtsliste eine Zahl ein, die der erwarteten Dauer in Pomodori entspricht. In der Tages-ToDo-Liste können Sie dann für die geplanten Pomodori Kästchen vorsehen. Sie sehen dann schnell, ob Sie mehr oder weniger Aufwand als erwartet in die Aufgabe gesteckt haben oder ob Ihre Annahme richtig war.

Wenn Sie Ihre Aufgaben mit dem geschätzten Aufwand versehen haben, können Sie auch gleich realistisch an die Planung eines Tages herangehen: Tragen Sie nur so viele Aufgaben in die ToDo-Liste ein, bis die Summe der Pomodori der für einen Tag vorgesehenen Anzahl Pomodori erreicht hat. Normalerweise dürften dies um die 16 sein.

Theoretisch ginge auch noch mehr, aber wenn man tatsächlich 16 mal 25 Minuten konzentriert gearbeitet hat, geht möglicherweise auch irgendwann die Leistungsfähigkeit zur Neige.

Auswertung

Natürlich stellen wir Ihnen eine solche Technik nicht ohne Hintergedanken vor: Die Auswertung der durchgeführten Tätigkeiten und der benötigten Zeit führen Sie natürlich mit einer Access-Datenbank durch (es geht zwar auch mit Papier oder einem Excel-Sheet, aber Sie sind ja vom Fach …).

Wonach soll die Auswertung erfolgen Es gibt verschiedene denkbare Kriterien. Zunächst denkt man wohl an die Zuordnung der verbrauchten Pomodori zu den einzelnen Projekten. Sie können aber beliebige Kategorien definieren: Welche Art von Tätigkeit haben Sie durchgeführt (zum Beispiel Programmierung, Dokumentation, Projektmanagement) Handelte es sich um eine Projekttätigkeit oder eine allgemeine, organisatorische Tätigkeit Wie viele der Tätigkeiten waren geplant und wie viele sind während des Tages ungeplant hinzugekommen Wie viele interne und externe Unterbrechungen gab es während der Durchführung der Pomodori

Aufgaben der Pomodore-Datenbank

Unsere Datenbank soll die folgenden Aufgaben erledigen:

  • Liste der zu erledigenden Aufgaben verwalten
  • ToDo-Liste für einen Tag zusammenstellen und ausdrucken
  • Eintragen der Pomodori am Ende des Tages
  • Anzeige verschiedener Auswertungen

Datenmodell der Pomodore-Datenbank

Die Datenbank zur Verwaltung von Aufgaben verwendet die Tabellen aus Bild 1.

pic001.png

Bild 1: Datenmodell der PomodoreDB

Die Tabelle tblAufgaben speichert die eigentlichen Aufgaben und besitzt die folgenden Felder:

  • AufgabeID: Primärschlüsselfeld der Tabelle
  • Bezeichnung: Bezeichnung der Aufgabe
  • GeschaetzteDauer: Ungefähre Dauer in Pomodori (sprich: in 25-Minuten-Einheiten)
  • ProjektID: Projekt, zu dem die Aufgabe gehört
  • TaetigkeitsartID: Tätigkeitsart der Aufgabe
  • Deadline: Datum, bis zu dem die Aufgabe durchgeführt werden muss
  • Erledigt: Ja/Nein-Feld, das speichert, ob die Aufgabe bereits vollständig erledigt wurde
  • Ungeplant: Ja/Nein-Feld, das angibt, ob es sich um eine ungeplante und während einer anderen Aufgabe hinzugekommene Aufgabe handelt

Die Tabelle besitzt einen zusammengesetzten, eindeutigen Schlüssel auf Basis der drei Felder Bezeichnung, Deadline und ProjektID. Das bedeutet, dass eine Kombination dieser drei Felder nur einmal vorkommen kann.

Die Tabellen tblProjekte und tblTaetigkeitsarten sind reine Lookup-Tabellen, deren Datensätze über die Fremdschlüsselfelder ProjektID und TaetigkeitsartID zu einer Aufgabe hinzugefügt werden. Die Tabelle tblDoDos enthält alle Aufgaben, die für ein bestimmtes Datum terminiert und somit einer ToDo-Liste eines bestimmten Tages hinzugefügt wurden. Sie besitzt die folgenden Felder:

  • ToDoID: Primärschlüsselfeld der Tabelle
  • AufgabeID: Fremdschlüsselfeld zur Tabelle tblAufgaben, mit dem festgelegt wird, zu welcher Aufgabe der Eintrag der ToDo-Liste gehört.
  • Pomodori: Anzahl der Pomodori, die für diesen ToDo-Punkt aufgewendet wurden
  • ToDoDatum: Datum, dem dieser ToDo-Punkt zugewiesen wurde
  • InterneUnterbrechungen: Anzahl der internen Unterbrechungen während der Abarbeitung eines Pomodoro
  • ExterneUnterbrechungen: Anzahl der externen Unterbrechungen während der Abarbeitung eines Pomodoro

Diese Tabelle besitzt einen aus den beiden Feldern AufgabeID und ToDoDatum zusammengesetzten eindeutigen Schlüssel. Dies verhindert, dass zwei oder mehr ToDo-Einträge für die gleiche Aufgabe an einem Tag angelegt werden können.

Formular zur Verwaltung der Aufgaben und ToDo-Listen

Das in Bild 2 abgebildete Formular frmAufgaben ist eines von zwei wichtigen Formularen der Anwendung. Es enthält zwei wesentliche Elemente:

pic002.png

Bild 2: Formular zum Verwalten von Aufgaben und ToDo-Einträgen einzelner Tage

  • ein Unterformular zur Anzeige aller Aufgaben und
  • ein Unterformular mit den Aufgaben des aktuellen Tages, also der ToDo-Liste.

Das Hauptformular selbst bietet einige Steuerelemente etwa zum Anlegen neuer Aufgaben, zum Bearbeiten oder Löschen bestehender Aufgaben, zum Erstellen eines ToDo-Punktes auf Basis einer Aufgabe und weitere Elemente. Damit können Sie beispielsweise den Tag auswählen, zu dem das rechte Unterformular die ToDo-Liste anzeigen soll, die ToDo-Liste ausdrucken oder eine Aufgabe aus der ToDo-Liste entfernen.

Die Bestandteile dieses Formulars schauen wir uns in den folgenden Abschnitten an.

Unterformular zur Anzeige von Aufgaben

Das Unterformular sfmAufgaben zeigt eine Liste aller Aufgaben an. Dazu stellen Sie die Eigenschaft Datenherkunft auf die Abfrage aus Bild 3 ein.

pic004.png

Bild 3: Datenherkunft des Unterformulars sfmAufgaben

Die Abfrage enthält alle Felder der Tabelle tblAufgaben, wobei diese allerdings nach den Feldern Deadline und Bezeichnung aufsteigend sortiert sind.

Dem Formularentwurf fügen Sie lediglich die drei Felder Deadline, Bezeichnung und GeschaetzteDauer hinzu (s. Bild 4).

pic003.png

Bild 4: Entwurfsansicht des Unterformulars sfmAufgaben

Der Benutzer soll keine Daten direkt im Unterformular bearbeiten können. Daher stellen Sie die Eigenschaften Anfügen zulassen, Löschen zulassen und Bearbeitungen zulassen auf den Wert Nein ein. Außerdem soll das Unterformular die Daten in der Datenblattansicht anzeigen, was Sie durch Einstellen der Eigenschaft Standardansicht auf Datenblatt erreichen.

Unterformular zur Anzeige der ToDo-Liste

Das rechte Unterformular heißt sfmToDoListe und verwendet eine Abfrage auf Basis der Tabelle tblToDoListe als Datenherkunft. Die Sortierung erfolgt nach dem Primärschlüsselfeld, also in der Reihenfolge des Anlegens der enthaltenen Datensätze. Das Formular sieht im Entwurf wie in Bild 5 aus und enthält die vier Felder AufgabeID, Pomodori, InterneUnterbrechungen und ExterneUnterbrechungen.

pic005.png

Bild 5: Entwurfsansicht des Unterformulars sfmToDoListe

Davon abgesehen erhält das Unterformular die gleichen Eigenschaften wie das Unterformular sfmAufgaben – es soll also keine Bearbeitung durch den Benutzer erlauben und die Datensätze in der Datenblattansicht anzeigen.

Hauptformular zur Verwaltung von Aufgaben und ToDo-Listen

Das Hauptformular zeigt beide Unterformulare in entsprechenden Unterformular-Steuerelementen an. Das Unterformular sfmAufgaben soll standardmäßig nur die Aufgaben anzeigen, die noch nicht erledigt sind, deren Feld Erledigt also den Wert False enthält. Damit der Benutzer entweder alle oder nur die nicht erledigten Aufgaben einblenden kann, enthält das Formular das Kontrollkästchen chkAktiveAufgaben. Es löst nach der Aktualisierung die folgende Ereignisprozedur aus:

Private Sub chkAktiveAufgaben_AfterUpdate()
    Call AufgabenFiltern
End Sub

Die darin aufgerufene Prozedur setzt entweder einen Filter auf das Unterformular oder entfernt diesen. Dies sieht so aus:

Private Sub AufgabenFiltern()
    If Me!chkAktiveAufgaben Then
        Me!sfmAufgaben.Form.Filter = "Erledigt = False"
        Me!sfmAufgaben.Form.FilterOn = True
    Else
        Me!sfmAufgaben.Form.Filter = ""
        Me!sfmAufgaben.Form.FilterOn = False
    End If
End Sub

Das Kontrollkästchen chkAktiveAufgaben hat standardmäßig den Wert True. Damit sich dies direkt beim Öffnen des Formulars niederschlägt, wird die Prozedur AufgabenFiltern auch gleich in der Ereignisprozedur aufgerufen, die durch das Ereignis Beim Laden des Formulars ausgelöst wird.

Aufgaben anlegen, bearbeiten und löschen

Die drei Schaltflächen über dem Unterformular sfmAufgaben lösen Beim Klicken Ereignisprozeduren aus, die Folgendes bewirken:

  • cmdNeueAufgabe: Öffnet das Formular frmAufgabe zum Erstellen einer neuen Aufgabe und aktualisiert das Unterformular sfmAufgaben anschließend.
  • cmdAufgabeBearbeiten: Öffnet das Formular frmAufgabe und zeigt dort die beim Klick auf die Schaltfläche markierte Aufgabe des Unterformulars an. Nach dem ändern wird das Unterformular ebenfalls aktualisiert.
  • cmdAufgabeLoeschen: Diese Schaltfläche löscht nach Rückfrage den im Unterformular markierten Datensatz.

Listing 1 zeigt die drei Ereignisprozeduren.

Listing 1: Erstellen, bearbeiten und löschen von Aufgaben

Private Sub cmdNeueAufgabe_Click()
    DoCmd.OpenForm "frmAufgabe", DataMode:=acFormAdd, WindowMode:=acDialog
    Me!sfmAufgaben.Form.Requery
End Sub
Private Sub cmdAufgabeBearbeiten_Click()
    DoCmd.OpenForm "frmAufgabe", WhereCondition:="AufgabeID = " & Me!sfmAufgaben.Form!AufgabeID, _
    WindowMode:=acDialog, DataMode:=acFormEdit
    Me!sfmAufgaben.Form.Requery
End Sub
Private Sub cmdAufgabeLoeschen_Click()
    Dim db As DAO.Database
    If MsgBox("Aufgabe löschen", vbYesNo + vbExclamation, "Löschen") = vbYes Then
        Set db = CurrentDb
        db.Execute "DELETE FROM tblAufgaben WHERE AufgabeID = " & Me!sfmAufgaben.Form!AufgabeID, dbFailOnError
        Me!sfmAufgaben.Form.Requery
        Set db = Nothing
    End If
End Sub

Anzeige der ToDo-Liste im Unterformular

Das Formular sfmToDoListe soll alle ToDo-Positionen eines Tages anzeigen. Das Datum dieses Tages gibt der Benutzer im Textfeld txtDatum des Hauptformulars ein.

Sowohl beim ersten Anzeigen als auch bei einer änderung des dort enthaltenen Datums soll der Inhalt des Unterformulars sfmToDoListe aktualisiert werden. Dazu bedarf es nicht einer einzigen Codezeile, sondern lediglich der Einstellung zweier Eigenschaften des Unterformular-Steuerelements.

Bild 6 zeigt die rechte Hälfte des Formulars frmAufgaben mit dem Unterformular sfmToDoListe und den Eigenschaften Verknüpfen von und Verknüpfen nach des Unterformular-Steuerelements. Die Eigenschaft Verknüpfen von stellen Sie auf das Feld ToDoDatum des Eintrags der Tabelle tblToDos ein, die Eigenschaft Verknüpfen nach verweist auf das Steuerelement txtDatum des Hauptformulars. Wenn der Benutzer dort nun ein anderes Datum eingibt, ändert sich gleichzeitig der Inhalt des Unterformulars.

pic006.png

Bild 6: Das Unterformular im Hauptformular

Damit der Benutzer das Datum leicht ändern kann, haben wir gleich zwei Hilfen eingebaut. Die erste sind die beiden Schaltflächen rechts neben dem Textfeld txtDatum. Sie heißen cmdVorher und cmdNachher und stellen das im Textfeld angezeigte Datum jeweils auf den vorherigen beziehungsweise folgenden Tag ein.

Außerdem haben wir die im Beitrag Flexible Datumstextfelder (www.access-im-unternehmen.de/690) vorgestellten Klassen clsDateBox und clsDateboxes in das VBA-Projekt integriert und diese verschiedenen Textfeldern zur Datumseingabe zugewiesen.

Ist ein Datumstextfeld leer, genügt das Betätigen der Leertaste, um das aktuelle Datum einzufügen. Das Betätigen der Nach oben– und der Nach unten-Taste bewirkt das Einstellen des jeweils vorherigen oder folgenden Tages, Monats oder Jahres – je nachdem, an welcher Position sich die Einfügemarke aktuell befindet.

Diese Funktion aktivieren Sie, indem Sie der durch das Ereignis Beim Laden ausgelösten Prozedur ein paar Anweisungen hinzufügen. Zunächst müssen Sie die Klasse clsDateboxes jedoch im Klassenmodul des jeweiligen Formulars deklarieren:

Dim objDateboxes As clsDateboxes

Dann instanzieren Sie das Objekt auf Basis der angegebenen Klasse und fügen mit seiner Methode AddDatebox das Textfeld hinzu, das die Funktionen zur einfachen Datumseingabe anbieten soll:

Private Sub Form_Load()
    Set objDateboxes = New clsDateboxes
    With objDateboxes
        .AddDatebox Me!txtDatum
    End With
    Me!txtDatum = Date
    Call AufgabenFiltern
End Sub

Damit das Unterformular gleich zu Beginn die Daten des aktuellen Tages anzeigt, stellt die Prozedur das Textfeld txtDatum außerdem noch auf das aktuelle Datum ein.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar