Resource allocation in projects?
This is not entirely related to Scrum but I am desperate to ask for advice so here goes :)
This is a scenario where there is a team of 50 developers. They hold different technology knowledge and skill sets.
We work on various prototype projects (create new products) with various technologies.
These developers are assigned to these projects based on their technology knowledge. Sometimes 1 developer works on 2-3 projects at the same time (difficult! but I am not getting to this point here). Since these are prototype projects, the product backlog changes frequently which makes it hard to foresee the workload of developers in a certain period of time, not to mention the fact some of them work on 2-3 projects parallely.
Questions: what is a good way that one ultilizes the resources and foresees developers's availability to carry on new projects?
Have a list of projects that need to be done. Let the developers self organize on the work that needs to be done. Stop trying to manage resources and let people pull the work to themselves when they have time and availability. Look at how Kanban could be useful to you. You can track metrics like cycle time and throughput to help with forecasting how long individual items may take. This book by Daniel S. Vacanti would be a good place for your organization to start.
Stop thinking of people as resources. Computers are resources, keyboards are resources, cloud storage is a resource. But people have the ability to think, to make decisions, to be accountable for their own actions. Let them use those abilities. Stop assigning work to them, and let them pick the work that is best suited to them at the time that they have availability to do work.
This is a scenario where there is a team of 50 developers
I don't think you have a team of 50 developers. What you have is a small village and the ability of those people to demonstrate teamwork is going to be rather compromised. They each have too many networking connections to collaborate effectively. The recommended Scrum Team size is about 10 people for this reason.
When you have people who cannot self-manage, for whatever reason, you are likely to end up with a manager telling them what to do. The manager "assigns" them work and sees them as "resources", they see themselves as being in silos, and the creativity you'd hope to leverage from teamwork is lost.
I'd suggest that the key to your solution lies right there. Encourage these people to self-organize into genuine teams, each of which can complete a meaningful piece of work under its own steam, and from which appropriate representatives might then collaborate to resolve any integration dependencies.