Thanks for the writeup! I fully agree that there are some huge misconceptions around Waterfall vs. Agile. However (as with most things), the problem is not in the concept of Agile itself but in how it’s being implemented by the various companies and teams (the same can also be said of Waterfall).
I actually strongly believe that Waterfall and Agile can go perfectly hand in hand:
Waterfall can be used to determine the WHAT (what’s the target picture, what are the dependencies, how does the fundament need to look like, what edge cases do we need to think about from the start, etc.), Agile can be used to determine the HOW (slice the target in deliverable junks, do not work against 100% fixed deadlines as there is a huge amount of unpredictability inside the development process, etc.).
In the perfect scenario, you arrive at a “bottom up + top down” approach and meet in the middle while enjoying the best of both worlds .
In the worst case, you try to build a project where you only have a marginal understanding of the target picture (but fixed deadlines) with an agile approach, which translates to: “We don’t know where we are going but try to get there faster by being agile” (e.g. spaghetti code).