We want to share the principles of working with tasks in the Django web development company that have been formed over the years of our practice. Their goal is to create a way of thinking aimed at increasing the effectiveness of achieving results.
The article is useful for beginners and young teams. The principles are easily applied to any development process and tools. They are based on an understanding of what a task is in its essence and how to work with it altogether.
A task here refers to both a specific “task” and a “feature” or “epic”. There will be no examples of interpretation of the principles in the text, so as not to inflate them. I will leave a few recommended materials that will reveal the essence of individual theses a little wider, and I will be happy to answer the remaining questions in the comments.
Why every task has a goal? For the process of achieving it to be effective, it must be clear from the task why the desired result is needed. Useful questions for problem formulation:
- What result needs to be produced?
- Why was there a need for this outcome? What is it for? To whom and what value will it bring?
- How to understand that the problem is solved (the result is obtained)?
Ask these questions considering the needs and characteristics of the users of the system being developed and business goals. Put yourself in the place of the user or customer. It is difficult, but you can learn: try and check the assumptions of experienced comrades.
What does it mean to set a task?
Think and describe:
- Purpose, need, or problem.
- Desired result. Align it with the goal. Make sure the result contributes to its achievement.
- Constraints, such as timing or technology.
The task should be equally clear to the performer, author, tester, and other persons interested in solving it. Rely on generally accepted concepts, exclude double interpretations, and be sufficient, but not redundant. On the one hand, you should not create unnecessary restrictions for the performer. On the other hand, it is necessary not to miss the significant requirements for the result.
What does it mean to accept a task?
- Understand the required result and purpose. Agree with their optimal correspondence with each other.
- Agree with the limitations of the task in terms of time or the maximum complexity of the solution.
- Take responsibility for achieving results within stated limits.
The one who sets the task is responsible for setting the task. But before accepting the task for work, you can influence its wording, and discuss and correct it together with the author.
The presence of uncertainty in a problem is always a risk. Before accepting a task, understand the strategy for working with it.
What does it mean to make?
A task is “done” when the result of its execution is ready for its intended use and does not require additional actions. The task cannot be “almost done”. It is either done or in any other state. A task submitted for testing is also a task not yet done.
If you claim that you have completed the task, this should mean: that additional testing, deployment, and verification are not required, and the result of the work can be used. The opposite is also true: if no further actions are required, and the result brings the expected benefit, then the task is done and should be transferred to the done status.
When it is said that a task must be done by a certain moment, by that time it must have passed all the necessary stages of the life cycle, including testing and acceptance. In order for the task to be done on time, you need to start “turning in” it before the deadline.
This principle should be applied to planning as well. Name the time and laboriousness of solving the problem, considering testing, debugging, etc.
The sooner you get a value-added result, the better. Feedback appears faster, quality management, expectations, and the project as a whole are more effective.
Move tasks towards completion. They should not get stuck in one status or accumulate with one artist. These are symptoms of problems that reduce the effectiveness of achieving results.
A “healthy” decomposition is required to maintain the performance principle.
Decomposition based on need
Task decomposition should increase the efficiency of obtaining the overall result and simplify the project management process.
A good level of decomposition is when the result of each task can be used to control the achievement of the overall result of the project and its quality. At the same time, the appearance of an intermediate result does not slow down the process of achieving the goal. The smaller the tasks, the more distractions to switch between them.
Time tracking for communication
If you need to record the time spent on work, consider the time spent on communication. Familiarization with the problem and its discussion is part of the solution process. You should not start separate tasks for “talk”.
For example, a discussion of the design of an application with the SaaS programmer (https://www.softformance.com/services/saas-development/), an example between a designer and a developer, is part of the task of developing this design. Communication is a collaboration tool. But it is also necessary to consider communication in the complexity of solving the problem. Sometimes it takes more time to talk to find out and agree than to write code. And that’s ok.