Gestion du temps sans horaires stricts, expérience dans le développement d'une application mobile

Planification du temps, contrôle, augmentation de l'efficacité. Le sujet est galvaudé, mais j'ose proposer une autre solution.


Je n'ai pas encore trouvé de méthode universelle de gestion de mon temps qui conviendrait à tout le monde. En règle générale, chacun choisit lui-même les pratiques qui lui conviennent le mieux. Et cela est lié non seulement aux caractéristiques du personnage, mais aussi aux caractéristiques de l'œuvre.

C'est comme ça pour moi: je me suis préparé, branché, mis au travail, puis - "soit le phoque appellera, puis le cerf". À la fin de la journée, il y a un sentiment général qu'il n'est pas clair ce qu'il faisait et quel a été le résultat.

Une fois qu'une idée est venue: "Ce serait cool, ils t'ont appelé et tu es comme dans un jeu d'échecs J'ai appuyé sur le bouton et arrêté le temps de travail, je suis retourné au travail - j'ai appuyé sur un autre bouton. En conséquence, vous obtiendrez combien il a travaillé et combien il s'est reposé. » J'ai appelé cette approche - la gestion du temps d'échecs, ou ChessTM pour faire court.

Il n'est pas difficile de deviner que l'idée a immédiatement évolué vers l'idée d'avoir un bouton pour chaque tâche pendant la journée. Et puis tout cela a été transformé en concept de gestion du temps.

Concept


Le temps ne peut pas être arrêté. Nous passons toujours notre temps. Et si nous faisons quelque chose avec un, alors évidemment vous ne pouvez pas faire autre chose avec une efficacité constante. À tout moment, une sorte d'activité a lieu - travailler sur une tâche, faire du sport, marcher, faire de l'exercice, manger, dormir, etc.

Postulat numéro 1


Pour contrôler le besoin de gestion du temps. Pour gérer le temps, vous devez pouvoir le contrôler. Principe - au toucher d'un bouton (littéralement, pas métaphoriquement), nous sélectionnons l'activité en cours et l'heure de l'activité précédente s'arrête automatiquement et commence à compter pour l'activité en cours.

Postulat numéro 2


La gestion nécessite une planification. Pour gérer le temps, vous devez être en mesure de le planifier. À tout moment, nous avons un ensemble commun de tâches et quelques questions urgentes. Lorsque nous travaillons sur une tâche ou sur des sujets urgents, nous engageons une activité. La planification est que nous assumons les activités dans lesquelles nous serons engagés. Une compréhension traditionnelle du plan implique une séquence fixe d'actions. Il est souvent très difficile d'observer une séquence fixe, parfois pour des raisons objectives, et parfois pas très bonnes. Un écart par rapport au plan vous rend nerveux et réduit l'efficacité du travail. Nous percevons le repos comme de l'oisiveté, un sentiment de culpabilité apparaît, l'efficacité du travail diminue et la satisfaction diminue. Pour éviter les problèmes décrits, nous planifierons non pas la séquence des différents types de cours, mais le temps alloué aux activités de la journée.
Vous pouvez planifier en quelques minutes. Autrement dit, le processus de planification ressemble à ceci: nous sélectionnons les tâches de la journée dans le pool général et définissons le temps prévu pour elles, que nous allons y consacrer.

Postulat numéro 3


Le temps géré signifie que le plan converge avec la réalité. Bien sûr, quelque chose peut changer pendant la journée. Et il se peut que le plan s'écarte de la réalité. Soit le temps prévu pour l'activité Tp (temps planifié), le temps réellement consacré à l'activité Tr (temps réel), la différence entre ces temps étant appelée coefficient de différence Td (temps delta). Nous considérons la qualité de la planification Qp (qualité de la planification) comme étant le pourcentage des sommes de tous les coefficients de divergence à la somme du temps total prévu, que nous soustrayons de cent.

Qp=100% frac(Td1+Td2+ ldots+Tdi+ ldots+Tdn)(Tp1+Tp2+ ldots+Tpi+ ldots+Tpn)100%

c'est-à-dire qu'il s'avère qu'à des coefficients de divergence zéro, la qualité de la planification sera de 100%.

Application Android


Cet article n'aurait pas paru si je n'avais pas décidé de mettre en place un outil pour ce concept. Je veux partager cette expérience.

Alors.

Application ChessTM implémentée.

Mise en œuvre le soir et le week-end pendant votre temps libre. Je travaille en tant que gestionnaire de versions et je ne travaille en aucun cas avec le développement Android.

Fonctions:

  1. Création d'un pool de tâches
  2. Planification du temps pour les tâches de tous les jours
  3. Transférer le plan de la veille
  4. Changement de tâche facile
  5. Statistiques

    • temps total passé par rapport au plan global, pour une durée arbitraire par secteurs de vie
    • rendre compte des tâches, du montant prévu pour chaque tâche et du montant réellement dépensé
    • statistiques sur la commutation entre les tâches et sur le facteur de qualité de la planification pour la période
  6. Répartition des tâches par secteurs de vie (travail, famille, amis, etc.) et tags

L'idée principale était de faire une telle mécanique d'interaction avec l'application afin d'en faire le moins possible. Pour rendre tout facile et simple - en un seul clic.

Il est implémenté comme suit - il y a un écran et trois onglets entre lesquels vous pouvez naviguer par saip:

  • pool de tâches où toutes les tâches sont actuellement disponibles;
  • plan quotidien, où le temps prévu pour les tâches est fixé;
  • contrôle, où nous passons de tâche en tâche et comptons le temps.


Ensuite, je voudrais me concentrer sur les moments du développement lui-même. J'espère que mon expérience sera utile aux développeurs novices, et les gourous vous diront probablement ce qui peut être amélioré dans le processus d'organisation du développement.

Infrastructure de développement


Je voulais faire le développement correctement tout de suite. Pour que ce soit quelque chose de durable, et non choyé et abandonné. J'ai donc voulu organiser une infrastructure holistique, comprenant:

  • IDE (Integrated Development Environment);
  • référentiel de stockage de code;
  • traqueur de tâches;
  • La documentation
  • test.

IDE


AndroidStudio, bien que quelqu'un puisse discuter, mais à mon avis, avec toute la richesse du choix, il n'y a pas d'autre alternative. Il y a beaucoup de directives sur la façon de mettre, comment commencer, comment enregistrer un développeur, etc. À mon avis, tout est assez simple ici, pas de conseil particulier, il suffit de le prendre et de le faire pratiquement selon les instructions.

Stockage de code


Git a été choisi comme système de stockage de code.

Les critères de sélection sont simples - un système moderne populaire, a une énorme communauté de développeurs, beaucoup de ressources avec une bonne documentation. Comme vous pouvez le voir, les critères ne sont pas entièrement techniques, mais lorsque vous êtes un développeur novice, la communauté et beaucoup de réponses à stackoverflow est un gros plus en gras.

Bitbucket a été choisi comme stockage distant:

  • gratuit;
  • vous permet de créer des référentiels privés et ouverts;
  • vous permet de créer une équipe pour travailler avec différents niveaux de droits d'accès;
  • a son propre tracker de tâches simple.

Suivi des tâches


Autrement dit, le choix de bitbucket donne également la présence d'un tracker de tâches. À première vue, il peut sembler que lorsque vous écrivez l'application vous-même, le traqueur de tâches n'est pas nécessaire, mais c'est une erreur de le penser. Le suivi des tâches organise. Vous permet de faire des plans. Et dans le cas où quelqu'un d'autre se connecte au projet, il n'y aura pas besoin de chercher quoi que ce soit, mais avec un développement conjoint sans tracker, rien. Oui, le tracker dans bitbucket n'est pas parfait, mais il ferme les principaux problèmes en première approximation.

La documentation


Pour la documentation a décidé d'utiliser readthedocs.io:

  • système gratuit qui vous permet de publier de la documentation au format Sphinx ;
  • s'intègre à bitbucket (et bien d'autres), c'est-à-dire que vous pouvez stocker des sources de documentation dans bitbucket et qu'elles seront automatiquement collectées à chaque validation, vous pouvez dire une intégration continue pour la documentation - c'est extrêmement pratique;

Malheureusement, la documentation n'est pas entièrement vraie maintenant. Mais à l'époque, son écriture était très utile. Par conséquent, je recommande fortement d'écrire de la documentation à tous ceux qui commencent leur projet - cela met de l'ordre dans leurs pensées et clarifie la vision du projet.

Test


Les tests sont un sujet énorme et vous pouvez trouver beaucoup de documents sur ce sujet.

J'ai un niveau de modèle dans l'application où tous les calculs et calculs sont effectués.
Par conséquent, j'ai décidé de me concentrer sur le test de ce module logiciel particulier.

Pour cela, j'utilise JUnit4 . Les tests s'exécutent sur l'appareil.

Les tests sont des tests unitaires de la classe principale du modèle.

Un ensemble de données de test est créé et, par conséquent, toutes les fonctions de la classe de modèle sont appelées avec un résultat connu.

Par expérience, je peux dire ce qui suit:

  • les tests sont très utiles pour détecter la régression;
  • parfois des erreurs de conception / architecture apparaissent lorsque vous commencez à utiliser les fonctions vous-même, la tête commence à fonctionner un peu différemment lorsque vous utilisez la fonction, même si vous l'avez écrite vous-même;
  • garder les tests à jour, je regrette maintenant de ne pas l'avoir fait, car le volume de l'application est déjà assez important, et tous les détails ne peuvent pas être gardés en mémoire, et une régression qui peut être détectée au stade du test unitaire tombe malheureusement en production. Donc, avec une persévérance têtue et terne - "garder les tests à jour !!!"

Architecture et implémentation


L'essence de cette section est de parler de ce qu'il faut apprendre pour un débutant afin de pouvoir implémenter des fonctions comme dans cette application.

Au tout début du voyage, le principal problème était qu'il n'était pas clair par où commencer et dans quelle direction penser. Comment le faire et comment le faire mal.

Pour les débutants, je recommande de commencer par un livre. Le livre est bon dans la mesure où les informations y sont systématisées, et il est beaucoup plus facile de commencer de cette façon.

Personnellement, j'ai commencé avec «Programmation pour Android. Pour les professionnels »B. Hardy, B. Phillips. En général, je peux le recommander. Peut-être que maintenant il est dépassé à certains endroits, mais il est tout à fait possible de commencer.

Je peux également recommander d'écouter divers podcasts sur la programmation Android. Bien sûr, tout n'est pas clair en eux, mais vous pouvez saisir les tendances et comprendre dans quelle direction évoluer. En particulier, j'écoute occasionnellement androiddev sur apptractor .

Quant à l'architecture elle-même, j'ai essayé d'implémenter une approche dans laquelle la logique interne est au maximum séparée de l'affichage. Le fait est qu'au stade initial, tout n'est pas complètement pensé et que vous devez être capable de changer les «mathématiques» (logique de travail) sans réécrire tout le code.

Par exemple, dans ma candidature, l'essentiel est «activité» en termes de tâche / activité. Et toute la logique du travail consiste à manipuler des activités: début d'activité, fin d'activité, définition des paramètres d'activité, calcul des statistiques d'intervalles de temps, etc. Cette logique que j'ai faite

dans une structure de classe distincte


La liste des tâches est contenue dans la classe ActionsManager et tout accès à celles-ci se fait via les fonctions de cette classe. Autrement dit, partout dans l'application, toutes les manipulations avec des tâches sont effectuées via la classe ActionsManager.

L'objet de base de données est initialisé dans l'objet d'application. Tout le monde prend l'objet d'ici, au lieu d'en créer un nouveau à chaque fois.

Ici, je peux donner de tels conseils - prendre la logique dans des classes séparées. Lisez sur les modèles de conception - pas besoin d'inventer un vélo où il existe déjà une solution.

L'interface graphique est basée sur ActionBarDrawerToggle. Au début, ActionBarSherlock était utilisé, bien sûr, ce n'est pas mauvais pour tout le monde, mais j'ai ensuite eu des problèmes de compatibilité avec d'autres composants et je suis passé aux composants standard de Google (menus, onglets, listes avec chargement dynamique des données, etc.).

Dans le processus de prise de conscience des applications, en plus des composants Android standard, les éléments suivants ont été utilisés:

  • mise en œuvre de ses méthodes de gestion des événements de recherche;
  • implémentation de longclick via un événement tactile, car le longclick natif ne pouvait pas être forcé de fonctionner selon vos besoins;
  • MPAndroidChart - création de graphiques et de graphiques;
  • com.roomorama: caldroid - affiche un calendrier par mois;
  • com.github.paolorotolo: appintro - création d'un assistant de démarrage.

Monétisation


  • L'application elle-même est entièrement gratuite et sans publicité.
  • Il est prévu d'ajouter diverses options payantes au fil du temps.
  • Pour le moment, il s'agit d'un module de statistiques sans restrictions.
  • Toutes les statistiques de la journée en cours peuvent être consultées, mais pour le faire pendant une période arbitraire, vous devez acheter le module sans restrictions.
  • En fait, avec le compte du vendeur, tout est devenu beaucoup plus facile.
  • Dans mon cas - il y a un compte à la Caisse d'épargne, j'ai ouvert un compte en dollars via la Caisse d'épargne en ligne et je l'ai lié à mon compte - tout est très simple. Et oui, une fonctionnalité intéressante, depuis un certain temps, Google transfère de l'argent à partir de 1 $.

PS:
Enfin, un message à tous les débutants, ou à ceux qui veulent se lancer - n'ayez pas peur des difficultés, n'ayez pas peur, petit à petit, pas à pas, vous réussirez!

Source: https://habr.com/ru/post/fr429490/


All Articles