Time management without strict schedules, experience in developing a mobile application

Time management, control, efficiency increase. Subject hackneyed but I dare to offer another solution.
 3r3444.
 3r3444. 3r3158. Time management without strict schedules, experience in developing a mobile application 3r33434.
 3r3444. What is a universal method of managing my time, which would fit all, I could not yet find. As a rule, everyone chooses for themselves practices that are better suited to him. And this is due not only to the peculiarities of character but also to the peculiarities of the work.
 3r3444.
 3r3444. I’ve got it like this: I’ve got ready, set up, got to work, and here - “the seal will call, then the deer”. At the end of the day there is generally a feeling that it is not clear what he was doing and what was the result.
 3r3444.
 3r3444. Once an idea arose: “It would be great if someone called you and you, as in a chess game 3r-321. 3r3404. pressed the button and stopped the work time, went back to work - pressed another button. As a result, you will get how much you worked and how much you rested. I called this approach chess time management, or ChessTM for short.
 3r3444.
 3r3444. It is not difficult to guess that the idea immediately scaled to the idea of ​​having a button on each task during the day. And then it all transformed into the concept of time management.
 3r3444.
 3r3444. 3r3331. The concept of
 3r3444. Time cannot be stopped. We always spend our time. And if we do something with one, then obviously it’s impossible to do something else at the same time with constant effectiveness. At any time there is any activity - work on any task, playing sports, walking, exercise, eating, sleeping, etc.
 3r3444.
 3r3444. 3r33410. Postulate number 1
 3r3444. To control the need to control the flow time. To manage time you need to be able to control it. Principle - at the touch of a button (literally, not metaphorically) we select the current activity and the calculation of the time for the previous activity automatically stops and begins to count for the current one.
 3r3444.
 3r3444. 3r33410. Postulate number 2
 3r3444. To manage you need planning. To manage time you need to be able to plan it. At any point in time we have a common pool of tasks and some pressing affairs. Working on a task or pressing matters, we perform activities. Planning is that we assume what kind of activity we will be engaged in. The traditional understanding of the plan involves a fixed sequence of actions. It is often very difficult to maintain a fixed sequence, sometimes for objective, and sometimes not very reasons. Deviation from the plan makes you nervous and reduces work efficiency. Rest is perceived as idleness, there is a feeling of guilt, reduced work efficiency and reduced satisfaction. To avoid the problems described, we will plan not a sequence of different kinds of activities, but the time allotted for activities during the day.
 3r3444. You can plan in minutes. That is, the planning process looks like this - we choose the tasks for the day from the general pool, and set the planned time for them, which we are going to spend on them.
 3r3444.
 3r3444. 3r33410. Postulate number 3 r3r3411.
 3r3444. Managed time means that the plan fits in with reality. Of course in the course of the day something may change. And it may turn out that the plan disagrees with reality. Let the time planned for the activity Tp (time planed), the time actually spent on the activity Tr (time real), the difference between these times be called the coefficient of divergence Td (time delta). We will consider the quality of planning Qp (quality of planning) as the percentage of the sum of all the coefficients of divergence to the sum of the total planned time, which is subtracted from the hundred.
 3r3444. 3r3633.
$$ display $$ Qp = 100% - frac {(Td_ {1} + Td_ {2} + ldots + Td_ {i} + ldots + Td_ {n})} {(Tp_ {1} + Tp_ {2} + ldots + Tp_ {i} + ldots + Tp_ {n})} * 100% $$ display $$
3r366. that is, it turns out that with zero divergence coefficients, the quality of planning will be 100%.
 3r3444.
 3r3444. 3r33410. Android application
 3r3444. This article would not have appeared if I had not decided to implement a tool for this concept. I want to share this experience.
 3r3444.
 3r3444. So.
 3r3444.
 3r3444. Implemented ChessTM application.
 3r3444.
 3r3444. Realization in the evenings and weekends in their free time. I work as a release manager and work with android development is in no way connected.
 3r3444.
 3r3444. 3r3391. Functions: 3r35353.
 3r3444.
 3r3444.
 3r3444.
Creating a task pool
 3r3444.
Planning time for daily tasks
 3r3444.
Carry forward plan of the previous day
 3r3444.
Simple task switching
 3r3444.
Statistics
 3r3444.
 3r3444. 3r33414.  3r3444.
total elapsed time in relation to the total plan, for an arbitrary period in the vital sectors 3r33432.  3r3444.
report on the tasks, how much is planned for each task and how much actually spent
 3r3444.
statistics on switching between tasks and on the quality factor of planning for the period 3-33432.  3r3444. 3r3r434. 3r33432.  3r3444.
The distribution of tasks by life sectors (work, family, friends, etc.) and tags
 3r3444.
 3r3444. The main idea was to make such mechanics of interaction with the application to do as little as possible actions. To make everything easy and simple - “with one click”.
 3r3444.
 3r3444. It is implemented as follows - there is one screen and three tabs between which you can navigate with the saip:
 3r3444.
 3r3444. 3r33414.  3r3444.
task pool, where all current tasks are available; 3r33432.  3r3444.
daily plan, where you set the time planned for the tasks; 3r33432.  3r3444.
control, where we switch from task to task and count time. 3r33432.  3r3444. 3r3r434.
 3r3444. 3r3158. 3r33434.
 3r3444. Further, I would like to focus on the moments of the development itself. I hope my experience will be useful to novice developers, and the gurus may suggest that in the process of organizing the development can be improved.
 3r3444.
 3r3444. 3r33410. Development Infrastructure
 3r3444. Development wanted to do right away. So that it was something long-playing, not pampered and quit. Therefore, I wanted to organize a holistic infrastructure, including: 3r3437.  3r3444.
 3r3444. 3r33414.  3r3444.
IDE (Integrated Development Environment); 3r33432.  3r3444.
code storage repository; 3r33432.  3r3444.
task tracker; 3r33432.  3r3444.
documentation; 3r33432.  3r3444.
testing. 3r33432.  3r3444. 3r3r434.
 3r3444. 3r33333. IDE
 3r3444. AndroidStudio, although someone may argue, but in my opinion, with all the wealth of choice, there is no other alternative. There are a bunch of guidelines how to install, how to start, how to register a developer, etc. In my opinion, everything is quite simple, no special advice, just take and do almost according to the instructions.
 3r3444.
 3r3444. 3r33333. Storage code
 3r3444. Git was selected as the code storage system.
 3r3444.
 3r3444. The selection criteria are simple - a popular modern system, has a huge community of developers, a lot of resources with good documentation. As you can see, the criteria are not entirely technical, but when you are a novice developer, the community and the multitude of answers to stackoverflow is a big fat plus.
 3r3444.
 3r3444. was selected as the remote repository. bitbucket :
 3r3444.
 3r3444. 3r33414.  3r3444.
free; 3r33432.  3r3444.
allows you to create private and open repositories; 3r33432.  3r3444.
allows you to create a team to work with different levels of access rights; 3r33432.  3r3444.
has its own simple task tracker. 3r33432.  3r3444. 3r3r434.
 3r3444. 3r33333. Task Tracker
 3r3444. That is, the choice of bitbucket also gives the presence of a task tracker. At first glance it may seem that when you write an application yourself, the task tracker is not needed, but it’s wrong to think so. Task tracker organizes. Lets make plans. And if someone else connects to the project, it will not be necessary to search for anything, but when co-developing without a tracker, there is no way. Yes, the tracker in bitbucket is not perfect, but it closes the main issues as a first approximation.
 3r3444.
 3r3444. 3r33333. Documentation
 3r3444. For documentation, I decided to use readthedocs.io:
 3r3444.
 3r3444. 3r33414.  3r3444.
free system allows you to publish documentation in the format 3-333257. Sphinx
; 3r33432.  3r3444.
integrates with bitbucket (and many others), that is, you can store the source files of the documentation in bitbucket and it will automatically be built at every commit, you can say continuous integration for documentation - this is extremely convenient; 3r33432.  3r3444. 3r3r434.
 3r3444. Unfortunately now the documentation is not quite true. But at one time her writing has brought great benefits. Therefore, I highly recommend writing documentation to all those who are starting their own project - this brings thoughts in order and clarifies the project’s vision.
 3r3444.
 3r3444. 3r33333. Testing
 3r3444. Testing is a huge topic and you can find a lot of materials on this.
 3r3444.
 3r3444. I have a model level in the application where all the math and calculations are performed.
 3r3444. Therefore, I decided to focus on testing this particular software module.
 3r3444.
 3r3444. For this, I use JUnit4 . Tests run on the device.
 3r3444.
 3r3444. Tests are unit tests of the main class of the model.
 3r3444.
 3r3444. A test dataset is created and, accordingly, all functions of the model class with a previously known result are called.
 3r3444.
 3r3444. From experience I can say the following:
 3r3444.
 3r3444. 3r33414.  3r3444.
tests are very helpful in catching regression; 3r33432.  3r3444.
Sometimes design /architecture errors are detected, when you start using functions yourself, the head starts to work a little differently when you use a function, even if you wrote it yourself; 3r33432.  3r3444.
keep the tests up to date, I now regret very much that I didn’t do this, because the size of the application is already quite large, and not all the details can be kept in memory, and some regression that can be detected at the unit test stage unfortunately falls into production. So with stubborn, stupid perseverance - “keep the tests up to date !!!” 3r33232.  3r3444. 3r3r434.
 3r3444. 3r33333. Architecture and implementation
 3r3444. The essence of this section is to tell you what to learn for a beginner in order to be able to implement functions like in this application.
 3r3444.
 3r3444. At the very beginning of the way, the main problem was that it was not clear where to start and in which direction to think. How to do and how wrong.
 3r3444.
 3r3444. For beginners, I recommend starting with a book. The book is good because the information in it is systematized, and it is much easier to begin.
 3r3444.
 3r3444. Personally, I started with “Programming for Android. For professionals ”B. Hardy, B. Phillips. In general, I can recommend. Maybe now it is obsolete in some places, but it is quite possible to begin.
 3r3444.
 3r3444. I can also recommend listening to various podcasts on the topic of programming for android. Of course, not everything is clear in them, but you can catch the trends and understand in which direction to go. In particular, I occasionally listen to androiddev on apptractor .
 3r3444.
 3r3444. As for the architecture itself, I tried to implement an approach in which the internal logic is separated from the display as much as possible. The fact is that at the initial stage not everything has been thoroughly thought out and you need to be able to change the “mathematics” (the logic of the work) without rewriting the entire code.
 3r3444.
 3r3444. For example, in my application, the main entity is “activity” in terms of task /activity. And all the logic of work is manipulation of activities: start an activity, complete an activity, set activity parameters, calculate statistics of time intervals, etc. This is the logic I took
 3r3444.
 3r3444. 3r33351. 3r33352. in a separate class structure [/b] 3r33354. 3r33333.
 3r3444.
 3r3444. The task list is contained within the ActionsManager class and all access to them is provided through the functions of this class. That is, everywhere in the application, all manipulations with tasks are performed through the ActionsManager class.
 3r3444.
 3r3444. The database operation object is initialized in the application object. Everyone else takes the object from here, instead of creating a new one each time.
 3r3444. 3r33434. 3r33434.
 3r3444. Here I can give such advice - carry the logic into separate classes. Read about the design patterns - no need to invent a bicycle, where there is already a solution.
 3r3444.
 3r3444. GUI is based on ActionBarDrawerToggle. First was used. ActionBarSherlock Of course, it’s not bad for everyone, but then I had problems with compatibility with other components and I switched to standard Google components (menus, tabs, lists with dynamic data loading, etc.).
 3r3444.
 3r3444. In the process of consciousness, in addition to the standard android components, the following were used:
 3r3444.
 3r3444. 3r33414.  3r3444.
implementation of your own seekbar event handling methods; 3r33432.  3r3444.
implementation of longclick through the touch event, since the native longclick could not be made to work for its needs; 3r33432.  3r3444.
3r33393. MPAndroidChart
- creation of graphs and chartsm; 3r33432.  3r3444.
com.roomorama: caldroid - calendar display by month; 3r33432.  3r3444.
3r3403. com.github.paolorotolo: appintro
- creation of a starting wizard. 3r33432.  3r3444. 3r3r434.
 3r3444. 3r33410. Mounting
 3r3444. 3r33414.  3r3444.
The application itself is completely free and without ads. 3r33432.  3r3444.
It is planned with the passage of time to add various paid options. 3r33432.  3r3444.
At the moment it is a module of statistics without restrictions. 3r33432.  3r3444.
All statistics for the current day can be viewed, but in order to do this for an arbitrary period of time, you need to purchase a module without restrictions. 3r33432.  3r3444.
As it turned out now with the account of the seller everything has become much easier. 3r33432.  3r3444.
In my case - there is an account in the savings bank, I opened a dollar account through Sberbank online and tied it to an account - everything is very simple. And yes, a nice trick, for some time Google transfers money starting from 1 dollar. 3r33432.  3r3444. 3r3r434.
 3r3444. P.S .: 3r3437.  3r3444. Lastly, the message to all beginners, or those who want to start - do not be intimidated by difficulties, do not be afraid, gradually everything will work out step by step! 3r33434. 3r3444. 3r3444. 3r3442. ! function (e) {function t (t, n) {if (! (n in e)) {for (var r, a = e.document, i = a.scripts, o = i.length; o-- ;) if (-1! == i[o].src.indexOf (t)) {r = i[o]; break} if (! r) {r = a.createElement ("script"), r.type = "text /jаvascript", r.async =! ? r.defer =! ? r.src = t, r.charset = "UTF-8"; var d = function () {var e = a.getElementsByTagName ("script")[0]; e.parentNode.insertBefore (r, e)}; "[object Opera]" == e.opera? a.addEventListener? a.addEventListener ("DOMContentLoaded", d,! 1): e.attachEvent ("onload", d ): d ()}}} t ("//mediator.mail.ru/script/2820404/"""_mediator") () ();
3r3444. 3r33434.
+ 0 -

Add comment