A word from an infrastructure manager, who happens to be the technical architect for his firm. I spend a significant amount of time rolling back (declining to deploy) submitted code and database changes. Our developers (mostly young) are not supervised closely enough in their design phase, which leads to lots of "It's the only way I can get it to work" defenses. Forcing people to use shared databases without table creation privileges, for example, means that there won't be the type of architectural divergence that results eventually in piles of manure that are impossible to perform impact analyses on. While I have seen some wonderful velocity with a Scrum approach, I have recently seen some laissez-faire management that produces code that lacks quality simply to meet dates. Senior developers have the smarts to understand the importance of adhering to architectural guidelines (and how careful one must be about exceptions); younger cats need to be herded. With this in mind, I will not give full autonomy to the development staff; their problem-solving is too short-sighted.