Zeitplanung, Kontrolle, Effizienzsteigerung. Das Thema ist abgedroschen, aber ich wage es, eine andere Lösung anzubieten.
Ich habe noch keine universelle Methode gefunden, um meine Zeit zu verwalten, die für jeden geeignet wäre. In der Regel wählt jeder für sich die Praktiken, die für ihn am besten geeignet sind. Und dies hängt nicht nur mit den Eigenschaften des Charakters zusammen, sondern auch mit den Merkmalen der Arbeit.
Für mich ist das so: Ich habe mich fertig gemacht, mich eingestellt, mich an die Arbeit gemacht und dann - "entweder ruft das Siegel, dann das Reh". Am Ende des Tages gibt es ein allgemeines Gefühl, dass es nicht klar ist, was er tat und was das Ergebnis war.
Sobald eine Idee aufkam: "Das wäre cool, sie haben dich angerufen und du bist wie in einem Schachspiel
Ich drückte den Knopf und stoppte die Arbeitszeit, kehrte zur Arbeit zurück - drückte einen anderen Knopf. Als Ergebnis erhalten Sie, wie viel er gearbeitet hat und wie viel er sich ausgeruht hat. Ich habe diesen Ansatz als Schachzeitmanagement oder kurz ChessTM bezeichnet.
Es ist nicht schwer zu erraten, dass die Idee sofort auf die Idee skaliert wurde, für jede Aufgabe während des Tages eine Schaltfläche zu haben. Und dann wurde all dies in das Konzept des Zeitmanagements umgewandelt.
Konzept
Die Zeit kann nicht gestoppt werden. Wir verbringen immer unsere Zeit. Und wenn wir etwas mit einem machen, dann können Sie natürlich nicht gleichzeitig etwas anderes mit konstanter Effizienz machen. Zu jedem Zeitpunkt findet eine Aktivität statt - Arbeiten an einer Aufgabe, Sport treiben, Gehen, Sport treiben, Essen, Schlafen usw.
Postulat Nummer 1
Kontrolle des Bedarfs an Zeitmanagement. Um die Zeit zu verwalten, müssen Sie sie steuern können. Prinzip - Auf Knopfdruck (wörtlich, nicht metaphorisch) wählen wir die aktuelle Aktivität aus und die Zeit für die vorherige Aktivität stoppt automatisch und beginnt mit der Zählung für die aktuelle Aktivität.
Postulat Nummer 2
Management erfordert Planung. Um die Zeit zu verwalten, müssen Sie sie planen können. Zu jedem Zeitpunkt haben wir einen gemeinsamen Aufgabenpool und einige dringende Angelegenheiten. Wenn wir an einer Aufgabe arbeiten oder dringende Angelegenheiten erledigen, verpflichten wir uns zu einer Aktivität. Bei der Planung gehen wir davon aus, an welchen Aktivitäten wir teilnehmen werden. Ein traditionelles Verständnis des Plans beinhaltet eine feste Abfolge von Aktionen. Es ist oft sehr schwierig, eine feste Reihenfolge einzuhalten, manchmal aus objektiven und manchmal nicht sehr guten Gründen. Eine Abweichung vom Plan macht Sie nervös und verringert die Arbeitseffizienz. Wir nehmen Ruhe als Müßiggang wahr, es entsteht ein Schuldgefühl, die Arbeitseffizienz nimmt ab und die Zufriedenheit nimmt ab. Um die beschriebenen Probleme zu vermeiden, planen wir nicht die Abfolge verschiedener Klassenarten, sondern die Zeit, die für Aktivitäten während des Tages vorgesehen ist.
Sie können in Minuten planen. Das heißt, der Planungsprozess sieht folgendermaßen aus: Wir wählen die Aufgaben für den Tag aus dem allgemeinen Pool aus und legen die geplante Zeit für sie fest, die wir für sie ausgeben werden.
Postulat Nummer 3
Verwaltete Zeit bedeutet, dass der Plan mit der Realität konvergiert. Natürlich kann sich tagsüber etwas ändern. Und vielleicht stellt sich heraus, dass der Plan von der Realität abweicht. Die für die Aktivität Tp geplante Zeit (geplante Zeit), die tatsächlich für die Aktivität Tr verbrachte Zeit (reale Zeit), die Differenz zwischen diesen Zeiten wird als Differenzkoeffizient Td (Zeitdelta) bezeichnet. Wir betrachten die Qualität der Planung Qp (Qualität der Planung) als den Prozentsatz der Summe aller Diskrepanzkoeffizienten zur Summe der gesamten geplanten Zeit, die wir von einhundert abziehen.
Das heißt, es stellt sich heraus, dass bei Null-Divergenzkoeffizienten die Planungsqualität 100% beträgt.
Android App
Dieser Artikel wäre nicht erschienen, wenn ich nicht beschlossen hätte, ein Tool für dieses Konzept zu implementieren. Ich möchte diese Erfahrung teilen.
Also.
Implementierte ChessTM App.
Umsetzung abends und am Wochenende in Ihrer Freizeit. Ich arbeite als Release Manager und arbeite mit Android-Entwicklung ist in keiner Weise verbunden.
Funktionen:- Erstellen eines Aufgabenpools
- Planen Sie die Zeit für Aufgaben für jeden Tag
- Übertragen Sie den Plan vom Vortag
- Einfache Aufgabenumschaltung
- Statistiken
- Gesamtzeit in Bezug auf den Gesamtplan für einen beliebigen Zeitraum nach Lebensbereichen
- Bericht über Aufgaben, wie viel für jede Aufgabe geplant ist und wie viel tatsächlich ausgegeben wird
- Statistiken zum Wechsel zwischen Aufgaben und zum Planungsqualitätsfaktor für den Zeitraum
- Verteilung der Aufgaben nach Lebensbereichen (Arbeit, Familie, Freunde usw.) und Tags
Die Hauptidee war es, eine solche Mechanik der Interaktion mit der Anwendung zu entwickeln, um so wenig wie möglich zu tun. Um alles einfach und unkompliziert zu machen - mit einem Klick.
Es ist wie folgt implementiert: Es gibt einen Bildschirm und drei Registerkarten, zwischen denen Sie per saip navigieren können:
- Aufgabenpool, in dem alle derzeit verfügbaren Aufgaben vorhanden sind;
- Tagesplan, in dem die geplante Zeit für Aufgaben festgelegt wird;
- steuern, wo wir von Aufgabe zu Aufgabe wechseln und die Zeit zählen.
Als nächstes möchte ich mich auf die Momente der Entwicklung selbst konzentrieren. Ich hoffe, dass meine Erfahrung für unerfahrene Entwickler nützlich sein wird, und die Gurus werden Ihnen wahrscheinlich sagen, was bei der Organisation der Entwicklung verbessert werden kann.
Entwicklungsinfrastruktur
Ich wollte die Entwicklung sofort richtig machen. Damit es etwas Langlebiges war und nicht verwöhnt und verlassen wurde. Daher wollte ich eine ganzheitliche Infrastruktur organisieren, einschließlich:
- IDE (Integrated Development Environment);
- Code-Speicher-Repository;
- Task-Tracker;
- Dokumentation
- Testen.
IDE
AndroidStudio, obwohl jemand argumentieren kann, aber meiner Meinung nach gibt es bei all dem Reichtum der Auswahl keine andere Alternative. Es gibt viele Richtlinien zum Putten, Starten, Registrieren eines Entwicklers usw. Meiner Meinung nach ist hier alles ganz einfach, kein besonderer Rat, nimm es einfach und mache es praktisch nach den Anweisungen.
Codespeicherung
Git wurde als Codespeichersystem ausgewählt.
Die Auswahlkriterien sind einfach - ein beliebtes modernes System, eine riesige Entwicklergemeinschaft, viele Ressourcen mit guter Dokumentation. Wie Sie sehen können, sind die Kriterien nicht ganz technisch, aber wenn Sie ein unerfahrener Entwickler sind, sind die Community und viele Antworten auf den Stackoverflow ein großes Plus.
Bitbucket wurde als Remote-Speicher ausgewählt:
- kostenlos;
- ermöglicht es Ihnen, private und offene Repositorys zu erstellen;
- Ermöglicht das Erstellen eines Teams für die Arbeit mit verschiedenen Zugriffsberechtigungen.
- hat einen eigenen einfachen Task-Tracker.
Task-Tracker
Das heißt, die Wahl von Bitbucket gibt auch die Anwesenheit eines Task-Trackers. Auf den ersten Blick scheint es, als würde der Task-Tracker nicht benötigt, wenn Sie die Anwendung selbst schreiben, aber es ist ein Fehler, dies zu glauben. Der Task-Tracker organisiert. Ermöglicht das Planen. Und falls sich jemand anderes mit dem Projekt verbindet, muss nichts gesucht werden, aber bei gemeinsamer Entwicklung ohne Task-Tracker nichts. Ja, der Tracker in Bitbucket ist nicht perfekt, aber er schließt die Hauptprobleme in erster Näherung.
Dokumentation
Für die Dokumentation entschied sich readthedocs.io:
- kostenloses System, mit dem Sie Dokumentation im Sphinx- Format veröffentlichen können;
- Integriert sich in Bitbucket (und viele andere), dh Sie können Dokumentationsquellen in Bitbucket speichern und es wird automatisch bei jedem Commit erfasst. Sie können sagen, kontinuierliche Integration für die Dokumentation - dies ist äußerst praktisch.
Leider ist die Dokumentation jetzt nicht ganz richtig. Aber zu dieser Zeit war ihr Schreiben von großem Nutzen. Daher empfehle ich jedem, der sein Projekt startet, dringend, Dokumentation zu schreiben - dies ordnet seine Gedanken und verdeutlicht die Vision des Projekts.
Testen
Testen ist ein großes Thema und Sie können viele Materialien zu diesem Thema finden.
Ich habe eine Modellebene in der Anwendung, in der alle Berechnungen und Berechnungen durchgeführt werden.
Aus diesem Grund habe ich mich entschlossen, dieses spezielle Softwaremodul zu testen.
Dafür
benutze ich
JUnit4 . Tests werden auf dem Gerät ausgeführt.
Tests sind Unit-Tests der Hauptklasse des Modells.
Ein Testdatensatz wird erstellt und dementsprechend werden alle Funktionen der Modellklasse mit einem bekannten Ergebnis aufgerufen.
Aus Erfahrung kann ich folgendes sagen:
- Tests sind sehr hilfreich, um Regressionen zu erkennen.
- Manchmal treten Design- / Architekturfehler auf, wenn Sie die Funktionen selbst verwenden. Wenn Sie die Funktion verwenden, funktioniert der Kopf etwas anders, selbst wenn Sie sie selbst geschrieben haben.
- Halten Sie die Tests auf dem neuesten Stand. Ich bedauere jetzt, dass ich dies nicht getan habe, da das Volumen der Anwendung bereits recht groß ist und nicht alle Details gespeichert werden können. Einige Regressionen, die in der Unit-Test-Phase festgestellt werden können, fallen leider in die Produktion. Also mit hartnäckiger, langweiliger Ausdauer - "halte die Tests auf dem neuesten Stand !!!"
Architektur und Implementierung
Der Kern dieses Abschnitts besteht darin, darüber zu sprechen, was ein Anfänger lernen muss, um Funktionen wie in dieser Anwendung implementieren zu können.
Zu Beginn der Reise bestand das Hauptproblem darin, dass nicht klar war, wo man anfangen und in welche Richtung man denken sollte. Wie man es macht und wie man es falsch macht.
Für Anfänger empfehle ich, mit einem Buch zu beginnen. Das Buch ist insofern gut, als die Informationen darin systematisiert sind und es viel einfacher ist, auf diese Weise zu beginnen.
Persönlich begann ich mit „Programmieren für Android. Für Profis “B. Hardy, B. Phillips. Im Allgemeinen kann ich es empfehlen. Vielleicht ist es jetzt an einigen Stellen veraltet, aber es ist durchaus möglich, anzufangen.
Ich kann auch empfehlen, verschiedene Podcasts mit Android-Programmierung anzuhören. Natürlich ist nicht alles klar, aber Sie können die Trends erfassen und verstehen, in welche Richtung Sie sich bewegen müssen. Insbesondere höre ich gelegentlich
androiddev auf Apptractor .
In Bezug auf die Architektur selbst habe ich versucht, einen Ansatz zu implementieren, bei dem die interne Logik maximal von der Anzeige getrennt ist. Tatsache ist, dass in der Anfangsphase nicht alles gründlich durchdacht ist und Sie in der Lage sein müssen, die „Mathematik“ (Arbeitslogik) zu ändern, ohne den gesamten Code neu zu schreiben.
In meiner Anwendung ist das Hauptaugenmerk beispielsweise „Aktivität“ in Bezug auf Aufgabe / Aktivität. Und die ganze Logik der Arbeit besteht in Manipulationen mit Aktivitäten: Aktivität starten, Aktivität beenden, Aktivitätsparameter einstellen, Statistiken von Zeitintervallen berechnen usw. Diese Logik habe ich gemacht
in eine separate Klassenstruktur
Die Liste der Aufgaben ist in der ActionsManager-Klasse enthalten, und der gesamte Zugriff darauf erfolgt über die Funktionen dieser Klasse. Das heißt, überall in der Anwendung werden alle Manipulationen mit Aufgaben über die ActionsManager-Klasse ausgeführt.
Das Datenbankobjekt wird im Anwendungsobjekt initialisiert. Alle anderen nehmen das Objekt von hier, anstatt jedes Mal ein neues zu erstellen.
Hier kann ich solche Ratschläge geben - nehmen Sie die Logik in separate Klassen. Lesen Sie mehr über Designmuster - Sie müssen kein Fahrrad erfinden, für das es bereits eine Lösung gibt.
Die GUI basiert auf ActionBarDrawerToggle. Zuerst wurde
ActionBarSherlock verwendet, natürlich ist es nicht für alle schlecht, aber dann hatte ich Probleme mit der Kompatibilität mit anderen Komponenten und wechselte zu Standard-Google-Komponenten (Menüs, Registerkarten, Listen mit dynamischem Laden von Daten usw.).
Im Prozess des Anwendungsbewusstseins wurden zusätzlich zu den Standard-Android-Komponenten die folgenden verwendet:
Monetarisierung
- Die Anwendung selbst ist völlig kostenlos und ohne Werbung.
- Es ist geplant, im Laufe der Zeit verschiedene bezahlte Optionen hinzuzufügen.
- Im Moment ist dies ein Statistikmodul ohne Einschränkungen.
- Alle Statistiken für den aktuellen Tag können angezeigt werden. Um dies jedoch für einen beliebigen Zeitraum zu tun, müssen Sie das Modul ohne Einschränkungen erwerben.
- Wie sich herausstellte, ist jetzt mit dem Konto des Verkäufers alles viel einfacher geworden.
- In meinem Fall - es gibt ein Konto bei einer Sparkasse, ich habe ein Dollarkonto über eine Online-Sparkasse eröffnet und es mit meinem Konto verknüpft - ist alles sehr einfach. Und ja, eine nette Funktion, seit einiger Zeit überweist Google Geld ab 1 US-Dollar.
PS:
Zum Schluss eine Nachricht an alle Anfänger oder diejenigen, die anfangen wollen - keine Angst vor Schwierigkeiten haben, keine Angst haben, Schritt für Schritt, Sie werden Erfolg haben!