There’s no doubt that Agile has been beneficial to the development of software and industries beyond, but one thing I have noticed is that people who get deep into it can have a tendency to oversimplify both the problem and the solution to which they are looking to apply Agile. Just look at how complex many software systems are these days. Many have millions if not billions of lines of code all strung together and these software applications interact with multiple other complex software applications often in real-time. To facilitate this requires large, interconnected hardware infrastructure and storage of data that also requires you keep track of security, governance and compliance with rules, regulations and policies both private and public.
Can such complexity really be reduced down to simple user stories or prioritized backlog list then implemented in short iterative burst sessions? Only once you have thought through and developed a solid object oriented design that incorporates things like patterns, re-useable software, and modular components… this requires you go through a process of structured and system oriented thinking that guess what, means you do some upfront design and requirements gathering! Only then can you come up with well planned and defined iterations that will result in working software and software that you know will be modular and maintainable, rather than something that just “works”.
Do you think many who do Agile have a tendency to oversimplify? Agree or not?