I work for a software development company where the development work has been off shored to us. The on shore team handle the support and talk directly to the clients. We never talk to the clients directly we just talk people from the on shore team, who talk directly to the clients.
When requirements come, the on shore team talk to the clients and make requirement documents and inform us. We make design documents after studying the requirements (we follow the traditional waterfall model).
But there is one problem in the whole process: nobody in the either off-shore or on-shore team understand the functionality of the application completely. We just know its a big complex web app handling complex order processing, catalog management, campaign management and other activities. We struggle with the design document as the requirements would not be clear. It then goes into a series of questions/answers back and forth between the on shore team, off shore team and clients. We would often be told to understand functionality from the code. But that's usually not feasible as the code base is huge and even understanding a simple menu item take days if not weeks. We tried telling the clients to give us knowledge transfer about the application but to no avail. Our manager would often tell us to start coding even if the design document is not complete or requirements are not clear. We would start by coding the part of the requirements that seems clear and wait for the rest.
This usually would delay the deployment by a month. In extreme cases we would have very low errors in the development and production but the clients would say that's not what they asked. That would start a blame game and a series of change requests and we would end up developing something very different.
My question is how would you do development work if you don't know the functionality of the app fully?
The development methodology it isn't really my choice and I am not my team's lead. It is the way it began. I tried to tell people about the advantages of agile but to no avail. Besides I don't think my team has the necessary mindset to work in an agile environment.