Great article, but not quite sure about the final bit of advice. Even if you gradually build your software in layers you might be faced with exponential complexity. If you are releasing early, then you also have the "legacy data" issue along with users who are just getting used to the interface. Change will be always met with resistance.
A harder but definitely more powerful approach is to build more isolated pieces of functionality with well defined interfaces. A conscious effort to minimize the feature interdependence definitely pays off in the long run. A team of moles is harder than an uncoordinated mob!