Lack of design in software nowadays was cited as a problem in the post. I agree, and I think there's a lot of not-classically educated hands out there that wouldn't know a good design document from bad. Nor would they have any practical knowledge of a combination of: how to structure code in large code bases, test their code, converse about/apply software patterns, document their API's for public consumption, RAII, SOLID, TDD, etc. So, I think there's little hope for improvement in software quality/design/success metrics/etc.<p>Big up-front design only satisfies document weight tests and typically does not stay up to date with the software. So, just simply saying "we need more design" is not going to get us anywhere but hell.<p>Self-documenting code is a nice idea, but scales only so much in a large codebase. UML is a bear to produce and maintain, and I only really like it in whiteboard discussions, not actually drawn in a tool.<p>Wikis devolve into a mess of disconnected ideas.<p>Successful teams I've been on tend to rally and organize designs around the already generated documentation (like JSDoc or JavaDoc), but those docs often only focus on the user-facing API's and leave the internals as a partially documented wasteland.<p>A few teams I've been on had a scribe, which was sweet, but not usually.<p>What patterns of design and documentation actually work well for you in real-world, large project/team scenarios?<p>Regarding needing an aged "adult in the room" to guide the fledgling developers to glory, as I think the OP suggests is an answer to the problems ... Well, in my many experiences where imparting wisdom from on-high was the goal, that has been a miserable failure. It was all because said "senior architect" or whatever the title was invariably only cared about blessing random big decisions randomly/destructively and had otherwise checked out to walk his dog after lunch and otherwise coast during his pre-retirement. All I can say is, God bless 'em.<p>I do NOT count on age as a factor, only that a developer has reached a certain point of experience in their career. What I DO count on is one person who can enforce a clear vision with passion. Who holds the torch for your team? Is their grip shaky or firm? Where are we headed? Are we headed there with conviction? Does the end goal still seem plausible to all hands after every step we take? If you have proven you've got the chops and can back up all your assertions with creditable past successes and/or literature, you can rule your team and demand excellence - YOUR excellence! Pick a darn direction and let's go! I have total respect for that someone that has a coherent vision AND can communicate it.<p>Agile methodologies sound plausible to address design and software productivity issues, but I have yet to see exceptional results from an agile project vs waterfall. This is probably just because software is a hard thing to do well in any case, and is subject to political winds, funding, ineffective product owner, etc.