What counts as visible progress? In my experience, simply piling up code for every new feature leads to giant monolithic messes with little structure and organization. Since each feature always seems small and easy to do, it becomes tempting to just hack it into what you have without thinking about properly designing it.
Buildings are constructed foundation first, followed by the scaffold. Trying to construct a building room-by-room would be a disaster.
Turns out software isn't like buildings. Buildings can't be refactored during construction, nor do their requirements change halfway through.
Developing software incrementally requires diligence in refactoring to keep the code clean, but development goes faster despite the "extra" refactoring time and the end product is better for it.
Buildings are constructed foundation first, followed by the scaffold. Trying to construct a building room-by-room would be a disaster.