Bosses assigned higher level projects or goals, but to a larger extent developers were expected to have some domain and product knowledge, and to figure out and have opinions on the individual tasks for improving the product for themselves.
Now, the "product manager", "product owner" and "scrum master" roles have been created, so that developers are more like interchangeable / replaceable cogs in the machine.
This all works well for quickly adding new buttons to existing apps, but its pretty useless for innovating new products or architectures, especially since inevitably no one person ends up with a good understanding over the overall product or architecture.