I look for a tool or a "best practice" whose focus is on managing how the current staff of programmers can get assigned and re-assigned to different projects depending on changing priorities. Progress on projects should be tracked, too. Our department is not faced with a single, overly complex project (for which I'd know several good tools to manage it), but with a seemingly ever increasing stack of new project requests of small to moderate size. Most projects can be completed by a single programmer within 1 to 4 weeks, and only some rare beasts might take several months. It does happen that work on a project is interrupted because a more important job pops up. Usually a programmer is working on several projects at once (at example, one short-term, one medium-term, and one long-term project, or helping out at someone else's project because of his special knowledge). Most projects are done by a single programmer of the pool. I speak of a team of less than 10 programmers.
Since most project requests are unrelated to each other, the order in which they are done is mostly decided arbitrarily or by how loud the request is shouted. The requests come from different in-house departments and are dictated by internal demand and not with a pareto optimum in mind. Needless to say this leads to constant discussions about why a certain project needs to be done first.
I know that there is a management problem behind it, but my question is not about how to change the way the company works, but about a tool whichs helps to improve coordination and communication "in the meantime".
What I am looking for is a tool that can visualize the current assignments, give projections about how long a programmers is already booked up by projects, reflects how changing an assignment change the timeplan of projects etc. Its purpose is less about self-coordination of the team, but more to provide a high-level view that can be communicated to and is easily understandable by other departments. It should provide a solid foundation for discussing priorities and for deciding the order of projects. The ability to track time boundaries (like "must be finished Oct 1st latest") and cost factors would be a bonus.
Can a ticketing system fit the bill or is Microsoft Project the answer? Has anyone got any experience with such a situation and can suggest a good solution?