Gandalf Hudlow
The value-destroying effect of arbitrary date pressure on code
An Article by Gandalf HudlowThe mandate from above is clear, just get it done! Avoid everything that's in the way: all advice, all expertise, all discovery efforts that detract from hitting the Date™!
What these organizations don't realize is that all software change can be modeled as three components: Value, Filler and Chaos. Chaos destroys Value and Filler is just functionality that nobody wants. When date pressure is applied to software projects, the work needed to remove Chaos is subtly placed on the chopping block. Work like error handling, clear logging, chaos & load testing and other quality work is quietly deferred in favor of hitting the Date™.
Software that nobody wants
An Article by Gandalf HudlowFinding value is the result of enabling individual and group-level discovery attempts. It's not the result of everyone following one leader's gut.
What just happened is a new software product/feature was created that no customer wanted. This happens way too often. In fact, most hyper important software projects that must be done by date certain or else, have deep flaws that cause some variation of this phenomenon, flaws that include:
- Not wanted - Company specified a solution to a problem that customers don't actually have
- No Rarity - Company is pursuing an iKnockoff of existing products. The market already has two scaled competitors with working solutions, customers naturally spend budget on products that are already successful to avoid risk
- Incorrect Packaging - Customers need a website, but the company created an iOS app instead
- Incorrect Pricing - Customers need SaaS pricing, but the company created a shrink wrapped, on-premise solution with CapEx and maintenance agreements instead
Manifesto for Agile Software Development
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
Deliver early and continuously
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Welcome changing requirements
Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
Self-organizing teams
The best architectures, requirements, and designs emerge from self-organizing teams.
Technical excellence and good design
Continuous attention to technical excellence and good design enhances agility.
Agility and sustainability
Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
The amount of work not done
Simplicity—the art of maximizing the amount of work not done—is essential.
The primary measure of progress
Working software is the primary measure of progress.
Build projects around motivated individuals
Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
Deliver working software frequently
Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
Business people and developers
Business people and developers must work together daily throughout the project.
Face-to-face conversations
The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
Reflect, tune, adjust
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.