This time I'm going to talk a little about focusing on what's important.
The core department supports many people in production. Our tools make it easy to report bugs or to make suggestions, and we actively encourage people do that. We have an open plan office. The core team positions their desks to face out in order to make it easier for people to interact. We want to be as approachable as possible. We actively encourage bug reporting, suggestion creation, knowledge sharing and discussion through email.
So we have a lot of things coming in - it's important to triage them effectively.
In general, the production team comes first. We prioritize based on how the issue affects them:
The first three are pretty easy to handle. How impactful is the issue ? Is there a (reasonable) work around ? How involved is the fix ?
The fourth one takes more thought.
The most recent issue often seems like it's the most important - there's a pretty good chance it isn't, it's just the one you're currently thinking about.
People reporting issues also prioritize them differently. Some people play down the impact of an issue - they may have a terrible workaround, but they don't want to make a fuss. Some people always feel that the issues affecting them are urgent.
We triage by talking to the person reporting the issue - the priority they assigned is often not really representative. We also triage by talking to project managers - they have a good high level view of the issues affecting all of production.
There's also tasks we as a team want to work on independently of production issues. For example, tidying up an unwieldy system that costs us support and maintenance time. If we don't actively prioritize these tasks, we'll never find time to work on them. So we also triage within the team and prioritize them against production priorities.
That wraps it up for now, it's ultimately a balance between production and team priorities, and a lot of triaging.
-- Jonathan Garrettt (Lead Engine Programmer)