Works great on small projects, does not scale to very large projects. There is a non-zero amount of communication, scheduling and cross-team coordination that needs to happen. If you want developers to do it, that is fine, it just means less development time. If you have never met a good PM it is easy (but intellectually lazy) to write off the discipline. Once you have worked with a good PM you realize by off-loading that drudgery (well, drudgery from a dev perspective) everyone wins.