The discussion centers around the failure modes of large, complex software projects, especially within government or large enterprises. Here are the three most prevalent themes:
1. Extreme Complexity and Historical Baggage of Requirements
The difficulty of large systems is often rooted in highly specific, stubborn, and politically entrenched requirements, making simplification nearly impossible.
- Supporting Quote: One user highlighted the core issue of the Phoenix project's complexity: "80K payroll rules!!!" This was further explained by another: "The main objective of this committee also includes simplifying the pay rules for public servants, in order to reduce the complexity of the development of Phoenix's replacement. This complexity of the current pay rules is a result of 'negotiated rules for pay and benefits over 60 years that are specific to each of over 80 occupational groups in the public service.'"
2. Lack of Accountability and Misalignment of Incentives in Management
A strong theme is the observation that decision-makers (management/executives) often avoid responsibility for project failures, while the technical implementers bear the brunt of the consequences.
- Supporting Quote: A user noted this dynamic in project retrospectives: "After every single project, the org comes together to do a retrospective and ask 'What can devs do differently next time to keep this from happening again'. People leading the project take no action items, management doesn't hold themselves accountable at all..." Another user summarized the fundamental motivation: "People who desire infinite power only want it because it gives them the power to avoid consequences, not because they want both the power and the consequences."
3. Software Engineering Lacks Mature, Consistent Lessons Learned/Standards
Several participants lamented that software development, unlike older engineering fields (like hardware or construction), frequently reinvents the wheel, failing to codify and adhere to historical lessons, leading to repeated failures.
- Supporting Quote: "While hardware folks study and learn from the successes and failures of past hardware, software folks do not. People do not regularly pull apart old systems for learning." This tendency is seen as leading to systemic issues: "Constantly rewriting the same stuff in endless cycles of new frameworks and languages gives an artificial sense of productivity and justifies its own existence."