Currently I'm part of a development team which create software and web applications; And I get assigned to tasks *randomly* (kind of); most of the time I'm the only one working on a certain project, as other co-workers have another project assigned to them individually.

I feel that it is extremely difficult to keep to deadlines when at the same time you have to solve issues you come across, which you can't always predict a time frame for, and so most of my tasks that keep getting assigned to me start stacking on top of each other, and some being more important than others I have to sack most of the tasks given to me earlier on to complete the more urgent ones that came in late.

What is the best way to complete projects efficiently? Should projects be assigned to more than one individual, resulting in more projects overall to have no one actively working on them? Is it something I might be doing wrong? Should tasks by assigned by asking the development team who's up for it/who will be capable enough? Or who has less tasks?

How do you think employees in my position should be assigned in order to complete a project successfully with least amount of truble?