2 ms·
You seem to be dividing the world into two possibilities: 1. Don't plan ahead. Only implement what you need right at this moment. 2. Plan for everything that'
by eridius 11y ago
You seem to be dividing the world into two possibilities:
1. Don't plan ahead. Only implement what you need right at this moment.
2. Plan for everything that's even remotely imaginable.
#2 is quite ridiculous. But the alternative to that is not #1. There is a huge amount of middle ground here, for assessing likely future needs and designing your architecture appropriately, as well as for identifying what future requirements affect architecture and which ones can be safely ignored as something that can be easily implemented on top of the current architecture.
The problem with #1 is this either leads to re-implementing large portions of your app (possibly many times if you persist with this) as you discover your architecture doesn't work; or, more likely, adding hack on top of hack to implement new functionality without having to rearchitect, which leads to massive technical debt and results in an un-maintainable product.
- lowbloodsugar 11y ago3. Do plan ahead. Only implement what you need right at this moment.
- vog 11y agoI believe the YAGNI version of this is: 3. Do plan for replacing any part of the code, but don't try to guess upfront which one it will be.
- unclebucknasty 11y agoBut, what are you defining as "architecture" here? Having a design that requires you to completely re-implement your app whenever changes are required (even significant ones), seems more a problem of not following proven design principles than one of poor "architecture".