There were several cultures of developing software projects. Each of them generate not only its own methods of project management but also its own ways of maintaining requirements and designing software. Programming paradigms changed: OOP came to replace the procedural approach, DDD appeared, and later the focus shifted to interfaces, usability and UX.
The architecture of the application also changed: first, they switched from client-server to three-tier, then the desktop client was replaced by the web with the concepts of MVC, MVVM and many others, then mobile applications appeared, reactive programming approaches appear, the application consists of many services, and the user switches between devices. All this required new approaches to design, new books appeared on the implementation of new concepts, while the old ones remained relevant.
The talk will be devoted to the logic of the development of methods and actual modern design problems that has no books and courses yet.