Timer is a custom project management system we originally created for our internal needs. Timer solves all of our management tasks: we plan all our project sprints in it, track time and progress, and generate salary reports and invoices.
One of our main goals is to be effective, which is why we adhere to a Scrum-based workflow. And, of course, in our work, it is very important to use a tool for tracking and planning tasks. Since we estimate the cost of projects based on the hourly rates of our specialists, we need to correctly predict the time spent by the team and adhere to the deadlines. Based on the time spent, we pay the team's salary, fight overwork, allocate resources, and optimize processes.
Obviously, this requires a convenient and understandable tool. Since we did not find a suitable tool from the existing ones on the market, as some were too simple and did not cover all our requirements (or conversely, too complex), we created our own product with the perfect set of features.
The original version was just a time-tracking and reporting add-on to an existing system. Later, our workflow evolved and we decided to add some more features to Timer.
Timer became a playground where we first adopted Angular.js, django-channels, WebSockets, Webpack, and other tools. When Angular 2 was released, it was a decision to migrate our existing system to Angular 2.
Then a new active stage of development followed. And now we have migrated from Angular 2 to React.
Timer allows for tracking different types of activities among tasks, subtasks, or projects directly. Time is tracked in real time on the server side and turns off automatically when a connection is lost. Of course, we also allow entering time manually.
Time-tracking results can be reviewed in the calendar view.
We have added a very user-friendly interface to add time manually. You can see busy slots, and it is convenient to add in empty working hours if for some reason you did not track them by default. It is also important to note that we do not have simultaneous tracking; i.e., only one object can be tracked at a time.
We also have week and day calendar views. In this mode, you can clearly see the slots, what was happening in them, and who was responsible for a particular job. It is also very easy to look at the slots for each person; just start entering the name in the search.
Sprints are the backbone of an agile workflow, so of course, we've built sprint support into Timer.
This UI allows us to plan multiple sprints at the same time and see an overview of a project's state.
Accurate task estimation allows us to meet our deadlines. Fast estimations allow us to provide reliable plans to our clients.
During the planning phase, we use t-shirt sizes to estimate features. Statistics from previous projects are used to predict how much time will be required for new tasks.
We calculate this indicator for each user based on the size of the task and the specific project. And this is very important because the same user in one project can complete an M-size task in six hours and another project in ten hours.
We also include detailing by type of activity in this forecast, since usually the tasks include not only the development itself, but also calls, writing requirements, and more. This allows us to estimate the size of the task. And since we collect statistics on the work of our team, we can know how long it takes a particular user to complete the next similar task.
This is another useful metric for scheduling tasks.
We count how many hours per day it falls to work on tasks for a specific user. Since usually people are engaged not only in development but also in other activities, it is important for us to understand how much time out of all activities is spent working on tasks. In this way, we can see if the specialist will complete all the tasks assigned to him on time.
Having an indicator with a task size and a performance-per-day metric, we can predict our work quite accurately.
The performance-per-sprint indicator shows how many tasks a teammate can complete in one sprint. Everything is calculated automatically depending on the duration of the sprint; you do not need to do anything manually.
The indicators with the size of tasks and the performance per day are compared, and if the manager has set too many tasks for the specialist, he will receive a notification in Slack that the user will not be able to perform such a volume of work.
In order not to constantly remember which of our colleagues went on vacation, fell ill, or worked part time, we added the ability to change the days when calculating at the user level.
We have the ability to split tasks into subtasks, each of which has its own set of statuses and a field for comments.
We can handle bugs separately within the task to which they relate. We can also quickly see what is blocking a task and who is responsible for it. We can assign other users to subtasks and more.
At the same time, any changes to subtasks and comments attached to them are sent to the person in charge in the form of notifications in Slack.
For convenience, Timer also implements an activity log, where all user activities within the system are collected in one stream, as well as the comments left by them. It is convenient in that you can clearly see all the work on the task and how much time someone spent. It is fast and has convenient groupings so as not to overload the air.
Timer builds simple yet informative reports that we use to pay salaries and generate invoices. To download the required report, just click one button after selecting the necessary filters, whether it be by the time spent by one specific specialist or the entire team during a sprint.
Slack notifications are sent to users depending on the sprint schedule. There are also so-called action notifications when certain users receive messages depending on what actions are performed on the project and the role of the user.
We are continuing to work on the current version of Timer 3.0, and we still have a lot of new and useful features in our plans. But today we can say that we have a powerful and convenient tool that allows us to effectively organize our work.