A Place for Everything: How I Track Work
- title
- A Place for Everything: How I Track Work
- author
- Mike Zornek
- fetched
- 2026-07-18
- via
- defuddle
A Place for Everything: How I Track Work
When I have management responsibility on a project and influence to shape workflows, this is how I typically manage issues and pull requests. None of this is the One True Way β it's just the system I've arrived at, and I find writing it down useful both for myself and for blog readers who enjoy such things and want to evolve their own flows.
Aside: If I'm joining a team that already has a working software lifecycle, I don't inject any of this out of the blue. I might ask a lot of questions about their process and why they landed there, but any changes are more gradual through team discussion and choice.
Issue Tracking
I like to keep issues in GitHub Issues and present progress / scheduling via GitHub Projects. I choose GitHub to be as close to the code/repo as possible. Two reasons:
- Knowledge stays next to the code it's about, instead of drifting off into a separate tool that's easy to lose. (I find people shift documentation tools a lot, and switching out of GitHub seems doubtful β though that wind might be changing these days.)
- Stakeholders get visibility β they can see what's in flight, watch epic-level progress, and gauge risk against a schedule.
Issue Statuses
I tend to organize issues by status, and I use more stages than most. The extra granularity makes it easy to see, at a glance, exactly where work actually is:
- Opportunities β unshaped ideas for work
- On Deck β prioritized, well-shaped, and understood
- In Progress β started
- Needs Review β finished (not merged) but awaiting peer review
- Done (Merged) β merged but not yet deployed
- Deployed (Shipped) β deployed to customers
- To Be Verified β deployed work explicitly awaiting business review before it's considered complete
- Verified β reviewed by business stakeholders and considered correct and complete
- Canceled β dropped and no longer being considered
The naming here is deliberate. I use Opportunities instead of "Backlog" because "backlog" implies a pile of work you're obligated to get through. "Opportunities" can sit around indefinitely and may never be prioritized β and that's fine. It gives ideas a home for public consideration and discussion without the quiet guilt of an ever-growing backlog.
The risk is that the Opportunities column gets too big to browse. When that happens, you clean it up and close issues. That's allowed.
Issue Types, for navigating a large list of opportunities
Statuses tell you where work is; types help you navigate what it is, especially when an Opportunities list gets long.
- Task β a specific thing to do, including non-code work
- Bug β an unexpected problem or behavior
- Feature β new functionality
- Enhancement β an improvement to existing behavior
- Enhancement: UI β interface changes that improve usability without new behavior
- Security β work related to platform security
- Code Refactor / DevOps β code-quality changes and developer quality-of-life improvements
- Documentation β improvements or additions to captured knowledge
Pull requests that tell a story
Pull requests are where issues are actually resolved, so I like to tie the two together explicitly.
A PR should reference the issue it fixes so it closes automatically on merge. If the work moves an issue forward but shouldn't close it, I just say Related to: #123.
A few things I lean on:
- Use a PR template. A template helps everyone remember the things reviewers tend to need. It's a default, not a rule β if a particular change is better presented some other way, ignore the template and present it that way.
- Shape the PR as a story. Explain the problem or the enhancement request, then walk through the change and how it resolves that problem. Give clear instructions on how to verify the change β and if the default dev environment doesn't have the data needed to demonstrate it, include code to seed that scenario.
- Open PRs early as drafts. I tend to push a PR early in my own dev cycle so people can see what I'm working on. The "draft" state indicates I'm not requesting review yet. Only when it's marked "open" β and I formally request review β am I actually looking for eyes.
A sample template
Templates can be as light as you like. Here's about the simplest one I use:
Fixes #<issue-number> / Related to #<issue-number>
## How to test/verify
Please include instructions for manually reviewing this changed behavior.
Other teams I've worked with prefer a template that prompts the author to check their own work before handing it off β a short list of questions to ask yourself before you ask for anyone else's time:
Fixes #<issue-number> / Related to #<issue-number>
## Problem Statement
## About the Change
## How to Test and Verify
## Author checklist
- [ ] Is the code well tested?
- [ ] Are typespecs explicit, or are the new types too generic?
- [ ] Have you considered the performance characteristics of the new code?
- [ ] Did you document any new decisions?
- [ ] Are there changes to ubiquitous language or naming that others should know about?
- [ ] Does this need a documentation or changelog update?
- [ ] Are there any follow-up issues worth opening before this is forgotten?
The exact questions matter less than the habit they encourage: a moment of self-review before a PR becomes someone else's responsibility. Don't waste your peer's time. Respect them by giving them the context and tools they need to do a good review.
And it should not need saying, but keep the PRs as small as possible. Learn to break down your changes.
Note: The Lobsters discussion page (https://lobste.rs/s/yu7k51/place_for_everything_how_i_track_work) returned HTTP 404 at ingest time and could not be captured.