… because it turns every project into a dumpster fire.
Continuously Moving Goalposts
Agile methodology is favored by upper management, because it allows them to use buzzword phrases like “flexible” and “resilient to change.” Unfortunately, what they really mean is “we have the ability to scope-creep at speeds that would make Barry Allen cringe.”
Typical “sprints” are one to two weeks in enterprise environments; this results in overall projects being broken down to levels that are increasingly granular and unrelated. As Project Managers need to confer frequently with stakeholders, this leads to features being added in with the phrase “hurry we need to add this quickly for [x] department/client.”
Utter Disregard for Software Engineering/QA Principles
Software engineering has traditionally encompassed an over-arching view of a project; with complete life cycle in mind and extensive technical expertise regarding what can and cannot be (or should and should not be) done within the project’s scope. Agile methodology and its accompanying demon, project management, disregard these approaches by shrinking the development life cycle and incentivizing quantity of code creation, at the expense of quality. By prioritizing speed of generation at the expense of quality, the need for software QA experts increases dramatically.
Employee Expendability vs. Dependability
The “upstream” purpose of Agile / Project Management is, using management-friendly verbiage, “business continuity.” However, this is more accurately described as “sacrificing employee dependability in order to achieve expendability.” Employees repeatedly and continuously subjected to ever-changing goals ultimately end up sacrificing mental health and work-life balance in order to meet impossible deadlines, and the codebase suffers in many ways, not the least being performance, extensibility, and security.
In reality, this results in a long-term codebase that is nearly impossible to maintain, because the ever-shrinking deadlines create insurmountable sacrifices. In addition, it causes developer burnout, often destroying the employees’ ability to persist in the field, creating another vicious cycle of inexperienced developers being brought into projects for which they are not prepared.