Take TakeT Bullet
The demand for software is always changing. Customers may wish this yesterday, and tomorrow, they have to do this hard to start coding. Previously a very popular approach is to predict that it may generate changes in demand, leaving a hook, which makes it easy to respond, without going overthrowing the original design.
However, unfortunately, this prediction of programmers is often wrong, and this change may never happen. However, this hook in order to prevent changes has been left in the code, you have to bear the responsibility of maintenance. Maintaining a useless thing is really not a good experience, and you can't easily remove the HOOK, because it might crashing the code that is working properly. In fact, this time, your code has emitted a bad odor with Needless Complexity (useless complexity).
So how should we avoid this, and can we deal with changes? A slogan of agile methods is: hug changes. So let's take a look at what to do.
Agility method promotes it when the customer puts forward a demand, and does not predict the possible extensions at all. why? The answer is obvious: the direction that changes may occur at this time is thousands, you can't accurately predict, where you will need to expand. So what should we do when the change occurs? At this time, we must change the original design and ensure that the next time, the next time, the new design can be easily expanded. This is the Robert Martin, "We take the first bullets" We take the first bullets, And the We makest Bullets CONOMING ARE GUN. "
However, some people may have a problem, this method does not solve the problem, why do we have to put in advance hook? It is because the cost of changing the design will be very expensive in the future.
Yes, this phenomenon is the fact, however in agile development, we use other methods to ensure that this change will happen as early as possible. That is to use iterative development, constantly released a small version, so that users have to see the software as soon as possible, and provide feedback. This will not be saved when it is indispensable, users discover that a function is not what they imagine.