Welcome to “Learning by Shipping”:
As engineers we are trained to find the right solution(s) given a set of constraints. Product development is about the inherent uncertainty of business and customer needs and desires, and those change depending on the context. There are no right answers, only varying success in the marketplace at a given time. The pendulum of ideas swings back and forth depending on the context–the availability of underlying technologies, the acceptance of different business models, or the solutions most valued by potential customers. The same holds for approaches used by organizations building products–the right answer depends on the context and can change over time. These choices and the pros and cons of different approaches are interesting topics that occupy many of us as we search for the right path for our development efforts.
[A really clear explanation.]
Source: Learning by Shipping