Unfortunately, a lot of unforeseen problems show up during the implementation phase, and people blame the waterfall model for not being flexible (agile) enough to address these.
Now, even more unfortunately, some people interpret agile as not needing to spend time upfront thinking and dive into the implementation straight away, creating an even bigger mess than the waterfall generation could have ever imagined.
my experience is that people spend half the time bikeshedding the obvious problems that waterfall would have identified in much less time, and then still hit the unforeseeable problems after implementation anyway. if they could have been foreseen, they would have been rolled into waterfall.
1. How did you define the scope of "what to build"? Did you have tickets, or some less formal specifications like wiki pages, or simply a verbal agreement? How did you ensure that everyone's on the same page?
2. How did you track the progress of "building a thing"? Did you have some kind of "statuses", or each work basically had only two states -- "not done" and "done"?
3. How did the engineers coordinate on their work? Or every "thing to build" was always done by one single engineer? If the latter, how was it later maintained - always by that same person or did others work on it as well?
Please note that I don't mean to demean your experience -- these are simply issues that pop up in software engineering, and decisions have to be made how to approach them. And not making a decision is also a decision.