How to fail in a Drupal project: Fixed price contracts
I hear it way too often: "Yes, we would like to do agile. Can we do a contract with fixed price? We also want fixed schedule and scope." - This leads me into explaining why that's not going to work and why it's missing the primary point of agile. One of the central ideas of agile is focusing on creating value instead of just checking boxes in a fifty page requirements definition.
Why do fixed price projects fail?
- Quality is typically worse. Even the best designer can't produce as good results with mockups as she could with multiple iterations with real live prototype and user feedback.
- Time to market is slower. Instead of spending all that time in design phase you could have already produced the first minimum viable product with the most valuable features in it. Detailed design can also slow down implementation by drawing attention on preparing for implementing low value features that should not be implemented at all.
- Value generated by the project is likely to be lower. Estimating effort required for each feature is very difficult with only a design, sites can be too complicated to document. If you capture all details and interactions you've actually already built the site once. Inaccurate estimates or no estimates at all lead into designing features that are more expensive to implement than their real business value.
- Instead of using lessons learned during the project the team focuses on implementing stuff that has already been designed. In the worst case creator of the original design is hired to check that the end results match the original design instead of working as part of the team to start with.
- The more accurate the document or pilot is, more it draws attention to details early in the project when the focus should be on the big picture. It's always easier to focus details like user interface, fonts and layout than the ultimate business goals.
- (Bonus) Responsive and mobile first design makes design first approach even more problematic. The amount of required design work is multiplied when dealing with large number of different screen sizes, contexts and use cases.