So over the last two weeks, I have been involved in implementing and deploying an application for a bank in Nigeria, though they were many requirements change during development, which would have derailed the launch date, but here coming to the rescue, the `open and close` principle. I have learnt a lot about designing your system for critical data points, writing your code in such a way that if the client wants proof that a certain requirement really happened, your code should be able to generate those data easily. Also when dealing with legacy institutions, do not fall in love with your code, make your code extensible, as they would keep changing requirements till they are satisfied. This way, you don't get to keep starting the project from the scratch. Cheers to more wins.