Anatomy of a task
The task is the main entity of the HacknPlan system. It represents a small and specific piece of work to be done, and it can be classified by different aspects or characteristics relative to your project organization.
The lifecycle of a task goes from the moment it is created until the completion (or deletion) of the task. During its lifetime, a task can go through several different stages, these are the default ones:
- Backlog: The backlog is a container for future work. Many times you create a task but you don’t know when you’ll work on it, so it’s added to the backlog. It’s possible to add tasks directly to boards too.
- Planned: HacknPlan is designed for iterative development, so when a task is ready to be started it should be assigned to a specific kanban board, where the work is tracked. This puts the task in the Planned stage, meaning that it will be accomplished during a specific milestone but it hasn’t been started yet.
- In progress: This means someone already started working on the task.
- Testing: Most of the times, a task is somehow evaluated after is theoretically finished, in order to verify that it fulfilled its purpose. This stage is for that matter, and the testing will vary a lot depending on the type of task: testing some feature in the game, evaluating a concept art, a music track, checking a model works properly in the engine… It’s quite common a task moves among In progress and Testing stages several times, as part of a process of correction and re-evaluation.
- Completed: When the task has been done and verified, it goes to the completed stage. The task keeps assigned to the milestone after is completed, this way you can go back to finished milestones if you want to check something from the past. A task can be reopened at any moment.
If a task is moved to another board the status of the task will be “reset”, meaning it will go back to the Planned stage.
Besides the stage, during the lifetime of a task, it can be assigned to one or several team members. This assignation is a bit open to interpretation, meaning it would represent a different thing depending on your work style. While many producers like to assign tasks to users right from the beginning (so the user-task relation means duty) and keep the assignation during the whole lifecycle, other people have a more agile approach, where the assignation means the user is currently working on the task, so users are assigned (and many times self-assigned) and unassigned during the life of the task.
Classification of tasks
As we said previously, tasks can be classified by different aspects that allow to organize them properly and help you better manage them. Some of these characteristics are mandatory, which gives you a very reliable and strong structure, and some of them are optional, giving you more flexibility:
- Category: You can classify your tasks depending on the discipline they belong to, like “Programming”, “Art”, “Sound”, “Marketing”… The category is a mandatory field that reflects this classification, which is used to split the kanban board into different role-based boards, extract metrics about them so you know how much you work on each discipline, and also to apply permissions based on those roles.
- Game design element: The game design model allows you to create a dynamic structure of concepts in order to have documents and tasks under the same organization, so setting a game design element to a task you are giving context about the topic, feature or concept this task relates to from a functional point of view. This field is optional and, although is recommended to have your tasks under the game design model, you can have tasks without one for things like reminders, non-development related tasks, etc.
- Board: As we mentioned during the lifecycle explanation, a task can belong to a board or not (which means it’s in the backlog then). A board is nothing but a way to classify tasks by some criteria, which normally is a sprint or iteration of your development cycle. Boards can have start and due dates, but they are optional, so you can use them as regular kanban boards without a deadline on them.
- Tag: You can assign custom tags to your tasks to give them extra meaning or a special condition. For example, you can add a tag that says Impediment in red color so you can see that something is going on on a task just with taking a brief look at the card. You can also use them as sub-stages: you could add a tag Code review to a programming task in the Testing stage for a better understanding of what is being done.
Creating a task
Now that you know more about tasks, let’s create one. In order to do that, click on the Create entry on the left menu or press T on your keyboard. You also have other shortcuts in important places, like the Kanban board or the design element editor. This opens up a task creation dialog.
The task creation in HacknPlan is progressive, meaning there are many possible fields and information to add to a task, but it’s initially hidden not to overwhelm the users and keep it simple. If you need to enter more data, you can click on the Fields button and enable (or disable) the fields you want. If there are fields you always need, you can check the Remember fields option, which will save your field configuration as the default for future task creation. Additionally, administrators can visit the section Administration -> Modules, where they can set some fields of the task creation to be mandatory. Many of these fields are typeaheads that allow you to select the value by start typing and selecting from a list of matching values.
The list of fields that can be added to a task are:
- Project: You can create tasks from anywhere in the application, so you need to select which project the task will be added to. It defaults to the currently open project if any.
- Title: The title of the task.
- Design element: The game design model element the task belongs to. It defaults to none, unless you are in the game design model page and selecting a specific element, then it will default to that one.
- Board: The board the task belongs to. If you are creating the task from a specific board the default value will be set to that one, if not it will be set to the default board (which you can set from Administration -> Boards & milestones), and if no one is set it will be set to none (which means the task goes to the backlog). You can also alter how this automatic board detection works from your user Settings -> Application, Behavior panel.
- Category: The category the task belongs to. If you are currently in a specific category board panel, that category will be set as default. If not, it will be set to the last used one, so you can save time when you have to create several tasks of the same type.
- Description: Add a complete description, links, pictures, and everything that is necessary to clarify what needs to be done in the task. This field supports markdown syntax, so you can format the text as you wish.
- Estimated cost: This value measures the effort you estimate will dedicate to finish this task. It will be time or points depending on what you configured for your project. Defaults to zero.
- Importance level: It says how important the task is, which is especially useful for bugs or support tasks. It defaults to “normal”, which does not create any visual sign on cards.
- Due date: Although tasks are normally done within the scope of an iteration or sprint, they can also have their own due date. This is especially useful for tasks related to marketing, PR or other disciplines that are a bit independent from the development iterations, but we recommend not to overuse this feature. It defaults to none.
- Tags: You can add one or more tags to your task to add extra information or categorization that will be visible on the card. You can enforce the creation of at least one tag from the Administration -> Modules section.
- Assigned users: You can add one or more users to your task card as assignees. You can enforce the assignation of at least one user from the Administration -> Modules section.
- Subtasks: You can easily add subtasks, a checklist of steps that need to be accomplished before completing the task. The subtasks work well as a reminder and also show a more detailed progress status.
- Attachments: You can attach files to the task from your computer or Google Drive, that you can also reference from the task description. Additionally, you can drag and drop the files into the task creation dialog, which will upload them automatically.
- Dependencies: Dependencies are tasks which block the current one until they are completed, as a way of visually detecting bottlenecks and making the prioritization of tasks easier.