OK, it’s really the “non principles” that are missing from Agile.
Product development is a process of continuously making trade offs. We want the principles stack ranked, and to include “non principles” for comparison.
Two of the twelve Agile principles are ranked:
- Satisfying the customer is “the highest priority” (so it’s rank #1)
- Simplicity is “essential” (but not the highest priority, so it’s rank #2)
We can combine this with the stack ranking from the successful “New Jersey” camp. New Jersey software “has better survival characteristics” than software from the alternative “MIT” camp.
Here’s the result.
1. Satisfy the customer
2. Simple implementation. Simple systems are easier to adapt, and adapting is the core of agile.
3. Simple UI. In other words, a good UX. Generally, a simple implementation is better than a simple UI.
4. Correctness (not an Agile principle). It is slightly better to be simple than correct.
5. Consistency (not an Agile principle). It is better to be simple than consistent.
6. Completeness (not an Agile principle). Completeness can be sacrificed in favour of any other quality. This sacrifice is the basis of the “thin slicing” technique discussed in the previous chapter.
Nothing is ever completeThe Hacker Way culture at Facebook
Real world example
RethinkDB is one example of a business that failed because they didn’t value simple implementations enough. The founder said, “correct, simple [UI], and consistent software takes a very long time to build. That put us three years behind the market… It hurt a lot”.
It’s nothing new
In 1770 Voltaire wrote, “Perfect is the enemy of good”.
Since then we’ve had variations such as The Nirvana Fallacy and the 80/20 rule. The 80/20 rule says that, “the hardest 20% of the implementation takes 80% of the time”.
Think of the next feature that you’re planning. What’s the most complicated 20% of it?
NEXT: What Agile feels like