Working with queue and stack people
marcesher.com
marcesher.com
Generally, I'm sorry, but chasing the quick-fix is immature, and a sign of a desire to please. That is completely normal, and it's healthy to let off steam through a quick fix now and then. But the "stack" model here sounds to me more like what happens in my head when I procrastinate...
IMO for a project to succeed someone will ultimately have to keep track of what is done. Do you want to be that person, or do you want someone else to do it while you get lost in your stack overflows?
http://bentilly.blogspot.com/2010/08/analysis-vs-algebra-pre...
The frustrating part about this is that it is very hard to explain to coworkers why you feel this, because you intuitively expect them to feel the same way. I can recall some cases in which this has caused some friction when working on group projects.
Queues are generally better for project work, Stacks are generally better for support.
Regarding the time taken to prioritise and log work, XKCD's nailed it again: http://xkcd.com/1445/
For instance, at my current job, I've been here for 2 years. I know the codebase pretty well. If an issue comes up, I can almost always get it resolved in a few hours or less. For this reason, I am currently a stack person.
On the other hand, when I first started this job, I didn't know the codebase very well, so it usually took me at least a week to complete a typical issue. Back in those days I was a queue person.
The first priority queue is very small and what will be done today/in the near future. The second priority queue is a list of everything else.
Stuff can get bumped from the first priority queue back to the second priority queue. Both queues are constantly being reshuffled (in my mind, not in JIRA).
I never really understood the agile/scrum thinking that seem to block parallel execution - or management implied could only be executed serially (as in this feature needs to get done at the detriment of this one).
System-level issues trump individual customer-level issues. Long-term fixes for customer-level issues trump individual fixes for customer-level issues (unless, of course, said customer has escalated). Paying off high-interest technical debt that has rolled over to several credit cards is a high priority, as well.
The reality is that when the house is fire, you need to put out the fire. Sometimes the perception is that there is a fire when there is not, though. And, if you see something that is a potential fire hazard/already smoldering, you need to aggressively put that out.
One of the ways my current team tries to mitigate this is with an on-call rotation and an explicit escalation process. When a new ticket comes in, the on-call decides whether it is something they can fix quickly and easily, or it would require too many resources for an immediate fix. The first kind of ticket is handled immediately, or is added to the on-call's (short) task list for that day; the second kind goes into our regular queue and gets prioritized alongside project work.
Meanwhile, everyone else on the team focuses on their current projects and handles issues according to the queue. Other team members are only called in to help immediately if the on-call judges the issue to be urgent but can't handle it themselves.
The Agile movement's aim can be said, is to reduce the feedback loop of software development, so favouring a stack approach (echo'ed in facebooks "move fast and break things" approach), but I have also seen situations where there is no strategic planning, and the team can churn for a year like a dog chasing its own tail. Methodologically working through your roadmap can again be seen echo'd in Steve Jobs approach of saying the client doesn't know what he wants, its your job to give it to him.
Fast turnaround tasks are best for the stack. Tasks which involve multiple parties & thus planning and coordinating are best for the queue.
Many organisations already deal with this in having first line and second line support; first line pick off the quick stuff and log the hard stuff; second line then work their way through the hard stuff/ First line will also put a task on hold if a new call comes in; their priority is to answer the phones/get things logged, with working on resolutions taking lower priority.
So first line support's a stack, second line's a queue.
As the blogger mentions though, generally things are mixed; whilst there will be a preference/default working style most people/teams will fall somewhere in between, usually adding some level of prioritisation.
Another point is that prioritisation is generally based solely on the importance of the task & detailed analysis of its implications for queue people, whilst stack people will tend to guess at both the importance and the implementation time to get a priority based on the weightings of both factors.
Am I a heapster ?
That seems to represent a queue as well. If we assume the last car in is at the end of the line, then, well, we have a queue, not a stack. A stack is hard to represent in real life everyday events. At least it is harder to represent than a queue.
The way I think of a stack is a singly linked list. A linked list where insertion time is O(1).
A queue would be a single-lane one-way street, like in a car wash.