You can’t commit someone else to do something then expect committed behavior from them
In traditional project management, we have a pool of resources, and the work gets divided up across different resource types. So if you have development work, you divide it up among the developer resources, and if you have testing work, you divide it up among the testing resources, assigning work to resources in such a way that the schedule fills out as needed.
This works very well for assembly line manufacturing and for construction
It does not work well for software. Why not? Because software is not assembly, and its not construction. Its just as much art as it is science, and there is just as much intuition and creativity as discipline and logic. A product coming into being is the result of a thousand little sparks of genius, and while those sparks can’t easily be predicted, we can create an environment that makes them more likely to happen.
An Environment to Encourage a Thousand Sparks of Genius
One of the best ways to encourage an innovative environment is to give people autonomy. Imagine if an Albert Einstein was told “You shall work on prime number theory” instead of him being able to work on what he wanted to work on. He never would have put the passion and effort into his work, and he never would have made the scientific breakthroughs he made. The investment is well worth the payoff.
If you want to encourage an innovative environment and get better work, stop assigning work to your developers. Enable them to self organize, trust them to do their best work, and allow them to make mistakes, learn, and grow.