What are fields?
Fields define the schema of your Project, and are entirely metadata (they exist only in the Project, and aren't recorded within the ticket itself). You may call "schema" the "data model", or "columns": it just means what will be recorded for each and every item in the Project.
There is a default set of fields (that cannot be deleted in the field settings), importantly this includes Status — however you can and should edit this field.
There are different types of 'View', and the fields are most visible in the 'Table' View (close to a spreadsheet). To edit a field's settings in this View, click the ⋯ next to its column header then the ⚙️ icon.
Field types
In a Project, you get simple types for Text and Number (in a programming languages they'd be the simple string and integer types), however after trying different designs I chose to stick to just 3:
- 📆 Date - a single day's calendar date
- ⬇️ Single select - which I refer to as an Enum
- 🔂 Iteration - a Date with an associated duration (e.g. 7 days), can also be manually edited on a calendar view to a different duration, and can have 'gaps' between consecutive values. More like a run-length encoding programming type.
Text fields give you freedom to add new values on-the-fly, but this also means the freedom to make mistakes (typos and inconsistent names). It's better to use the Single select (Enum) as it is ordered, and can therefore be used to sort in ways other than alphabetically - not possible with a simple Text type field.
My suggested fields
Firstly, for visual clarity I choose to keep field names always in sentence case.
I use ten fields to plan my open source projects, whose names (and emojified types) are:
- Status ⬇️ – in progress or otherwise
- Start date 📆 – real or scheduled
- End date 📆 – deadline (optional)
- Goal ⬇️ – categorised aim of the ticket's request
- Area ⬇️ – genre of the ticket's domain
- Size ⬇️ – estimated scale of work
- Day 🔂 – scheduled day
- Week 🔂 – scheduled week
- Month 🔂 – scheduled month
- Library ⬇️ – repo/etc.
1. Status ⬇️ (built in)
- Tracks the current status of a task: the defining element of Kanban
- Values: WIP, TODO, Hatching, Soon, Future, Idea, On hold, Shelved, Done
- Ordered, sentence-case values, coloured, and prefixed with emojis for ease of visual scanning
- Sorting a View on this field will mean items 'float to the top' by priority, which it should be assigned to reflect
2. - 3. Start date, End date 📆
- Non-ephemeral metadata for scheduling in the short-term and project DORA metrics [primarily lead time] in the long-term
- Start date can be a future date the task is scheduled to be begun, and end date can be used to provide due date (otherwise left blank: date of completion gets recorded by closing the ticket)
4. Goal ⬇️
- Values: bug, feat, question
- The 'goal' of the person who made the ticket (remedying a problem, providing a new feature, or a [not necessarily productive] question)
5. Area ⬇️
- The genre or sector of your life/work that the item comes from. Useful to gauge distribution of efforts, to aid in reprioritising.
- Example values: blog, contribution, development, experiment, meta
6. Size ⬇️
- Values: XS, S, M, L, XL
- Coloured (scale from green-red), ordered
- Easily legible/interpretable, these are known as "T-shirt sizes"
- This is a default field provided on GitHub's sample software engineering template
7. Day 🔂
- Setting this field indicates that a task has been scheduled specifically
- Period of 1 day is automatically recorded on a calendar, separately to the value's name
- Set the name to the number of the day in the month (1, 2, ...) and then add further days by clicking the Add iteration button in the field's settings.
- Either with/out breaks on weekends depending on project type (typically work vs. personal)
8. Week 🔂
- As above for Day, but in periods of 5 business days or 7 calendar days depending on project type again (e.g. 38 = Sep 16-20, ...)
- Setting this field indicates that a task has been scheduled for a particular week (and may be further specified to the day)
9. Month 🔂
- Abbreviated calendar month, title case (e.g. Sep = September 01 - 30)
- N.B. names can be degenerate (non-unique, for different years)
- Setting this field indicates that a task has been scheduled for a particular month (and may be further specified to the week/day)
10. Library ⬇️
- Similarly, in a work context, this might be "service"
- Order the enum alphabetically, and don't use colours (as there'll likely be many)